/* IFFS 2027 — static/css/base.css
   Tokens + reset + typography + utilities. Byte-identical on every page.
   GENERATED from design/design_handoff_iffs_2027/static/css/iffs.css
   by scripts/split_design_css.py — do not hand-edit; edit the source. */
:root{
  /* ══ TIER 1 · PRIMITIVES — the only place a colour literal may appear ══ */
  --p-white:#FFFFFF;
  --p-steel-025:#FBFCFD; --p-steel-050:#F5F7F9; --p-steel-100:#ECEFF3; --p-steel-200:#DCE1E8;
  --p-steel-300:#C3CBD6; --p-steel-400:#9FAAB9; --p-steel-500:#7E8898;
  --p-graphite-600:#5A6474; --p-graphite-700:#414B5A; --p-graphite-800:#2B3441;
  --p-graphite-900:#1A212C; --p-graphite-950:#10151D;
  --p-accent-050:#FDF3E4; --p-accent-100:#FBE4C2; --p-accent-200:#F8CE8F; --p-accent-300:#F4B355;
  --p-accent-400:#EE9723; --p-accent-500:#DD7F00; --p-accent-600:#A85A00; --p-accent-700:#7F4400;
  --p-green-100:#D7F0E2; --p-green-500:#15804A; --p-green-700:#0C5A33;
  --p-amber-100:#FCEFCE; --p-amber-500:#EFA400; --p-amber-800:#7A5300;
  --p-red-100:#FADDD9; --p-red-400:#E2726B; --p-red-500:#C4342D; --p-red-700:#8C1D18; --p-red-900:#55100D;
  --p-flap:#0B0F14; /* split-flap cell */
  /* ══ TIER 2 · SEMANTIC ══ */
  --c-surface-canvas:var(--p-white); --c-surface-subtle:var(--p-steel-050);
  --c-surface-inverse:var(--p-graphite-950); --c-surface-inverse-raised:var(--p-graphite-800);
  --c-text-primary:var(--p-graphite-900); --c-text-secondary:var(--p-graphite-600);
  --c-text-muted:var(--p-steel-500); --c-text-inverse:var(--p-white);
  --c-text-on-action:var(--p-graphite-950);
  --c-action-primary:var(--p-accent-500); --c-action-primary-hover:var(--p-accent-400);
  --c-action-secondary-ink:var(--p-graphite-900);
  --c-link:var(--p-accent-600); --c-focus-ring:var(--p-accent-600);
  --c-border-subtle:var(--p-steel-200); --c-border-strong:var(--p-steel-300);
  --c-line-accent:var(--p-accent-500);
  --c-status-success:var(--p-green-500); --c-status-success-surface:var(--p-green-100); --c-status-success-text:var(--p-green-700);
  --c-status-warning:var(--p-amber-500); --c-status-warning-surface:var(--p-amber-100); --c-status-warning-text:var(--p-amber-800);
  --c-status-danger:var(--p-red-500); --c-status-danger-surface:var(--p-red-100); --c-status-danger-text:var(--p-red-700);
  /* ── type. Barlow (DIN signage heritage) + Mukta as Devanagari-capable fallback;
        JetBrains Mono for data: dates, times, prices, counters. ── */
  --font-display:"Barlow Condensed","Mukta",sans-serif;
  --font-body:"Barlow","Mukta",system-ui,sans-serif;
  --font-data:"JetBrains Mono","Noto Sans Mono",monospace;
  --fs-display:clamp(2.75rem,7vw,4.75rem); --fs-h1:clamp(2.1rem,4.5vw,3.1rem);
  --fs-h2:clamp(1.45rem,3vw,1.9rem); --fs-h3:1.2rem;
  --fs-body-l:1.0625rem; --fs-body:0.9375rem; --fs-small:0.8125rem; --fs-micro:0.6875rem;
  /* ── spacing, 4-based ── */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px; --sp-9:96px;
  /* ── radii · shadows · motion ── */
  --r-s:6px; --r-control:8px; --r-m:12px; --r-pill:999px;
  --shadow-1:0 1px 2px rgba(16,21,29,.06); --shadow-2:0 6px 16px rgba(16,21,29,.09);
  --dur-1:120ms; --dur-2:200ms; --dur-3:320ms;
  --ease-out:cubic-bezier(.2,0,0,1); --ease-inout:cubic-bezier(.45,0,.2,1);
  --container:1200px;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font-body);font-size:var(--fs-body);line-height:1.6;color:var(--c-text-primary);background:var(--c-surface-canvas);-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:var(--c-link);text-decoration:underline;text-underline-offset:3px}
a:hover{color:var(--p-accent-700)}
:focus-visible{outline:2px solid var(--c-focus-ring);outline-offset:2px;border-radius:2px}
.container{max-width:var(--container);margin-inline:auto;padding-inline:var(--sp-4)}
@media(min-width:720px){.container{padding-inline:var(--sp-6)}}
.t-display{font-family:var(--font-display);font-weight:700;font-size:var(--fs-display);line-height:.94;letter-spacing:.005em;text-transform:uppercase;margin:0}
.t-h1{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:1;text-transform:uppercase;letter-spacing:.01em;margin:0}
.t-h2{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h2);line-height:1.05;text-transform:uppercase;letter-spacing:.015em;margin:0}
.t-h3{font-family:var(--font-body);font-weight:600;font-size:var(--fs-h3);line-height:1.3;margin:0}
.t-eyebrow{font-family:var(--font-data);font-size:var(--fs-micro);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--c-text-secondary)}
.t-data{font-family:var(--font-data)}
.t-small{font-size:var(--fs-small);color:var(--c-text-secondary)}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:var(--sp-4);top:-48px;z-index:100;background:var(--p-graphite-950);color:var(--p-white);padding:10px 16px;border-radius:0 0 var(--r-s) var(--r-s);transition:top var(--dur-2) var(--ease-out)}
.skip-link:focus{top:0}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
