﻿/* ============================================================
   goodcrowd â€” Design Tokens
   The single source of truth. Lifts cleanly into a future
   native-app theme object (1:1 token mapping).
   ============================================================ */

:root {
  /* ---- Paper & Ink (foundations) ---- */
  --ink:        #16130F;   /* warm near-black â€” primary text, dark spreads */
  --ink-80:     #2C2820;
  --ink-60:     #5C544A;   /* muted ink â€” secondary text */
  --ink-40:     #948C7F;
  --paper:      #F7F1E3;   /* warm off-white â€” default canvas */
  --paper-2:    #EFE6D2;   /* deeper paper â€” cards, wells */
  --paper-3:    #E6DBC2;   /* borders, dividers on paper */
  --white:      #FFFDF8;

  /* ---- Unexpected pops (one-per-moment, never together loud) ---- */
  --coral:      #FF5A4D;   /* signature / default primary action */
  --coral-ink:  #B5392E;   /* coral as text on paper (AA) */
  --gold:       #F2B705;
  --gold-ink:   #8A6800;
  --teal:       #1F8A82;
  --violet:     #6C4AB6;
  --lime:       #B6D94C;
  --lime-ink:   #5E7411;
  --magenta:    #D6336C;
  --tangerine:  #F26419;
  --indigo:     #3B3B8F;
  --sky:        #2A9DD8;
  --olive:      #7A8233;
  --mustard:    #D99A07;
  --crimson:    #C42348;

  /* ---- Category accents (semantic aliases) ---- */
  --cat-theatre:  var(--crimson);
  --cat-magic:    var(--gold);
  --cat-music:    var(--coral);
  --cat-dance:    var(--violet);
  --cat-comedy:   var(--tangerine);
  --cat-visual:   var(--teal);
  --cat-film:     var(--indigo);
  --cat-markets:  var(--olive);
  --cat-workshop: var(--mustard);
  --cat-cabaret:  var(--magenta);
  --cat-kids:     var(--sky);
  --cat-games:    var(--lime);
  --cat-experimental: var(--lime-ink);
  --cat-tours:    #2D7D55;
  --cat-free:     var(--ink);

  /* ---- Semantic ---- */
  --bg:          var(--paper);
  --bg-card:     var(--white);
  --text:        var(--ink);
  --text-muted:  var(--ink-60);
  --border:      var(--paper-3);
  --accent:      var(--coral);
  --accent-text: var(--coral-ink);
  --focus:       var(--gold);
  --success:     var(--teal);
  --warn:        var(--tangerine);

  /* ---- Type ---- */
  --font-display: "Cabinet Grotesk", "Clash Display", "Arial Black", system-ui, sans-serif;
  --font-body:    "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono:    "Spline Sans Mono", "JetBrains Mono", ui-monospace, "Cascadia Code", monospace;

  --fs-display: clamp(2.5rem, 6vw, 4rem);
  --fs-h1:      clamp(2rem, 4.5vw, 3rem);
  --fs-h2:      clamp(1.5rem, 3vw, 2rem);
  --fs-h3:      clamp(1.2rem, 2vw, 1.5rem);
  --fs-body:    1rem;
  --fs-sm:      0.875rem;
  --fs-meta:    0.8125rem;
  --lh-tight:   1.08;
  --lh-snug:    1.3;
  --lh-body:    1.6;

  /* ---- Space (8pt-ish, with a 4 step) ---- */
  --s-1: 0.25rem;  --s-2: 0.5rem;  --s-3: 0.75rem;  --s-4: 1rem;
  --s-5: 1.5rem;   --s-6: 2rem;    --s-7: 3rem;     --s-8: 4rem;  --s-9: 6rem;

  /* ---- Radius / lines / shadow ---- */
  --r-sm: 4px;  --r-md: 8px;  --r-lg: 14px;  --r-pill: 999px;
  --line: 1.5px;
  --shadow-1: 0 2px 0 var(--ink);                 /* hard "printed" shadow */
  --shadow-2: 0 4px 18px rgba(22,19,15,0.12);
  --shadow-lift: 0 8px 28px rgba(22,19,15,0.18);

  /* ---- Layout ---- */
  --maxw: 1180px;
  --maxw-text: 70ch;
  --nav-h: 64px;

  /* ---- Motion ---- */
  --t-fast: 120ms cubic-bezier(.2,.7,.3,1);
  --t-med:  240ms cubic-bezier(.2,.7,.3,1);
}

@media (prefers-reduced-motion: reduce) {
  :root { --t-fast: 0ms; --t-med: 0ms; }
  * { animation: none !important; scroll-behavior: auto !important; }
}

