/* =========================================================================
   TOKENS — one place for colour, type, space, motion.
   Visual grammar of this page:
     yellow  editorial accent (section numbers, rules, emphasised words)
     cyan    IN THE SALE      — what Google receives
     slate   NOT IN THE SALE  — carved out of this lot
     amber   DISPUTED         — reported inconsistently
     red     risk, objection, re-identification
   One dot = one million records, everywhere on the page.
   ========================================================================= */

@font-face{font-family:'Instrument Serif';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/instrument-serif-400-normal.woff2) format('woff2');}
@font-face{font-family:'Instrument Serif';font-style:italic;font-weight:400;font-display:swap;
  src:url(../fonts/instrument-serif-400-italic.woff2) format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;
  src:url(../fonts/inter-400_700-normal.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/ibm-plex-mono-400-normal.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url(../fonts/ibm-plex-mono-500-normal.woff2) format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;
  src:url(../fonts/ibm-plex-mono-600-normal.woff2) format('woff2');}

:root{
  /* ---- ground ---- */
  --void:#07080b;
  --bg:#0a0b10;
  --surface:#101219;
  --surface-2:#161a24;
  --surface-3:#1e2330;
  --line:#262c3c;
  --line-2:#333a4d;
  --line-soft:rgba(255,255,255,.06);

  /* ---- ink ---- */
  --text:#edeff4;
  --text-2:#a5abba;
  --text-3:#6d7484;
  --text-4:#4b515e;

  /* ---- signal ---- */
  --yellow:#ffd60a;
  --yellow-2:#ffe873;
  --yellow-ink:#3a2f00;
  --yellow-glow:rgba(255,214,10,.16);

  --cyan:#5ad2ff;
  --cyan-2:#9ce4ff;
  --cyan-deep:#0e3d55;
  --cyan-glow:rgba(90,210,255,.14);

  --slate:#8a93a5;
  --slate-deep:#2c3242;

  --amber:#ff9f2e;
  --amber-deep:#4a2f0c;

  --red:#ff5d4d;
  --red-2:#ff8f83;
  --red-deep:#4c1a14;
  --red-glow:rgba(255,93,77,.16);

  --green:#4ee39a;

  --violet:#b39cff;
  --violet-deep:#2e2555;

  /* ---- type ---- */
  --serif:'Instrument Serif',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --t-display:clamp(3.1rem,11.5vw,8.5rem);
  --t-h1:clamp(2.35rem,6.4vw,4.6rem);
  --t-h2:clamp(1.85rem,4.3vw,3.1rem);
  --t-h3:clamp(1.25rem,2.4vw,1.7rem);
  --t-lede:clamp(1.1rem,1.9vw,1.4rem);
  --t-body:clamp(1rem,1.15vw,1.075rem);
  --t-small:.9rem;
  --t-label:.7rem;

  --lh-tight:1.02;
  --lh-head:1.08;
  --lh-body:1.62;

  /* ---- space ---- */
  --gut:clamp(1.15rem,4vw,3rem);
  --band:clamp(5rem,11vw,9.5rem);
  --measure:63ch;
  --wide:1180px;
  --full:1500px;

  /* ---- motion ---- */
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
  --dur-1:180ms;
  --dur-2:340ms;
  --dur-3:620ms;
  --dur-4:900ms;

  --radius:3px;
  --radius-lg:8px;

  --focus:0 0 0 2px var(--bg),0 0 0 4px var(--yellow);
}

/* Motion is opt-out at the token level so every module inherits the same
   contract: durations collapse to zero, final states render immediately. */
@media (prefers-reduced-motion: reduce){
  :root{--dur-1:1ms;--dur-2:1ms;--dur-3:1ms;--dur-4:1ms;}
}
