/* ==========================================================================
   HSI design tokens — ported verbatim from the Design C prototype
   (_ds/hsi-design-system-<id>/tokens/ colors, typography, spacing .css) plus the
   self-hosted @font-face rules that replace the Google Fonts @import.
   Token names are part of the contract: do not rename. See docs/COMPONENTS.md.
   ========================================================================== */

/* ---- Fonts (self-hosted latin subsets, variable woff2 from Google Fonts) ----
   Files: src/fonts/*.woff2 — licenses in src/fonts/LICENSE.md (all SIL OFL 1.1).
   Weight ranges cover exactly the weights the site uses (inventory §4.6). */
@font-face{font-family:'Public Sans';font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/public-sans-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:'Public Sans';font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/public-sans-italic-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:'Space Grotesk';font-style:normal;font-weight:500 700;font-display:swap;src:url(/fonts/space-grotesk-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:'Fraunces';font-style:normal;font-weight:500 600;font-display:swap;src:url(/fonts/fraunces-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:'Fraunces';font-style:italic;font-weight:500 600;font-display:swap;src:url(/fonts/fraunces-italic-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:'Libre Franklin';font-style:normal;font-weight:700 800;font-display:swap;src:url(/fonts/libre-franklin-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}

:root{
/* ---- Colors (tokens/colors.css) ---- */
/* Core (from the compass logo) */
--compass-navy:#1C4080;
--midnight-navy:#0F2848;
--compass-gold:#F4B414;
--bronze:#CC9828;
--gold-tint:#F8C458;
/* Supporting blues & neutrals */
--horizon-blue:#3464B4;
--steel-blue:#648CC8;
--sky-wash:#EAF0F9;
--warm-cream:#F8F0E0;
--ink:#0C141F;
--slate:#46536A;
--white:#FFFFFF;
/* Accents (sparingly) */
--heart-crimson:#A63D40;
--verdant:#2F7D5D;
/* Semantic aliases */
--text-body:var(--ink);
--text-muted:var(--slate);
--text-on-dark:#FFFFFF;
--text-on-dark-muted:#B8C6DE;
--text-heading:var(--compass-navy);
--surface-page:var(--white);
--surface-panel-blue:var(--sky-wash);
--surface-panel-warm:var(--warm-cream);
--surface-band:var(--midnight-navy);
--surface-navy:var(--compass-navy);
--link:var(--horizon-blue);
--link-hover:var(--compass-navy);
--cta-bg:var(--compass-gold);
--cta-bg-hover:var(--bronze);
--cta-text:var(--midnight-navy);
--rule-gold:var(--compass-gold);
--border-card:#D4DCEA;
--border-gold:var(--bronze);
--focus-ring:var(--horizon-blue);
--success:var(--verdant);
--emphasis-rare:var(--heart-crimson);
/* Hatch texture for navy sections (echoes logo interior lines) */
--hatch-on-navy:repeating-linear-gradient(0deg,rgba(100,140,200,0.14) 0,rgba(100,140,200,0.14) 1px,transparent 1px,transparent 7px);

/* ---- Literal colors the prototype used inline, promoted to tokens ---- */
--cream-border:#E8DCC0;              /* border on warm-cream panels (QuoteBlock, format rows) */
--badge-navy-border:#C6D4EC;
--label-gold:#8A6410;        /* smallest accessible gold on white / sky / cream (5.37:1) */
--label-steel:#456A9F;       /* smallest accessible steel on white / sky / cream (5.50:1) --
                                --steel-blue #648CC8 is 3.43:1 on white and fails WCAG 1.4.3 at
                                label sizes; it stays decorative (bearing ring, hatch). T-184 */
--badge-gold-text:var(--label-gold);
--badge-verdant-bg:#E8F2EC;
--badge-verdant-border:#B9D6C7;
--badge-crimson-bg:#F6E9E9;
--badge-crimson-border:#DFBCBD;
--input-border:#B9C4D6;
--focus-glow:rgba(52,100,180,0.25);
--on-dark-panel:rgba(255,255,255,0.07);       /* translucent card on navy */
--on-dark-panel-border:rgba(255,255,255,0.16);
--on-dark-tile:rgba(255,255,255,0.06);        /* StatTile/QuoteBlock onDark */
--on-dark-badge:rgba(255,255,255,0.08);
--on-dark-badge-border:rgba(248,196,88,0.4);
--on-dark-rule:rgba(255,255,255,0.14);        /* DarkRow divider */
--on-dark-rule-strong:rgba(255,255,255,0.22); /* HSI-approach steps top border */
--on-dark-legal-rule:rgba(255,255,255,0.12);  /* footer legal bar */
--on-dark-ghost-border:rgba(255,255,255,0.5);
--on-dark-ghost-hover:rgba(255,255,255,0.1);
--head-shadow:0 8px 28px rgba(12,20,31,0.38);

/* ---- Typography (tokens/typography.css) ---- */
/* Families */
--font-body:'Public Sans',system-ui,sans-serif;
--font-data:'Space Grotesk',var(--font-body);            /* stat numerals, eyebrows, codes, wordmark, caps runs */
--font-display:'Fraunces',Georgia,serif;                 /* headings, quotes, card titles */
--font-display-federal:'Libre Franklin',var(--font-body);/* federal headings */
/* Display (Fraunces: weight 500-700, optical sizing auto) */
--display-xl:clamp(2.75rem,5vw,4.25rem);
--display-lg:clamp(2.25rem,4vw,3.25rem);
--display-md:clamp(1.75rem,3vw,2.375rem);
--display-sm:1.5rem;
--display-weight:600;
--display-line:1.08;
/* Federal Modern overrides: weight 700-800, letter-spacing -0.02em */
--display-federal-weight:800;
--display-federal-tracking:-0.02em;
/* Body */
--text-lg:1.1875rem;
--text-md:1rem;
--text-sm:0.875rem;
--text-xs:0.8125rem;
--body-line:1.6;
/* Eyebrow (Space Grotesk letterspaced caps, gold on light navy sections) */
--eyebrow-size:0.8125rem;
--eyebrow-tracking:0.18em;
--eyebrow-weight:600;
/* Stat numerals */
--stat-size:2.75rem;
--stat-weight:700;

/* ---- Spacing / radii / shadows (tokens/spacing.css) ---- */
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;
--radius-sm:3px;--radius-md:6px;--radius-pill:999px;
--rule-w:56px;--rule-h:4px;      /* gold underline rule under headlines */
--case-rule-w:6px;               /* thick gold left rule on case-study cards / quote blocks / past-perf rows */
--stat-bar-h:4px;                /* gold top bar on stat tiles */
--shadow-card:0 1px 3px rgba(12,20,31,0.08),0 4px 16px rgba(12,20,31,0.06);
--shadow-raised:0 8px 28px rgba(12,20,31,0.14);
--container:1160px;
--head-max:1400px;               /* header row max width (content-box; wider than --container so the seven-item nav fits on one row) */
--head-h:81px;                   /* sticky header ≥1100px: 78px + 3px gold border (drives scroll-margin) */
--head-h-compact:67px;           /* sticky header <1100px (hamburger bar): 64px + 3px gold border */
}
