/* ============================================================
   TYPOGRAPHY — Cormorant Garamond (serif, display + headings)
   + Montserrat (sans, UI, body, forms, numerals)
   Serif is reserved for ≥22px so its hairlines never get fragile.
   ============================================================ */
:root {
  --font-serif: "Cormorant Garamond", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --font-sans:  "Montserrat", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --font-mono:  ui-monospace, "SF Mono", Menlo, Consolas, monospace; /* @kind font */

  /* Role aliases */
  --font-display: var(--font-serif);
  --font-heading: var(--font-serif);
  --font-body:    var(--font-sans);
  --font-ui:      var(--font-sans);
  --font-numeric: var(--font-sans); /* Montserrat tabular for money + counters */

  /* Weights */
  --fw-regular: 400; /* @kind other */
  --fw-medium: 500; /* @kind other */
  --fw-semibold: 600; /* @kind other */
  --fw-bold: 700; /* @kind other */

  /* ---------- Fluid size scale (mobile-first; clamp min = 375px viewport) ---------- */
  --fs-display: clamp(2.5rem, 1.55rem + 4.1vw, 4.25rem); /* @kind other */   /* 40 → 68 */
  --fs-h1:      clamp(2rem, 1.55rem + 1.95vw, 3rem); /* @kind other */        /* 32 → 48 */
  --fs-h2:      clamp(1.625rem, 1.35rem + 1.2vw, 2.25rem); /* @kind other */  /* 26 → 36 */
  --fs-h3:      clamp(1.375rem, 1.27rem + 0.45vw, 1.625rem); /* @kind other *//* 22 → 26 */
  --fs-h4:      1.125rem; /* @kind font */                                   /* 18 — sans, small headings */
  --fs-lead:    clamp(1.125rem, 1.06rem + 0.29vw, 1.3125rem); /* @kind other *//* 18 → 21 — perex */
  --fs-body:    1.0625rem; /* @kind font */   /* 17 */
  --fs-body-sm: 0.9375rem; /* @kind font */   /* 15 */
  --fs-small:   0.875rem; /* @kind font */    /* 14 */
  --fs-legal:   0.8125rem; /* @kind font */   /* 13 — smallest permitted text */
  --fs-overline:0.75rem; /* @kind font */     /* 12 — uppercase + tracked only */
  --fs-amount:  clamp(1.75rem, 1.4rem + 1.5vw, 2.5rem); /* @kind other */ /* 28 → 40 — money figures */

  /* ---------- Line heights ---------- */
  --lh-display: 1.05; /* @kind other */
  --lh-heading: 1.15; /* @kind other */
  --lh-h3: 1.25; /* @kind other */
  --lh-lead: 1.55; /* @kind other */
  --lh-body: 1.65; /* @kind other */
  --lh-tight: 1.35; /* @kind other */
  --lh-ui: 1.4; /* @kind other */

  /* ---------- Letter spacing ---------- */
  --ls-display: -0.015em; /* @kind other */
  --ls-heading: -0.005em; /* @kind other */
  --ls-body: 0; /* @kind other */
  --ls-ui: 0.005em; /* @kind other */
  --ls-caps: 0.14em; /* @kind other */   /* the site's signature tracked uppercase */
  --ls-button: 0.08em; /* @kind other */ /* pill buttons on kolegium.org are tracked caps */
  --ls-numeric: 0.01em; /* @kind other */
}

/* ---------- Ready-made type classes ---------- */
.kan-display { font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: var(--fs-display); line-height: var(--lh-display); letter-spacing: var(--ls-display); color: var(--text-heading); margin: 0; text-wrap: balance; }
.kan-h1 { font-family: var(--font-heading); font-weight: var(--fw-semibold); font-size: var(--fs-h1); line-height: var(--lh-heading); letter-spacing: var(--ls-heading); color: var(--text-heading); margin: 0; text-wrap: balance; }
.kan-h2 { font-family: var(--font-heading); font-weight: var(--fw-semibold); font-size: var(--fs-h2); line-height: var(--lh-heading); letter-spacing: var(--ls-heading); color: var(--text-heading); margin: 0; text-wrap: balance; }
.kan-h3 { font-family: var(--font-heading); font-weight: var(--fw-semibold); font-size: var(--fs-h3); line-height: var(--lh-h3); color: var(--text-heading); margin: 0; }
.kan-h4 { font-family: var(--font-ui); font-weight: var(--fw-semibold); font-size: var(--fs-h4); line-height: var(--lh-ui); color: var(--text-heading); margin: 0; }
.kan-lead { font-family: var(--font-body); font-weight: var(--fw-regular); font-size: var(--fs-lead); line-height: var(--lh-lead); color: var(--text-body); margin: 0; text-wrap: pretty; }
.kan-body { font-family: var(--font-body); font-weight: var(--fw-regular); font-size: var(--fs-body); line-height: var(--lh-body); color: var(--text-body); margin: 0; text-wrap: pretty; }
.kan-body-sm { font-family: var(--font-body); font-weight: var(--fw-regular); font-size: var(--fs-body-sm); line-height: var(--lh-body); color: var(--text-body); margin: 0; }
.kan-small { font-family: var(--font-body); font-size: var(--fs-small); line-height: 1.5; color: var(--text-muted); margin: 0; }
.kan-legal { font-family: var(--font-body); font-size: var(--fs-legal); line-height: 1.5; color: var(--text-muted); margin: 0; }
.kan-overline { font-family: var(--font-ui); font-weight: var(--fw-semibold); font-size: var(--fs-overline); line-height: 1.3; letter-spacing: var(--ls-caps); text-transform: uppercase; color: var(--text-muted); margin: 0; }
.kan-amount { font-family: var(--font-numeric); font-weight: var(--fw-bold); font-size: var(--fs-amount); line-height: 1.1; letter-spacing: var(--ls-numeric); font-variant-numeric: tabular-nums; color: var(--text-heading); margin: 0; }
.kan-numeric { font-variant-numeric: tabular-nums; letter-spacing: var(--ls-numeric); }
