/* ==========================================================================
   Horizon Studio — Typography tokens
   One typeface does everything: Alliance No.2. The system contrasts a tight,
   heavy, all-caps DISPLAY voice against a quiet, light BODY voice. Editorial
   labels are wide-tracked uppercase. See VISUAL FOUNDATIONS in the readme.
   ========================================================================== */

:root {
  /* ---- Families ----------------------------------------------------- */
  --font-sans: "Alliance No.2", "Helvetica Neue", Arial, sans-serif;
  /* Mono fallback only — the brand has no bespoke mono; tabular numerals
     and code use a system mono so figures align. */
  --font-mono: ui-monospace, "SFMono-Regular", Menlo, monospace;

  /* ---- Weights ---------------------------------------- @kind font --- */
  --fw-light:     300;  /* @kind font */
  --fw-regular:   400;  /* @kind font */
  --fw-medium:    500;  /* @kind font */
  --fw-semibold:  600;  /* @kind font */
  --fw-bold:      700;  /* @kind font */
  --fw-extrabold: 800;  /* @kind font */
  --fw-black:     900;  /* @kind font */

  /* ---- Tracking ----------------------------------------------------- */
  --track-tight:   -0.03em;  /* large display — pull tight              */
  --track-snug:    -0.015em; /* headings                                */
  --track-normal:   0em;     /* body                                    */
  --track-label:    0.16em;  /* uppercase eyebrow / meta labels         */
  --track-wide:     0.28em;  /* spaced caps, vertical markers           */

  /* ---- Line heights ------------------------------------------------- */
  --leading-none:   0.92;    /* stacked display                         */
  --leading-tight:  1.04;
  --leading-snug:   1.18;
  --leading-body:   1.55;
  --leading-relaxed:1.7;

  /* ---- Type scale (rem; 1rem = 16px) -------------------------------- */
  --text-2xs:  0.6875rem;  /* 11px — micro labels                       */
  --text-xs:   0.75rem;    /* 12px — meta, captions                     */
  --text-sm:   0.875rem;   /* 14px                                      */
  --text-base: 1rem;       /* 16px — body                               */
  --text-md:   1.125rem;   /* 18px — lead body                          */
  --text-lg:   1.375rem;   /* 22px                                      */
  --text-xl:   1.75rem;    /* 28px                                      */
  --text-2xl:  2.25rem;    /* 36px                                      */
  --text-3xl:  3rem;       /* 48px                                      */
  --text-4xl:  4rem;       /* 64px                                      */
  --text-5xl:  5.5rem;     /* 88px                                      */
  --text-6xl:  7.5rem;     /* 120px — manifesto display                 */

  /* ---- Semantic roles ---------------------------------------------- */
  --role-display-size:    var(--text-6xl);
  --role-display-weight:  var(--fw-regular);  /* large display reads elegant at Regular */
  --role-display-leading: var(--leading-none);
  --role-display-track:   var(--track-tight);

  --role-title-size:      var(--text-3xl);
  --role-title-weight:    var(--fw-medium);
  --role-title-leading:   var(--leading-tight);
  --role-title-track:     var(--track-snug);

  --role-heading-size:    var(--text-xl);
  --role-heading-weight:  var(--fw-semibold);
  --role-heading-leading: var(--leading-snug);

  --role-body-size:       var(--text-base);
  --role-body-weight:     var(--fw-regular);
  --role-body-leading:    var(--leading-body);

  --role-lead-size:       var(--text-md);
  --role-lead-weight:     var(--fw-light);
  --role-lead-leading:    var(--leading-relaxed);

  --role-label-size:      var(--text-xs);
  --role-label-weight:    var(--fw-medium);
  --role-label-track:     var(--track-label);
}
