/* ==========================================================================
   Yapped — design tokens
   Direction: DEADPAN LUXURY. A private-press letterpress receipt, not a
   thermal till roll. Bone stock, oxblood, one restrained ochre.

   Rules that keep it out of AI-slop territory:
     · no gradients as decoration   · no system emoji as ornament
     · no uniform card grids        · no pure #fff or #000
     · one accent, used sparingly   · letterspaced small type carries hierarchy
   ========================================================================== */

:root {
  /* ---- The surface the receipt rests on: deep, warm, near-black ---- */
  --desk:          oklch(14.5% 0.008 65);
  --desk-lift:     oklch(19%   0.010 65);

  /* ---- Tier 1: bone paper, warm ink ---- */
  --paper:         oklch(95.8% 0.010 88);   /* bone / ivory, never white */
  --paper-edge:    oklch(91%   0.013 88);
  --ink:           oklch(20%   0.012 70);   /* warm near-black, never #000 */
  --ink-soft:      oklch(44%   0.010 70);
  --fade:          oklch(64%   0.011 84);
  --rule:          oklch(86%   0.010 84);
  --rule-fine:     oklch(89%   0.008 84);

  --accent:        oklch(76%   0.115 86);   /* muted ochre — the ONE accent */
  --accent-wash:   oklch(89%   0.070 88);   /* the marked-up wash */
  --stamp:         oklch(41%   0.135 28);   /* oxblood, not fire-engine red */

  /* ---- Tier 3: drained. No ochre. No oxblood. No red. ---- */
  --calm-paper:    oklch(95.5% 0.004 250);
  --calm-edge:     oklch(91%   0.006 250);
  --calm-ink:      oklch(28%   0.018 252);
  --calm-soft:     oklch(47%   0.014 252);
  --calm-fade:     oklch(64%   0.010 252);
  --calm-rule:     oklch(87%   0.008 252);
  --calm-accent:   oklch(52%   0.058 252);  /* slate blue — de-escalation */

  /* ---- Type ---- */
  --f-display: 'Archivo', 'Helvetica Neue', sans-serif;
  --f-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --f-serif:   'Newsreader', Georgia, 'Times New Roman', serif;

  --t-micro:  0.625rem;
  --t-xs:     0.6875rem;
  --t-sm:     0.75rem;
  --t-body:   0.8125rem;
  --t-lg:     0.9375rem;
  --t-xl:     1.25rem;
  --t-huge:   min(17cqw, 3.75rem);
  --t-mega:   min(24cqw, 5.5rem);

  /* Letterspacing does the work that colour used to */
  --ls-label:  0.22em;
  --ls-micro:  0.16em;

  /* ---- Rhythm. Deliberately uneven: air is the luxury signal. ---- */
  --line:   1.5rem;
  --s-1:    0.375rem;
  --s-2:    0.75rem;
  --s-3:    1.5rem;
  --s-4:    2.5rem;
  --s-5:    3.75rem;
  --s-6:    5.5rem;

  --receipt-w: 26rem;

  /* ---- Motion ---- */
  --print-line: 38ms;
  --d-fast:     160ms;
  --d-base:     300ms;
  --d-slow:     620ms;
  --d-calm:     820ms;
  --ease:       cubic-bezier(0.16, 1, 0.3, 1);
  --ease-mech:  cubic-bezier(0.22, 0, 0.08, 1);
}

/* Tier 3 remaps the palette wholesale, so no component needs to know. */
.tier3 {
  --paper:      var(--calm-paper);
  --paper-edge: var(--calm-edge);
  --ink:        var(--calm-ink);
  --ink-soft:   var(--calm-soft);
  --fade:       var(--calm-fade);
  --rule:       var(--calm-rule);
  --rule-fine:  var(--calm-rule);
  --accent:     var(--calm-accent);
  --accent-wash: transparent;
  --stamp:      var(--calm-accent);   /* red is banned in Tier 3 */
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --print-line: 0ms;
    --d-fast: 0ms; --d-base: 0ms; --d-slow: 0ms; --d-calm: 0ms;
  }
}
