/* tokens.css — shared design tokens and layout infrastructure. Owned by the lead; page agents only USE these names.
   Language: bento. Light warm-grey ground, white tiles, navy ink, electric-blue and lime accent tiles. */
:root{
  --bg:#F1F0EB; --bg-2:#E8E7E0; --surface:#FFFFFF; --surface-2:#F7F7F3;
  --ink:#0E1A3A; --ink-2:#34415F; --muted:#586380;
  --blue:#2347F0; --blue-d:#1B38C2; --sky:#DCE5FF; --sky-d:#B9CBFF;
  --lime:#D3F36B; --lime-d:#B6DC3F;
  --navy:#0E1A3A; --navy-2:#16264F; --on-navy:#F1F0EB; --on-navy-muted:#B7C0D8;
  --line:rgba(14,26,58,.14); --line-strong:rgba(14,26,58,.28);
  --danger:#B3261E; --ok:#0B7A4B;
  --r-s:10px; --r-m:16px; --r-l:22px;
  --shadow:0 1px 2px rgba(14,26,58,.06),0 10px 28px rgba(14,26,58,.08);
  --shadow-up:0 2px 4px rgba(14,26,58,.08),0 18px 40px rgba(14,26,58,.14);
  --font:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --wrap:1360px; --gutter:clamp(16px,4vw,48px);
  --ease:cubic-bezier(.2,.8,.2,1);
  --sc-accent:#14245C; --sc-icon-stroke:2;   /* chat widget: accent only; the widget keeps its own look */
}

*{box-sizing:border-box}
[hidden]{display:none!important}

/* containers */
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.bleed{width:100vw;margin-left:calc(50% - 50vw)}
.bleed-r{margin-right:calc(50% - 50vw)}
.grid > *{min-width:0}   /* §7 MMMMMM: grid children must be allowed to shrink */

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* reveal on scroll — hidden ONLY when the inline script has marked <html class="js"> (§7 BB) */
html.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
html.js .reveal.in{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.08s}
.reveal[data-delay="2"]{transition-delay:.16s}
.reveal[data-delay="3"]{transition-delay:.24s}
.reveal[data-delay="4"]{transition-delay:.32s}
.reveal[data-delay="5"]{transition-delay:.4s}

/* shared motion */
@keyframes jh-marquee{to{transform:translateX(-50%)}}
@keyframes jh-drift{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(3%,-4%,0) scale(1.08)}100%{transform:translate3d(0,0,0) scale(1)}}
@keyframes jh-pulse{0%,100%{box-shadow:0 0 0 0 rgba(35,71,240,.35)}50%{box-shadow:0 0 0 10px rgba(35,71,240,0)}}
@keyframes jh-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes jh-tick{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}

@media (prefers-reduced-motion:reduce){
  html.js .reveal{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
