/* Vision — global reset + canvas. Layers on top of tokens/*.css. */

*, *::before, *::after {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
}

body {
  font-family: var(--vds-font-sans);
  font-size: 14px;
  color: var(--vds-text-primary);
  background: var(--vds-surface);
  -webkit-font-smoothing: antialiased;
}

button, input {
  font-family: inherit;
}

a {
  color: var(--vds-accent);
}

/* Global keyboard-focus indicator (audit-findings.md #479/#482/#487/#492/
   #500) — none of the app's ~35 button, ~26 dropdown/menu, 40+ pill/tag,
   ~15 toggle, or ~10 modal implementations defined their own focus ring, so
   a keyboard-only user had no visible focus anywhere in the app (WCAG
   2.4.7). Uses :focus-visible so mouse/touch clicks don't gain an unwanted
   ring — only real keyboard navigation does. Fully closes #479/#487/#492/
   #500 (see #479's own note for the follow-up overflow:hidden sweep that
   closed its residual gap via scoped inset-box-shadow overrides); #482
   stays Partially Fixed (its ARIA-role/keyboard-nav thirds need real JS,
   not just CSS). This also does not override any element that already sets
   its own `outline: none` unconditionally (e.g. #356/#360's Library modal
   inputs, already fixed separately by removing those declarations). */
:focus-visible {
  outline: 2px solid var(--vds-accent);
  outline-offset: 2px;
}
