/* The only file where raw values (hex, px, font names) may appear.
   Tokens are copied from design/nqub-design-system.html. Fonts are bundled (OFL, see fonts/). */
@font-face{font-family:'Archivo';font-style:normal;font-weight:700 800;font-display:swap;src:url('./fonts/archivo-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Archivo';font-style:normal;font-weight:700 800;font-display:swap;src:url('./fonts/archivo-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:'Inter';font-style:normal;font-weight:400 600;font-display:swap;src:url('./fonts/inter-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 600;font-display:swap;src:url('./fonts/inter-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:'JetBrains Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url('./fonts/jetbrains-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url('./fonts/jetbrains-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;}

:root{
  /* neutrals */
  --paper:#E8DFD3;
  --paper-2:#DFD4C4;
  --ink:#2A2827;
  --ink-2:#57524E;
  --line:#CAC2B7;
  --line-strong:#7A726A;

  /* hues */
  --orange:#F16B24;
  --green:#256B3B;
  --yellow:#E2A923;
  --red:#A8302A;
  --blue:#1F5BA8;
  --purple:#6A4C9C;

  --tint:16%;

  /* type: Major Third (x1.25) from 16px, rounded to whole px */
  --font-display:'Archivo',sans-serif;
  --font-body:'Inter',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
  --size-xs:11px;
  --size-sm:13px;
  --size-base:16px;
  --size-lg:20px;
  --size-xl:25px;
  --size-2xl:31px;
  --size-3xl:39px;
  --weight-regular:400; --weight-semi:600; --weight-bold:700; --weight-heavy:800;
  --leading-body:1.5; --leading-tight:1.2;

  /* space: 4px base, 8-point grid */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-5:24px; --space-6:32px; --space-7:48px; --space-8:64px;

  /* lines */
  --line-1:1px; --line-2:2px; --line-3:3px;

  /* shape */
  --round:999px;

  /* motion */
  --duration:160ms;
  --duration-slow:260ms;
  --ease:cubic-bezier(.2,.7,.2,1);

  /* dimensions: component sizes and small offsets, named by their length */
  --d-1:1px; --d-1h:1.5px; --d-2:2px; --d-3:3px; --d-4:4px; --d-5:5px; --d-6:6px; --d-7:7px; --d-8:8px; --d-9:9px; --d-10:10px; --d-11:11px; --d-12:12px; --d-13:13px; --d-14:14px; --d-15:15px; --d-16:16px; --d-18:18px; --d-24:24px; --d-26:26px; --d-32:32px; --d-34:34px; --d-36:36px; --d-40:40px; --d-44:44px; --d-56:56px; --d-60:60px; --d-64:64px; --d-80:80px; --d-84:84px; --d-120:120px; --d-140:140px; --d-150:150px; --d-220:220px; --d-260:260px; --d-292:292px; --d-300:300px; --d-340:340px; --d-420:420px; --d-460:460px; --d-560:560px; --d-720:720px; --d-1200:1200px;

  /* kanban: narrowest a column gets before the board scrolls sideways */
  --board-column:240px;

  /* gantt time scale: width of one day in each zoom */
  --gantt-names:320px; --gantt-id:56px; --gantt-leading:1.35; --gantt-day:28px; --gantt-day-week:9px; --gantt-head-day:56px;
}

/* paper: printing (and Save as PDF) is landscape, for the Gantt */
@page{size:landscape;margin:12mm;}

/* Local style preferences (Settings), set as attributes on the page root. They only re-value the
   tokens above, so every component follows. */

/* Higher contrast: black on white, lines dark enough to see every field's edge, and the hues
   deepened so they still read on white. */
:root[data-contrast=high]{
  --paper:#FFFFFF;
  --paper-2:#ECE9E4;
  --ink:#000000;
  --ink-2:#33302D;
  --line:#6B655F;
  --line-strong:#000000;
  --orange:#C2470A;
  --green:#1B5A2E;
  --yellow:#946200;
  --red:#971F1A;
  --blue:#174A8C;
  --purple:#573B86;
  --tint:22%;
}

/* Text size: the same scale, stepped up. */
:root[data-text=large]{
  --size-xs:13px; --size-sm:15px; --size-base:18px; --size-lg:22px; --size-xl:27px; --size-2xl:33px; --size-3xl:41px;
}
:root[data-text=larger]{
  --size-xs:14px; --size-sm:16px; --size-base:20px; --size-lg:24px; --size-xl:29px; --size-2xl:35px; --size-3xl:43px;
}

/* ---------------------------------------------------------------------------------------------
   Primer: narrated story cards that read like a deck (styles/primer.css, reference.html "Primer").
   Sizes follow the window so one card reads the same on a phone and on a booth TV.
   No new colors: primers use paper, paper-2, ink, ink-2, and orange only.
   --------------------------------------------------------------------------------------------- */
:root{
  --primer-gutter:clamp(22px,4.6vw,64px);
  --primer-head:70px;
  --primer-foot:88px;
  --primer-pad-y:clamp(14px,2.6vh,28px);
  --primer-kicker:clamp(40px,min(11vw,8vh),88px);
  --primer-cover:clamp(54px,min(15vw,11vh),128px);
  --primer-title:clamp(30px,min(8vw,5.8vh),64px);
  --primer-body:clamp(15px,min(4.1vw,2.2vh),18px);
  --primer-lede:clamp(15px,min(4.4vw,2.4vh),19px);
  --primer-takeaway:clamp(18px,min(5vw,3vh),26px);
  --primer-stat:clamp(48px,min(13vw,10vh),120px);
  --primer-caption:clamp(16px,min(4.2vw,2.6vh),24px);
  --primer-gap-kicker:clamp(18px,3.6vh,40px);
  --primer-gap-title:clamp(10px,2vh,20px);
  --primer-gap-body:clamp(12px,2.2vh,22px);
  --primer-gap-figure:clamp(8px,2vh,20px);
  --primer-measure:34em;
  --primer-copy-width:760px;
  --primer-title-width:13em;
  --primer-dialog-width:660px;
  --primer-dialog-height:740px;
  --primer-grid:22px;
  --primer-perspective:2400px;
  --primer-hazard:repeating-linear-gradient(-45deg,currentColor 0 3px,transparent 3px 8px);
  --tracking-caps:0.12em;
  --tracking-title:-0.03em;
  --tracking-kicker:-0.035em;
  --tracking-cover:-0.04em;
  --leading-display:0.9;
  --duration-turn:650ms;
}
@media (max-width:51.25em){ :root{ --primer-head:60px; --primer-foot:84px; } }
@media (max-height:40em){ :root{ --primer-head:54px; --primer-foot:70px; } }
@media (max-height:30em){ :root{ --primer-head:48px; --primer-foot:50px; --primer-kicker:28px; --primer-gap-kicker:8px; } }
