/* 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 { --surface: #f8f5ea; --surface-raised: #ffffff; --surface-dark: #193046; --surface-deep: #102638; --surface-accent-soft: #c2e7d7; --surface-accent-mid: #5b9695; --surface-accent-strong: #4a8c9b; --surface-accent-earth: #4d6e60; --surface-highlight: #ebe37f; --text: #193046; --text-on-dark: #ffffff; --text-muted: #536b70; --text-soft: #d8e9e0; --text-accent: #193046; --border: rgb(25 48 70 / 0.12); --border-strong: #193046; --border-on-dark: rgb(255 255 255 / 0.16); --shadow-soft: rgb(25 48 70 / 0.10); --shadow-deep: rgb(25 48 70 / 0.25); --grain: rgb(25 48 70 / 0.14); --font-display: "Geist", sans-serif; --font-body: "Geist", sans-serif; --font-weight-regular: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-heavy: 800; --size-body: 1rem; --size-small: 0.78rem; --size-micro: 0.74rem; --size-nav: 0.92rem; --size-body-lg: 1.18rem; --size-price: 1.12rem; --size-hero: clamp(3.8rem, 6.9vw, 7.6rem); --size-section: clamp(3.2rem, 6vw, 7rem); --size-card: clamp(2.5rem, 4vw, 4.4rem); --size-plan: clamp(2.4rem, 4vw, 4.5rem); --size-statement: clamp(2.8rem, 5.8vw, 6.5rem); --line-tight: 0.9; --line-title: 0.94; --line-body: 1.65; --tracking-tight: -0.06em; --tracking-card: -0.05em; --tracking-wide: 0.18em; --content-max: 90rem; --hero-copy-max: 64rem; --body-copy-max: 38rem; --section-copy-max: 31.25rem; --section-space: 10rem; --section-space-large: 12rem; --section-space-mobile: 7.5rem; --gutter: 3rem; --gutter-tablet: 1.75rem; --gutter-mobile: 1.25rem; --gap-xs: 0.5rem; --gap-sm: 0.75rem; --gap-md: 1.5rem; --gap-lg: 2.5rem; --gap-xl: 5rem; --gap-hero: 6vw; --gap-presale: 8vw; --radius-pill: 999px; --radius-sm: 0.5rem; --radius-md: 1.5rem; --radius-lg: 2.5rem; --radius-plan: 1.875rem; --border-thin: 1px; --border-medium: 2px; --border-bold: 3px; --nav-height: 5.75rem; --utility-height: 2.375rem; --hero-min: 51rem; --hero-art-min: 38.75rem; --hero-art-min-tablet: 32.5rem; --hero-art-min-mobile: 26.875rem; --card-min: 17rem; --plan-min: 28rem; --build-min: 92vh; --focus-offset: 0.25rem; --focus-width: 0.1875rem; --transition-fast: 250ms; --transition-card: 350ms; --transition-image: 700ms; --ease-standard: cubic-bezier(0.4, 0, 0.2, 1); --hero-poster-shadow-x: 1.125rem; --hero-poster-shadow-y: 1.125rem; --hero-poster-shadow-mobile: 0.625rem; --card-shadow-x: 0.75rem; --card-shadow-y: 0.875rem; --clip-top: 5%; --clip-bottom: 95%; --hold-opacity: 0.14; --accent-shape-opacity: 0.95; --statement-word-rest: 1; --image-rest-opacity: 1; --marquee-duration: 20s; --marquee-shift: -50%; --z-nav: 50; --z-grain: 1000; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0px; max-width: 100%; overflow-x: hidden; font-family: var(--font-body); font-size: var(--size-body); font-weight: var(--font-weight-regular); color: var(--text); background: radial-gradient(circle at 84% 7%, color-mix(in srgb, var(--surface-accent-soft) 55%, transparent), transparent 28%),
        radial-gradient(circle at 16% 34%, color-mix(in srgb, var(--surface-highlight) 38%, transparent), transparent 24%),
        var(--surface); }
body::before { content: ""; position: fixed; inset: 0px; pointer-events: none; opacity: var(--hold-opacity); background-image: radial-gradient(circle at 20% 20%, var(--grain) 0 var(--border-thin), transparent var(--border-thin)),
        radial-gradient(circle at 80% 70%, var(--grain) 0 var(--border-thin), transparent var(--border-thin)); background-size: 1.375rem 1.375rem, 1.9375rem 1.9375rem; z-index: var(--z-grain); mix-blend-mode: multiply; }
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
@keyframes marquee { 
  100% { transform: translateX(var(--marquee-shift)); }
}
