/* ============================================================
   TFP SPA — Design Tokens
   Source of truth: brand.md (palette) + Figma type scale (file jzLoEROxPXD14uboX4f60v)
   Fonts are wired to CSS variables so the PP Editorial New / Pragmatica
   <-> Blacker Display / Inter decision is a one-line swap (pending Sav).
   ============================================================ */

:root {
  /* ---- Palette (verbatim from brand.md) ---- */
  --c-cream:       #FCFAF1; /* surface / cards */
  --c-beige:       #FAF7EF; /* primary background */
  --c-gold:        #D9B181; /* warm accent */
  --c-green-mist:  #465241; /* signature accent */
  --c-black:       #000000; /* primary text */
  --c-white:       #FFFFFF;

  /* semantic */
  --bg:            var(--c-beige);
  --surface:       var(--c-cream);
  --ink:           var(--c-black);
  --ink-soft:      rgba(0,0,0,0.55);
  --ink-faint:     rgba(0,0,0,0.40);
  --accent:        var(--c-green-mist);
  --accent-warm:   var(--c-gold);
  --line:          rgba(70,82,65,0.20); /* hairline, green-mist tint */

  /* ---- Type families (SWAP POINT) ----
     Brand target (per Figma + guidelines): 'PP Editorial New' (display) + 'Pragmatica' (sans).
     Real names listed FIRST so they auto-activate the moment licensed woff2 land in /assets/fonts.
     Until then: free stand-ins Playfair Display (Didone) + Inter (grotesque).
     Blacker DROPPED 2026-06-14 — off-brand, see brand.md typography note. */
  --font-display: "PP Editorial New", "Playfair Display", Georgia, "Times New Roman", serif;
  --font-sans:    "Pragmatica", "Inter", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;

  /* ---- Type scale (from Figma px, fluid) ---- */
  --fs-hero:    clamp(2.25rem, 1.4rem + 3.6vw, 3.125rem); /* ~36 -> 50 */
  --fs-h1:      clamp(2rem,   1.5rem + 2.2vw, 2.5rem);    /* ~32 -> 40 */
  --fs-h2:      clamp(1.6rem, 1.3rem + 1.4vw, 1.875rem);  /* ~26 -> 30 */
  --fs-h3:      clamp(1.4rem, 1.2rem + 0.9vw, 1.5625rem); /* ~22 -> 25 */
  --fs-body-lg: 1rem;        /* 16 */
  --fs-body:    0.875rem;    /* 14 */
  --fs-sm:      0.8125rem;   /* 13 — nav, sub */
  --fs-eyebrow: 0.6875rem;   /* 11 */
  --fs-xs:      0.625rem;    /* 10 */
  --fs-legal:   0.5625rem;   /* 9 — footer copyright */

  /* line-heights */
  --lh-tight:   1.12;
  --lh-head:    1.22;
  --lh-body:    1.65;

  /* letter-spacing (caps/eyebrows run wide in the design) */
  --ls-caps:    0.14em;
  --ls-nav:     0.08em;
  --ls-tight:   0.01em;

  /* ---- Spacing scale ---- */
  --sp-1: 0.25rem;  --sp-2: 0.5rem;  --sp-3: 0.75rem;  --sp-4: 1rem;
  --sp-5: 1.5rem;   --sp-6: 2rem;    --sp-8: 3rem;     --sp-10: 4rem;
  --sp-12: 6rem;    --sp-16: 8rem;   --sp-20: 10rem;

  /* section rhythm */
  --section-y:  clamp(4rem, 8vw, 9rem);

  /* ---- Layout ---- */
  --container:     1440px;  /* inner content ~1248 at 1920 ≈ Figma content column ~1240 */
  --container-wide: 1880px;  /* near full-bleed: header + footer strip (Figma strip x=23→1897) */
  --gutter:        clamp(1.25rem, 5vw, 6rem); /* ~96px at full width */
  --header-h:      88px;

  /* ---- Motion ---- */
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);   /* expo-out, Aesop-calm */
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast:    280ms;
  --dur:         600ms;
  --dur-slow:    1000ms;

  --radius:      0px; /* design is hard-edged / editorial */
}
