/* ===========================================================================
   FEDUCCE — Typography
   One voice: a tight neo-grotesque. Heavy + condensed-tracking display caps
   for headlines and the wordmark; clean regular weights for copy; wide-tracked
   uppercase for the bracketed micro-labels that frame every layout.

   SUBSTITUTION: the source brand uses a Helvetica-Neue / Neue-Haas-Grotesk-
   Display style grotesque. Pending the licensed files, we ship ARCHIVO
   (Google Fonts) as the nearest high-quality neo-grotesque.
   =========================================================================== */

:root {
  /* --- Families --------------------------------------------------------- */
  --font-display: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-sans:    "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-body:    var(--font-sans);
  /* The LOGOTYPE is set in true Helvetica (Neue) — Bold weight, near-zero
     tracking. Kept separate from --font-display so the wordmark reads as
     Helvetica even though body/display ship with the Archivo substitute. */
  --font-logo:    "Helvetica Neue", "Helvetica", "Arial", sans-serif;

  /* --- Weights ---------------------------------------------------------- */
  --fw-light:    300; /* @kind other */
  --fw-regular:  400; /* @kind other */
  --fw-medium:   500; /* @kind other */
  --fw-semibold: 600; /* @kind other */
  --fw-bold:     700; /* @kind other */
  --fw-black:    800; /* @kind other */  /* wordmark + hero display */

  /* --- Type scale (px in rem, 16px base) -------------------------------- */
  --text-3xs: 0.625rem;  /* 10px — micro index numerals */
  --text-2xs: 0.6875rem; /* 11px — bracketed labels */
  --text-xs:  0.75rem;   /* 12px — meta, captions */
  --text-sm:  0.8125rem; /* 13px — fine print, table */
  --text-base:0.9375rem; /* 15px — body */
  --text-md:  1.0625rem; /* 17px — lead body */
  --text-lg:  1.375rem;  /* 22px — sub-headers */
  --text-xl:  1.875rem;  /* 30px */
  --text-2xl: 2.75rem;   /* 44px */
  --text-3xl: 4rem;      /* 64px */
  --text-4xl: 5.75rem;   /* 92px — hero display */
  --text-5xl: 8rem;      /* 128px — poster wordmark */

  /* --- Line heights ----------------------------------------------------- */
  --leading-none:  0.92;  /* stacked display headlines */
  --leading-tight: 1.05;
  --leading-snug:  1.25;
  --leading-body:  1.55;  /* paragraph copy */
  --leading-loose: 1.7;

  /* --- Letter spacing --------------------------------------------------- */
  --tracking-tighter: -0.04em; /* large display caps */
  --tracking-tight:   -0.02em;
  --tracking-normal:  0em;
  --tracking-wide:    0.08em;
  --tracking-wider:   0.14em;  /* bracketed micro-labels */
  --tracking-widest:  0.22em;  /* EST. 2024 / frame labels */

  /* =========================================================================
     Semantic roles
     ========================================================================= */
  --type-wordmark-spacing: -0.01em;
  --type-display-weight:   var(--fw-black);
  --type-display-spacing:  var(--tracking-tighter);
  --type-display-leading:  var(--leading-none);

  --type-label-size:    var(--text-2xs);
  --type-label-spacing: var(--tracking-wider);
  --type-label-weight:  var(--fw-medium);
}

/* ---- Optional utility classes (handy in cards & kits) ------------------- */
.fd-display {
  font-family: var(--font-display);
  font-weight: var(--type-display-weight);
  letter-spacing: var(--type-display-spacing);
  line-height: var(--type-display-leading);
  text-transform: uppercase;
}
.fd-wordmark {
  font-family: var(--font-logo);
  font-weight: var(--fw-bold);
  letter-spacing: var(--type-wordmark-spacing);
  text-transform: uppercase;
}
.fd-label {
  font-family: var(--font-sans);
  font-size: var(--type-label-size);
  font-weight: var(--type-label-weight);
  letter-spacing: var(--type-label-spacing);
  text-transform: uppercase;
}
.fd-body {
  font-family: var(--font-body);
  font-weight: var(--fw-regular);
  font-size: var(--text-base);
  line-height: var(--leading-body);
  letter-spacing: var(--tracking-normal);
}
