/* Theme layer: design tokens, resets and base typography.
   Harvested from the prototype's global selectors (:root, *, bare
   tags) -- the ones deliberately kept out of block styles so they
   live in the theme rather than being duplicated per block.
   Generated by transpile.py -- do not hand-edit. */

:root { --navy: #1a3545; --navy-deep: #12242f; --navy-mid: #22455c; --blue: #2772a4; --blue-hover: #205f8a; --sky: #45c1e6; --lime: #bdde54; --lime-deep: #a7c93c; --bg: #f6f9fa; --surface: #ffffff; --line: #dfe8ec; --line-strong: #84969f; --line-dark: rgba(255,255,255,.12); --body: #4c6270; --muted: #5f7682; --error: #c1544e; --pill-ok-text: #5c7413; --pill-out-text: #1a7698; --pill-fix-text: #2771a2; --shadow: 0 18px 40px -18px rgba(26,53,69,.18); --ease: cubic-bezier(.16,1,.3,1); --font-d: 'Montserrat',system-ui,sans-serif; --font-s: 'Petrona',Georgia,serif; --font-m: 'JetBrains Mono',ui-monospace,monospace; }
* { margin: 0px; padding: 0px; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: var(--font-d); background: var(--bg); color: var(--body); font-size: 16px; line-height: 1.65; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
h1, h2, h3, h4 { color: var(--navy); font-family: var(--font-d); line-height: 1.08; letter-spacing: -0.02em; }
h1 { font-weight: 800; font-size: clamp(2.35rem, 4.6vw, 3.9rem); }
h2 { font-weight: 800; font-size: clamp(1.85rem, 3.4vw, 2.75rem); }
h3 { font-weight: 700; font-size: 1.28rem; letter-spacing: -0.01em; }
p { max-width: 65ch; }
a { color: var(--blue); text-decoration: none; }
img { display: block; max-width: 100%; }
button { font-family: inherit; cursor: pointer; }
::selection { background: var(--lime); color: var(--navy); }
header { position: fixed; top: 0px; left: 0px; right: 0px; z-index: 60; background: rgba(26, 53, 69, 0.92); backdrop-filter: blur(12px); border-bottom: 1px solid rgba(255, 255, 255, 0.08); box-shadow: rgba(255, 255, 255, 0.06) 0px 1px 0px inset; }
main { padding-top: 74px; }
@media (max-width:(prefers-reduced-motion: reduce)px) { *, ::before, ::after { animation-duration: 0.001s !important; animation-iteration-count: 1 !important; transition-duration: 0.001s !important; } }
@keyframes breathe { 
  0% { transform: scale(0.5); opacity: 0.9; }
  70% { transform: scale(1.25); opacity: 0; }
  100% { opacity: 0; }
}
@keyframes float { 
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-9px); }
}
@keyframes marquee { 
  100% { transform: translateX(-50%); }
}
@keyframes grow { 
  0% { transform: scaleY(0); }
}
/* The universal reset above cannot outrank a theme's own
   element selectors; this restates it where it counts. */
p, h1, h2, h3, h4, h5, h6, ul, ol, dl, dd, blockquote, figure, fieldset, pre { margin: 0; padding: 0; }
