/* Atlas — CSP-1 frontend base styles.
   Body rules + CSS custom properties + the 4 keyframes are copied VERBATIM from the
   design source (Atlas.dc.html helmet block, src lines 14-19). Everything else is
   inline on the elements (design idiom) — this file stays minimal on purpose. */
body{margin:0;background:#E9E5DD;--paper:#FBF9F5;--panel:#FFFFFF;--ink:#1A232C;--line:rgba(26,35,44,.22);--money:#1E7F4F;--adv:#6C4EC9;--risk:#C2402A;--time:#1E6FA8}
@keyframes chipIn{from{opacity:0;transform:translateY(.4em)}to{opacity:1;transform:none}}
@keyframes sealOut{to{opacity:0;transform:translateY(-.6em) scale(.92)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(.5em)}to{opacity:1;transform:none}}
@keyframes sugPulse{0%,100%{box-shadow:0 0 0 0 rgba(30,111,168,.35)}50%{box-shadow:0 0 0 .3em rgba(30,111,168,0)}}
#atlas-root{width:100%;min-height:100vh}

/* ── launch-film design layer (CONTRACT §13 / VISION-PARITY §2) ──────────────
   Fonts subset from the film bundle (Bricolage Grotesque OFL · Geist Mono OFL).
   Variable-weight faces: one file serves 400-800 (display) / 400-600 (mono).
   Custom props mirror window.Atlas.T verbatim — panels consume tokens, never
   fresh hex literals. The pre-existing props above stay for the legacy panels. */
@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/bricolage-grotesque-latin.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/bricolage-grotesque-latin-ext.woff2") format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url("fonts/geist-mono-latin.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url("fonts/geist-mono-latin-ext.woff2") format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
--film-paper:#FBFAF6;--film-paper-warm:#FCFBF7;--film-paper-tint:#F8F5EE;--film-paper-deep:#F1ECE2;
--film-ink:#2A2521;--film-ink-soft:#46403B;--film-faint:#83786E;--film-hair:#DDD6CD;--film-hair-soft:#E9E3D9;
--film-accent:#C46A3F;--film-accent-hover:#A8572F;--film-accent-light:#E0A17C;
--film-ok:#97C7A6;--film-ok-deep:#2F6B4C;--film-warn:#E7CF96;--film-warn-deep:#9A7327;
--film-danger:#E0A091;--film-danger-deep:#9E4632;
--t-ground:#06090A;--t-panel:#0C1314;--t-ink:#E9F0F0;--t-lead:#B9CCCC;--t-faint:#8AA3A3;
--t-teal:#9ECFD0;--t-teal-dim:#6F9AA0;--t-amber:#F2B35E;
--t-hair:rgba(158,207,208,.16);--t-hair-soft:rgba(158,207,208,.10);
--r-low:#E8B873;--r-mid:#F0D292;--r-high:#8FCEA8;--r-locked:#ABDDC2;
--font-display:'Bricolage Grotesque',system-ui,sans-serif;
--font-mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace}
.film-kicker{font-family:var(--font-mono);font-size:.72em;letter-spacing:.2em;text-transform:uppercase}
.film-receipt{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.08em}
