:root {
  /* Poster scale — display steps are deliberately far apart, no gentle ramp */
  --size-poster: 8.5rem;  /* 136px — hero title only, one per screen */
  --size-d1: 5rem;        /* 80px */
  --size-d2: 3.25rem;     /* 52px */
  --size-d3: 2.25rem;     /* 36px */
  --size-h1: 1.625rem;    /* 26px */
  --size-h2: 1.25rem;     /* 20px */
  --size-body-lg: 1.125rem;
  --size-body: 1rem;
  --size-body-sm: 0.875rem;
  --size-label: 0.75rem;
  --size-micro: 0.6875rem;

  --lh-poster: 0.82; /* @kind other */
  --lh-display: 0.9; /* @kind other */
  --lh-heading: 1.1; /* @kind other */
  --lh-body: 1.6; /* @kind other */
  --lh-tight: 1.25; /* @kind other */

  --track-poster: -0.02em; /* @kind other */
  --track-label: 0.16em; /* @kind other */  /* mono labels are always letterspaced */
  --track-body: 0em; /* @kind other */

  --weight-poster: 900; /* @kind other */
  --weight-body: 400; /* @kind other */
  --weight-body-strong: 600; /* @kind other */

  /* Composed shorthands */
  --type-poster: var(--weight-poster) var(--size-poster) / var(--lh-poster) var(--font-poster);
  --type-d1: var(--weight-poster) var(--size-d1) / var(--lh-display) var(--font-poster);
  --type-d2: var(--weight-poster) var(--size-d2) / var(--lh-display) var(--font-poster);
  --type-d3: 400 var(--size-d3) / var(--lh-heading) var(--font-slab);
  --type-h1: 400 var(--size-h1) / var(--lh-heading) var(--font-slab);
  --type-body: var(--weight-body) var(--size-body) / var(--lh-body) var(--font-body);
  --type-label: 700 var(--size-label) / 1 var(--font-mono);
}
