/* ════════ TYPOGRAPHY TOKENS ════════
 * One sans family does the heavy lifting (Geist), at display and text
 * scales. Headlines are short, bold (600–700), confident, scannable
 * with tight tracking. Body sits at 400–500, max ~80ch per line.
 * Geist Mono carries data / KPI numerals; Newsreader is the rare serif.
 */
: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 (fluid where it matters) ── */
  --fs-display: clamp(2.1rem, 4.4vw, 3.4rem); /* @kind font */ /* hero H1 */
  --fs-h1: clamp(1.85rem, 3vw, 2.4rem);       /* @kind font */ /* section title */
  --fs-h2: 1.6rem;       /* @kind font */
  --fs-h3: 1.25rem;      /* @kind font */
  --fs-lg: 1.0625rem;    /* @kind font */ /* 17px lead body */
  --fs-body: 1rem;       /* @kind font */ /* 16px */
  --fs-sm: 0.875rem;     /* @kind font */ /* 14px meta */
  --fs-xs: 0.78125rem;   /* @kind font */ /* 12.5px caption */
  --fs-eyebrow: 0.875rem; /* @kind font */

  /* ── Line heights ── */
  --lh-tight: 1.05; /* @kind font */
  --lh-snug: 1.2;   /* @kind font */
  --lh-body: 1.55;  /* @kind font */

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

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