*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 12px); -webkit-text-size-adjust: 100%; }
body {
  margin: 0; font-family: var(--font); font-size: var(--fs-md); line-height: 1.6;
  color: var(--text); background: var(--bg);
  transition: background-color .25s var(--ease), color .25s var(--ease);
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; display: block; }
h1, h2, h3, h4 { margin: 0; line-height: 1.1; letter-spacing: -.02em; font-weight: 800; }
p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }
:focus-visible { outline: 3px solid var(--red); outline-offset: 3px; border-radius: 4px; }

.container { width: min(100% - 2.5rem, var(--container)); margin-inline: auto; }
.section { padding-block: clamp(4rem, 8vw, 7rem); }
.section--alt { background: var(--bg-alt); }
.section-head { max-width: 720px; margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.section-head h2 { font-size: var(--fs-h2); margin-top: .8rem; }
.section-head p { margin-top: 1rem; color: var(--text-muted); font-size: var(--fs-lg); }
.section-head.center { margin-inline: auto; text-align: center; }

.eyebrow {
  display: inline-flex; align-items: center; gap: .7rem; font-family: var(--mono); font-size: var(--fs-xs); font-weight: 500;
  letter-spacing: .16em; text-transform: uppercase; color: var(--red);
}
.eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--red); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; left: 1rem; top: -4rem; background: var(--red); color: #fff; padding: .6rem 1rem; border-radius: var(--r-sm); z-index: 200; }
.skip-link:focus { top: 1rem; }

/* Theme-aware logos */
[data-theme="light"] .logo-on-dark, [data-theme="dark"] .logo-on-light { display: none; }

/* Reveal on scroll */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: var(--d, 0s); }
.reveal.in { opacity: 1; transform: none; }
.reveal-left { transform: translateX(-32px); }
.reveal-left.in { transform: none; }

/* Scroll progress */
.progress-top { position: fixed; top: 0; left: 0; height: 3px; width: 100%; background: var(--red); transform-origin: left; transform: scaleX(0); z-index: 300; }

@keyframes rise { to { transform: none; } }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(230,0,40,.55); } 100% { box-shadow: 0 0 0 12px rgba(230,0,40,0); } }
@keyframes bob { 0%, 100% { translate: 0 0; } 50% { translate: 0 -10px; } }@keyframes flow { to { stroke-dashoffset: -20; } }
@keyframes slidein { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: none; } }
@keyframes marquee { to { transform: translateX(-50%); } }
@keyframes spin { to { rotate: 360deg; } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .reveal, .reveal-left { opacity: 1; transform: none; }
  .line > span { transform: none !important; }
  .ds-chips span { opacity: 1 !important; transform: none !important; }
  .hero-chart .ln { stroke-dashoffset: 0 !important; }
  .hero-chart .ar { opacity: 1 !important; }
}
