/* Sussex Audio — Typography tokens
   One sans voice (Geist) flexed at fine weight increments; mono (Geist Mono) reserved
   for eyebrows & captions. Weight, not opacity, carries hierarchy on body copy.
   Negative letter-spacing scales with size; line-height tight on display, open on body. */

:root {
  /* Family */
  --font-sans: 'Geist', 'SF Pro Display', system-ui, -apple-system, sans-serif;
  --font-mono: 'Geist Mono', 'SF Mono', menlo, ui-monospace, monospace;

  /* Fine-grained weight axis (the whole system pulls from this set only) */
  --w-thin: 320;    /* @kind other */
  --w-light: 330;   /* @kind other */
  --w-book: 340;    /* @kind other */
  --w-medium: 480;  /* @kind other */
  --w-semi: 540;    /* @kind other */
  --w-bold: 700;    /* @kind other */
  --w-black: 800;   /* @kind other */ /* FreqKey display lockups */

  /* ---- Display ---- */
  --display-xl-size: 86px;  --display-xl-weight: 340; --display-xl-lh: 1.0; /* @kind other */  --display-xl-ls: -1.72px;
  --display-lg-size: 64px;  --display-lg-weight: 340; --display-lg-lh: 1.1; /* @kind other */  --display-lg-ls: -0.96px;

  /* ---- Headline / subhead ---- */
  --headline-size: 26px;    --headline-weight: 540;  --headline-lh: 1.35; /* @kind other */ --headline-ls: -0.26px;
  --subhead-size: 26px;     --subhead-weight: 340;   --subhead-lh: 1.35; /* @kind other */  --subhead-ls: -0.26px;
  --card-title-size: 24px;  --card-title-weight: 700; --card-title-lh: 1.45; /* @kind other */ --card-title-ls: 0px;

  /* ---- Body ---- */
  --body-lg-size: 20px;     --body-lg-weight: 330; --body-lg-lh: 1.4; /* @kind other */  --body-lg-ls: -0.14px;
  --body-size: 18px;        --body-weight: 320;    --body-lh: 1.45; /* @kind other */    --body-ls: -0.26px;
  --body-sm-size: 16px;     --body-sm-weight: 330; --body-sm-lh: 1.45; /* @kind other */ --body-sm-ls: -0.14px;

  /* ---- Interactive ---- */
  --link-size: 20px;        --link-weight: 480; --link-lh: 1.4; /* @kind other */ --link-ls: -0.10px;
  --button-size: 20px;      --button-weight: 480; --button-lh: 1.4; /* @kind other */ --button-ls: -0.10px;

  /* ---- Mono taxonomy (always uppercase, positive tracking) ---- */
  --eyebrow-size: 18px;     --eyebrow-weight: 400; --eyebrow-lh: 1.3; /* @kind other */ --eyebrow-ls: 0.54px;
  --caption-size: 12px;     --caption-weight: 400; --caption-lh: 1.0; /* @kind other */ --caption-ls: 0.60px;
}

/* ---- Type role utility classes ---- */
.ds-display-xl { font: var(--display-xl-weight) var(--display-xl-size)/var(--display-xl-lh) var(--font-sans); letter-spacing: var(--display-xl-ls); font-feature-settings: "kern"; }
.ds-display-lg { font: var(--display-lg-weight) var(--display-lg-size)/var(--display-lg-lh) var(--font-sans); letter-spacing: var(--display-lg-ls); font-feature-settings: "kern"; }
.ds-headline   { font: var(--headline-weight) var(--headline-size)/var(--headline-lh) var(--font-sans); letter-spacing: var(--headline-ls); }
.ds-subhead    { font: var(--subhead-weight) var(--subhead-size)/var(--subhead-lh) var(--font-sans); letter-spacing: var(--subhead-ls); }
.ds-card-title { font: var(--card-title-weight) var(--card-title-size)/var(--card-title-lh) var(--font-sans); letter-spacing: var(--card-title-ls); }
.ds-body-lg    { font: var(--body-lg-weight) var(--body-lg-size)/var(--body-lg-lh) var(--font-sans); letter-spacing: var(--body-lg-ls); }
.ds-body       { font: var(--body-weight) var(--body-size)/var(--body-lh) var(--font-sans); letter-spacing: var(--body-ls); }
.ds-body-sm    { font: var(--body-sm-weight) var(--body-sm-size)/var(--body-sm-lh) var(--font-sans); letter-spacing: var(--body-sm-ls); }
.ds-link       { font: var(--link-weight) var(--link-size)/var(--link-lh) var(--font-sans); letter-spacing: var(--link-ls); }
.ds-eyebrow    { font: var(--eyebrow-weight) var(--eyebrow-size)/var(--eyebrow-lh) var(--font-mono); letter-spacing: var(--eyebrow-ls); text-transform: uppercase; }
.ds-caption    { font: var(--caption-weight) var(--caption-size)/var(--caption-lh) var(--font-mono); letter-spacing: var(--caption-ls); text-transform: uppercase; }
