/* ============================================================
   RESET — element-level normalization only.
   No component styling, no typography scale (see typography.css).
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

/* Belt-and-suspenders against horizontal scroll — this is a backstop,
   not a fix: any element that actually pushes past the viewport width
   is a real layout bug to find and fix, not something to paper over
   with overflow-x: hidden (which also swallows the scrollbar silently
   instead of surfacing the problem). clip is the honest version of
   that same backstop. */
html, body { width: 100%; max-width: 100%; overflow-x: clip; }

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  transition: background .4s ease, color .4s ease;
}

p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
img, svg, canvas, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; }

:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: 6px;
}
