/* ============================================================
   Kate's Quest — Typography
   ------------------------------------------------------------
   Four voices, each with a job:
     1. RYE          — the weathered carved title, used sparingly for the
                       loudest "wanted-poster" moment (logo, hero).
     2. ALFA SLAB    — the heavy adventure headline ("EXPLORE THE MEKONG").
     3. CINZEL       — engraved small-caps for section labels & refined
                       quest titles ("QUEST DETAILS", "KISS THE BUDDHA").
     4. HANKEN       — clean humanist sans for all running copy & UI.
     5. CAVEAT       — handwritten ink for personal notes & marginalia.
   ============================================================ */

:root {
  /* ---- Families ---- */
  --font-carved:  'Rye', 'Cinzel', serif;
  --font-display: 'Alfa Slab One', 'Rye', serif;
  --font-engrave: 'Cinzel', 'Times New Roman', serif;
  --font-body:    'Hanken Grotesk', system-ui, -apple-system, sans-serif;
  --font-hand:    'Caveat', 'Segoe Script', cursive;

  /* ---- Type scale (1.250 major-third, rounded) ---- */
  --text-2xs: 0.6875rem;  /* 11px — stamp dates, fine print */
  --text-xs:  0.75rem;    /* 12px — captions, eyebrow labels */
  --text-sm:  0.875rem;   /* 14px — secondary UI text */
  --text-base:1rem;       /* 16px — body */
  --text-md:  1.125rem;   /* 18px — lead body */
  --text-lg:  1.375rem;   /* 22px — card subtitle */
  --text-xl:  1.75rem;    /* 28px — section heading */
  --text-2xl: 2.25rem;    /* 36px — card title */
  --text-3xl: 3rem;       /* 48px — page title */
  --text-4xl: 4rem;       /* 64px — hero */
  --text-5xl: 5.5rem;     /* 88px — display */

  /* ---- Weights ---- */
  --weight-light:    300;
  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;
  --weight-black:    800;

  /* ---- Line heights ---- */
  --leading-tight:   1.02;   /* slab display */
  --leading-snug:    1.18;   /* headings */
  --leading-normal:  1.5;    /* body */
  --leading-relaxed: 1.65;   /* long-form note */

  /* ---- Letter spacing ---- */
  --tracking-tighter: -0.02em;
  --tracking-tight:   -0.01em;
  --tracking-normal:  0;
  --tracking-wide:    0.04em;
  --tracking-wider:   0.12em;   /* Cinzel small-caps labels */
  --tracking-widest:  0.24em;   /* eyebrow / postmark text */
}

/* ------------------------------------------------------------
   Optional ready-made text roles. Components may use these
   classes directly, or just reference the variables above.
   ------------------------------------------------------------ */

.kq-carved {
  font-family: var(--font-carved);
  font-weight: var(--weight-regular);
  letter-spacing: var(--tracking-wide);
  line-height: var(--leading-snug);
  color: var(--text-strong);
}

.kq-display {
  font-family: var(--font-display);
  font-weight: var(--weight-regular);
  letter-spacing: var(--tracking-tight);
  line-height: var(--leading-tight);
  text-transform: uppercase;
  color: var(--text-strong);
}

.kq-title {
  font-family: var(--font-engrave);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wide);
  line-height: var(--leading-snug);
  color: var(--text-strong);
}

.kq-eyebrow {
  font-family: var(--font-engrave);
  font-weight: var(--weight-semibold);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
  color: var(--text-muted);
}

.kq-body {
  font-family: var(--font-body);
  font-weight: var(--weight-regular);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--text-body);
}

.kq-note {
  font-family: var(--font-hand);
  font-weight: var(--weight-medium);
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
  color: var(--ink-700);
}
