/* Minimal reset — preserve form + heading semantics, drop browser defaults that fight us */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html, body, h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure, blockquote, pre {
  margin: 0; padding: 0;
}
ul, ol { list-style: none; }
img, picture, video, canvas, svg { display: block; max-width: 100%; }
input, button, textarea, select { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; }

/* Skip link — hidden until focused */
.skip-link {
  position: absolute; top: -40px; left: 0;
  background: var(--surface-base); color: var(--text-base);
  padding: 8px 16px; z-index: 100;
  text-decoration: underline;
}
.skip-link:focus { top: 0; }

/* Global keyboard focus indicator (WCAG 2.4.7 + 1.4.11). Uses the theme's
   accent-primary so the ring is contrast-tuned to whichever palette is
   active — verified ≥3:1 on every --surface-base / --surface-section. */
:focus-visible {
  outline: 3px solid var(--accent-primary);
  outline-offset: 3px;
  border-radius: 3px;
}

/* Scoped override — focusable elements that sit on light card / soft
   surfaces (paper-bg cards, surface-soft sections) need a dark ring
   regardless of palette, otherwise dark-theme accents (brand-teal,
   periwinkle, gold) drop below 3:1 against the pale card colour. */
.winner-card :focus-visible,
.sponsor-card :focus-visible,
.form-frame :focus-visible,
.countdown-pill:focus-visible,
.past-winners :focus-visible,
.sponsors-panel .sponsor-card :focus-visible {
  outline-color: var(--ink-blue-deep);
}

.skip-link:focus-visible { outline-offset: 0; }
