/* ============================================================================
   TOKENS  —  Cursaurus design-system swap point
   ----------------------------------------------------------------------------
   This is the ONLY file you need to replace to re-skin the whole course site.
   Every colour, font, size, space, radius, shadow and timing used anywhere in
   the site resolves to a custom property below. Nothing else hard-codes a value.

   To drop Cursaurus in:
     1. Map the Cursaurus primitives onto the SEMANTIC block.
     2. Keep the variable NAMES — app.css / present.css depend on them.
     3. Module accents (--m1..--m5) can come from Cursaurus or stay as the deck
        palette; content.json may override them per module.
   ========================================================================== */
:root {
  /* ----------------------------------------------------------- PALETTE (raw)
     Sampled from the original Keynote decks so site and slides match. */
  --raw-blue:#00A2FF;      --raw-blue-deep:#0076BA;  --raw-blue-ink:#004D80;
  --raw-sky:#56C1FF;       --raw-green:#1DB100;      --raw-green-deep:#017100;
  --raw-lime:#61D836;      --raw-lime-light:#88FA4E; --raw-teal:#00A89D;
  --raw-teal-deep:#007B76; --raw-cyan:#16E7CF;       --raw-yellow:#FAE232;
  --raw-yellow-pale:#FFFC66; --raw-amber:#F8BA00;    --raw-orange:#FF9300;
  --raw-orange-deep:#A84910; --raw-red:#EE220C;      --raw-red-soft:#FF634E;
  --raw-red-deep:#B51800;  --raw-pink:#EF5FA7;       --raw-magenta:#FF00DE;
  --raw-plum:#CB297B;      --raw-plum-deep:#99195E;  --raw-grey-400:#929292;
  --raw-grey-600:#5E5E5E;
  --raw-ink-900:#0B0D10;   --raw-ink-800:#12151A;    --raw-ink-700:#191D24;
  --raw-ink-600:#222833;   --raw-ink-500:#2E3643;    --raw-ink-400:#3D4757;
  --raw-slate-300:#8C97A8; --raw-slate-200:#B6BFCC;  --raw-slate-100:#DCE2EA;
  --raw-white:#FFFFFF;

  /* --------------------------------------------------------------- SEMANTIC */
  --c-bg:var(--raw-ink-900);
  --c-bg-subtle:var(--raw-ink-800);
  --c-surface:var(--raw-ink-700);
  --c-surface-2:var(--raw-ink-600);
  --c-surface-3:var(--raw-ink-500);

  --c-text:#EEF2F7;
  --c-text-strong:var(--raw-white);
  --c-text-dim:var(--raw-slate-300);
  --c-text-faint:#67717F;
  --c-text-on-accent:var(--raw-white);

  --c-border:#2A313C;
  --c-border-strong:#3A4351;

  --c-accent:var(--raw-blue);
  --c-accent-soft:color-mix(in srgb, var(--c-accent) 16%, transparent);
  --c-accent-line:color-mix(in srgb, var(--c-accent) 55%, transparent);
  --c-accent-ink:#06121C;

  --c-focus:#7FD4FF;
  --c-ok:var(--raw-lime);
  --c-warn:var(--raw-amber);
  --c-danger:var(--raw-red);
  --c-info:var(--raw-sky);

  /* ------------------------------------------------------------ TYPOGRAPHY */
  --font-sans:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-display:var(--font-sans);
  --font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;

  --fw-regular:400; --fw-medium:500; --fw-semi:600; --fw-bold:700; --fw-black:800;

  --fs-50:.6875rem; --fs-100:.75rem; --fs-200:.8125rem; --fs-300:.9375rem;
  --fs-400:1.0625rem;
  --fs-500:clamp(1.125rem,.4vw + 1rem,1.3125rem);
  --fs-600:clamp(1.375rem,.9vw + 1.1rem,1.75rem);
  --fs-700:clamp(1.75rem,1.6vw + 1.2rem,2.5rem);
  --fs-800:clamp(2.25rem,3vw + 1.2rem,3.75rem);
  --fs-900:clamp(3rem,6vw + 1rem,6rem);

  --lh-tight:1.1; --lh-snug:1.28; --lh-base:1.62; --lh-loose:1.75;
  --tracking-tight:-.022em; --tracking-snug:-.012em;
  --tracking-wide:.04em;    --tracking-caps:.09em;
  --measure:68ch; --measure-wide:92ch;

  /* ---------------------------------------------------------------- SPACE */
  --sp-0:0; --sp-1:.25rem; --sp-2:.5rem; --sp-3:.75rem; --sp-4:1rem;
  --sp-5:1.5rem; --sp-6:2rem; --sp-7:2.75rem; --sp-8:3.5rem; --sp-9:5rem; --sp-10:7rem;
  --gutter:clamp(1.25rem,4vw,3.5rem);

  /* --------------------------------------------------------------- SHAPE */
  --radius-xs:4px; --radius-sm:8px; --radius-md:12px;
  --radius-lg:18px; --radius-xl:28px; --radius-pill:999px;
  --border-thin:1px; --border-med:2px; --border-thick:3px;

  /* -------------------------------------------------------------- SHADOW */
  --shadow-1:0 1px 2px rgba(0,0,0,.35);
  --shadow-2:0 4px 16px rgba(0,0,0,.35);
  --shadow-3:0 16px 48px rgba(0,0,0,.45);
  --shadow-glow:0 0 0 1px var(--c-accent-line),0 8px 32px color-mix(in srgb,var(--c-accent) 22%,transparent);

  /* -------------------------------------------------------------- MOTION */
  --dur-instant:80ms; --dur-fast:140ms; --dur-base:240ms; --dur-slow:420ms;
  --ease:cubic-bezier(.2,.7,.25,1); --ease-out:cubic-bezier(.16,1,.3,1);

  /* --------------------------------------------------------------- LAYOUT */
  --sidebar-w:clamp(232px,21vw,306px);
  --header-h:60px;
  --z-base:1; --z-sticky:50; --z-nav:100; --z-overlay:500; --z-modal:900;

  /* ------------------------------------------------------- MODULE ACCENTS */
  --m1:var(--raw-blue); --m2:var(--raw-orange); --m3:var(--raw-plum);
  --m4:var(--raw-red);  --m5:var(--raw-lime);
}

/* Light theme — for projectors and printing. */
[data-theme="light"]{
  --c-bg:#F7F8FA; --c-bg-subtle:#FFFFFF; --c-surface:#FFFFFF;
  --c-surface-2:#F1F3F7; --c-surface-3:#E5E9F0;
  --c-text:#15181D; --c-text-strong:#000; --c-text-dim:#59606B; --c-text-faint:#8A919C;
  --c-border:#DEE3EB; --c-border-strong:#C4CCD8;
  --shadow-1:0 1px 2px rgba(16,24,40,.06);
  --shadow-2:0 4px 16px rgba(16,24,40,.08);
  --shadow-3:0 16px 48px rgba(16,24,40,.12);
}

@media (prefers-reduced-motion:reduce){
  :root{--dur-instant:0ms;--dur-fast:0ms;--dur-base:0ms;--dur-slow:0ms}
}
