/* ════════ TYPOGRAPHY TOKENS ════════
 * One sans family does the heavy lifting. Font size and line-height
 * tokens are explicit so all exported pages share the same rhythm.
 */
:root {
  /* ── Families ── */
  --display: "Geist", "Noto Sans TC", ui-sans-serif, system-ui, -apple-system, sans-serif; /* @kind font */
  --sans:    "Geist", "Noto Sans TC", ui-sans-serif, system-ui, -apple-system, sans-serif; /* @kind font */
  --serif:   "Newsreader", "Noto Sans TC", Georgia, serif; /* @kind font */
  --mono:    "Geist Mono", ui-monospace, "SF Mono", monospace; /* @kind font */

  /* ── Weights ── */
  --w-light: 300;    /* @kind font */
  --w-regular: 400;  /* @kind font */
  --w-book: 450;     /* @kind font */
  --w-medium: 500;   /* @kind font */
  --w-semibold: 600; /* @kind font */
  --w-bold: 700;     /* @kind font */
  --w-black: 800;    /* @kind font */

  /* ── Type scale ── */
  --fs-display: clamp(2.25rem, 4.8vw, 4rem); /* @kind font */ /* hero H1 */
  --fs-h1: clamp(1.85rem, 3vw, 2.4rem);      /* @kind font */ /* section title */
  --fs-h2: clamp(1.5rem, 2.4vw, 1.9rem);     /* @kind font */
  --fs-h3: 1.25rem;                          /* @kind font */
  --fs-lg: 1.0625rem;                        /* @kind font */ /* 17px lead */
  --fs-body: 1rem;                           /* @kind font */ /* 16px body */
  --fs-sm: 0.875rem;                         /* @kind font */ /* 14px meta */
  --fs-xs: 0.78125rem;                       /* @kind font */ /* 12.5px caption */
  --fs-nav: 0.90625rem;                      /* @kind font */ /* 14.5px */
  --fs-micro: 0.6875rem;                     /* @kind font */ /* 11px */
  --fs-eyebrow: 0.75rem;                     /* @kind font */ /* 12px */

  /* ── Line heights ── */
  --lh-none: 1;       /* @kind font */
  --lh-tight: 1.08;   /* @kind font */
  --lh-snug: 1.2;     /* @kind font */
  --lh-title: 1.14;   /* @kind font */
  --lh-normal: 1.5;   /* @kind font */
  --lh-body: 1.62;    /* @kind font */
  --lh-relaxed: 1.75; /* @kind font */

  /* ── Tracking ── */
  --tracking-display: -0.035em; /* @kind font */
  --tracking-title: -0.025em;   /* @kind font */
  --tracking-tight: -0.012em;   /* @kind font */
  --tracking-eyebrow: 0.08em;   /* @kind font */

  /* ── Semantic aliases ── */
  --font-display: var(--display);
  --font-body: var(--sans);
  --font-mono: var(--mono);

  /* ── Semantic text styles ── */
  --type-display: var(--w-bold) var(--fs-display) / var(--lh-tight) var(--display);
  --type-h1: var(--w-bold) var(--fs-h1) / var(--lh-title) var(--display);
  --type-h2: var(--w-bold) var(--fs-h2) / var(--lh-title) var(--display);
  --type-h3: var(--w-semibold) var(--fs-h3) / var(--lh-snug) var(--display);
  --type-body: var(--w-regular) var(--fs-body) / var(--lh-body) var(--sans);
  --type-body-lg: var(--w-regular) var(--fs-lg) / var(--lh-relaxed) var(--sans);
  --type-meta: var(--w-medium) var(--fs-sm) / var(--lh-normal) var(--sans);
  --type-caption: var(--w-regular) var(--fs-xs) / var(--lh-normal) var(--sans);
  --type-eyebrow: var(--w-semibold) var(--fs-eyebrow) / var(--lh-snug) var(--mono);
  --type-nav: var(--w-medium) var(--fs-nav) / var(--lh-normal) var(--sans);
}
