/* ============================================================
   WeVote Kit — Base
   Document reset, typography bindings, focus rings, shadow
   utilities. Loaded after tokens.css, before components.css.
   Type roles: Poppins (display) · Open Sans (text) · Open Sans (labels, matches body)
   ============================================================ */

* { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
html, body { height: 100%; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Open Sans", system-ui, sans-serif;
  font-feature-settings: "cv05" 1, "ss01" 1;
}
.font-display { font-family: "Poppins", sans-serif; letter-spacing: -0.02em; }
.font-mono { font-family: "Open Sans", ui-monospace, monospace; }
.font-sans { font-family: "Open Sans", system-ui, sans-serif; }

/* shadow utilities — real CSS so they survive any Tailwind build
   (identical to the values the runtime config provides). */
.shadow-soft { box-shadow: var(--shadow-soft); }
.shadow-card { box-shadow: var(--shadow-card); }
.shadow-lift { box-shadow: var(--shadow-lift); }
.shadow-pop  { box-shadow: var(--shadow-pop); }

::selection { background: var(--accent-soft); color: var(--accent-ink); }

/* ---- focus visibility (WCAG AA) ---- */
:focus { outline: none; }
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 6px;
}
.focus-ring:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--paper), 0 0 0 4px var(--ring);
}

/* generic transition helper used across components */
.t { transition: background-color .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease, opacity .15s ease; }
