/* ============================================================
   LDW · Fonts
   ------------------------------------------------------------
   Brand typeface: SURT EXTENDED — a geometric sans inspired by
   Norse mythology & Scandinavian architecture. It bridges a
   geometric sans with a human touch, giving text layouts an
   "unusual quirkiness" that is the signature of the LDW voice.

   Weights shipped with the brand:
     Regular   400
     Medium    500  — sub-headlines (Title Case)
     Bold      700  — strong emphasis
     Ultrabold 800  — headlines & footer captions (loud, ALL CAPS)

   ⚠ SURT EXTENDED IS DISPLAY-ONLY. It is a wide, extended face for
   headlines, sub-heads, display numerals and footer captions — NEVER
   for body paragraphs, long-form text, or anything smaller than a
   sub-heading (it gets too wide to read). **INTER** carries all body
   text. This split is enforced by the LDW brand-enforcer.

   INTER is also the brand's APPROVED FALLBACK (Aug 12 2026 guideline
   §4.3–4.4): in environments where Surt Extended cannot be embedded —
   PowerPoint, Word, external partner systems — set display roles in
   Inter too, using the fallback weights in tokens/typography.css.
   ============================================================ */

/* cyrillic-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/76d1e1d9-61c2-4091-a3f0-1131c1d5015f.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/67e35e6e-9574-4d21-925e-628b42d65dd3.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/5bf77b43-bbe2-4274-a26b-a4398bcdc68d.woff2") format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/79c04677-6a0d-4215-a965-cb77ad653fe6.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/e27f3c7a-f1d9-4ebd-8c29-dbfda2e5d504.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/5902c96d-692c-465e-a8de-19deb4de2c7c.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/4fd8be93-4fdd-4318-aa6c-caff7cbeb2c3.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/76d1e1d9-61c2-4091-a3f0-1131c1d5015f.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/67e35e6e-9574-4d21-925e-628b42d65dd3.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/5bf77b43-bbe2-4274-a26b-a4398bcdc68d.woff2") format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/79c04677-6a0d-4215-a965-cb77ad653fe6.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/e27f3c7a-f1d9-4ebd-8c29-dbfda2e5d504.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/5902c96d-692c-465e-a8de-19deb4de2c7c.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/4fd8be93-4fdd-4318-aa6c-caff7cbeb2c3.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/76d1e1d9-61c2-4091-a3f0-1131c1d5015f.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/67e35e6e-9574-4d21-925e-628b42d65dd3.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/5bf77b43-bbe2-4274-a26b-a4398bcdc68d.woff2") format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/79c04677-6a0d-4215-a965-cb77ad653fe6.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/e27f3c7a-f1d9-4ebd-8c29-dbfda2e5d504.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/5902c96d-692c-465e-a8de-19deb4de2c7c.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/4fd8be93-4fdd-4318-aa6c-caff7cbeb2c3.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/76d1e1d9-61c2-4091-a3f0-1131c1d5015f.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/67e35e6e-9574-4d21-925e-628b42d65dd3.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/5bf77b43-bbe2-4274-a26b-a4398bcdc68d.woff2") format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/79c04677-6a0d-4215-a965-cb77ad653fe6.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/e27f3c7a-f1d9-4ebd-8c29-dbfda2e5d504.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/5902c96d-692c-465e-a8de-19deb4de2c7c.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/4fd8be93-4fdd-4318-aa6c-caff7cbeb2c3.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


@font-face {
  font-family: 'Surt Extended';
  src: url("/assets/f60e8f71-a6eb-4ac3-a1de-9df48eafec3a.ttf") format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Surt Extended';
  src: url("/assets/ef85fd9b-4eab-4c57-9826-8604bb13a9f6.ttf") format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Surt Extended';
  src: url("/assets/d258e624-2ef4-410e-aad2-0bf81e8c78d1.ttf") format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Surt Extended';
  src: url("/assets/2ce7cad9-4c47-4105-9dc2-3822ee5482b0.ttf") format('truetype');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Surt Extended = DISPLAY ONLY (headlines, sub-heads, captions, big numerals) */
  --ldw-font-display: 'Surt Extended', 'Arial Narrow', system-ui, sans-serif;
  /* Inter = ALL body / UI / long-form text */
  --ldw-font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --ldw-font-mono: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;

  /* Semantic aliases */
  --font-display: var(--ldw-font-display);  /* headings only */
  --font-body: var(--ldw-font-sans);        /* body / UI */
  --font-sans: var(--ldw-font-sans);
  --font-mono: var(--ldw-font-mono);
}

/* ============================================================
   LDW · Color
   ------------------------------------------------------------
   The brand palette is tight: a deep teal ("Deep Current"), an
   electric cyan ("Clarity Beam"), a near-black ("Shadow
   Graphite") and white ("Insight White"), unified by the
   "Insight Flow" gradient. The neutral ramp and supporting
   tints below are derived from those four anchors so UI can be
   built without inventing colors off-brand.

   Pantone references per DD.NYC® × LDW Brand Guidelines, Aug 12 2026.
   ============================================================ */

:root {
  /* ---- Brand anchors (from the guideline) ---- */
  --ldw-deep-current: #0A4F6B;   /* Primary · Pantone 2210 C */
  --ldw-clarity-beam: #18FFFF;   /* Accent  · Pantone 319 C   */
  --ldw-shadow-graphite: #141615;/* Neutral Black C          */
  --ldw-insight-white: #FFFFFF;  /* Pantone 000 C            */
  --ldw-light-gray: #F2F4F6;     /* Light Gray · table alt rows / soft fill */

  /* ---- Deep Current ramp (primary teal) ---- */
  --ldw-deep-50:  #eef5f8;
  --ldw-deep-100: #d4e6ee;
  --ldw-deep-200: #a7cddc;
  --ldw-deep-300: #6ba8c0;
  --ldw-deep-400: #357f9c;
  --ldw-deep-500: #0A4F6B;  /* = Deep Current */
  --ldw-deep-600: #094459;
  --ldw-deep-700: #073647;
  --ldw-deep-800: #052735;
  --ldw-deep-900: #041c27;

  /* ---- Clarity Beam ramp (cyan accent) ---- */
  --ldw-beam-50:  #e2ffff;
  --ldw-beam-100: #b8ffff;
  --ldw-beam-300: #5bffff;
  --ldw-beam-500: #18FFFF;  /* = Clarity Beam (use sparingly) */
  --ldw-beam-600: #00d6d6;  /* legible cyan for fills on light */
  --ldw-beam-700: #00a3a3;  /* cyan that passes text contrast  */

  /* ---- Graphite-cool neutral ramp ---- */
  --ldw-neutral-0:   #ffffff;
  --ldw-neutral-50:  #f6f8f8;
  --ldw-neutral-100: #eef1f1;
  --ldw-neutral-200: #e0e4e4;
  --ldw-neutral-300: #c5cacb;
  --ldw-neutral-400: #9aa1a2;
  --ldw-neutral-500: #757c7e;
  --ldw-neutral-600: #565d5f;
  --ldw-neutral-700: #3b4143;
  --ldw-neutral-800: #24292a;
  --ldw-neutral-900: #141615;  /* = Shadow Graphite */

  /* ---- The Insight Flow gradient ---- */
  --ldw-gradient-flow: linear-gradient(217deg, #141615 0%, #0A4F6B 52%, #18FFFF 100%); /* @kind color */
  --ldw-gradient-flow-soft: linear-gradient(217deg, #052735 0%, #0A4F6B 55%, #1aa6b8 100%); /* @kind color */

  /* ---- Status (derived, kept within the cool family) ---- */
  --ldw-success: #1f8a6d;
  --ldw-warning: #c9881f;
  --ldw-danger:  #c0463c;
  --ldw-info:    var(--ldw-deep-500);

  /* =========================================================
     Semantic aliases — reference THESE in components
     ========================================================= */
  --color-bg:            var(--ldw-neutral-0);
  --color-bg-subtle:     var(--ldw-neutral-50);
  --color-surface:       var(--ldw-neutral-0);
  --color-surface-raised:var(--ldw-neutral-0);
  --color-surface-sunken:var(--ldw-neutral-100);
  --color-ink:           var(--ldw-shadow-graphite);

  --color-text:          var(--ldw-neutral-900);
  --color-text-muted:    var(--ldw-neutral-600);
  --color-text-subtle:   var(--ldw-neutral-500);
  --color-text-inverse:  var(--ldw-insight-white);
  --color-text-on-primary:var(--ldw-insight-white);

  --color-primary:       var(--ldw-deep-current);
  --color-primary-hover: var(--ldw-deep-600);
  --color-primary-active:var(--ldw-deep-700);
  --color-primary-soft:  var(--ldw-deep-50);

  --color-accent:        var(--ldw-clarity-beam);
  --color-accent-strong: var(--ldw-beam-700);
  --color-accent-soft:   var(--ldw-beam-50);

  --color-border:        var(--ldw-neutral-200);
  --color-border-strong: var(--ldw-neutral-300);
  --color-focus-ring:    var(--ldw-beam-600);

  /* Tables — DERIVED house pattern, not specified in the Aug 12 2026
     guideline: Deep Current header, alternating white / Light Gray
     rows, a Clarity-Beam accent rule. Confirm with LDW before
     presenting as official. */
  --color-table-header-bg:   var(--ldw-deep-current);
  --color-table-header-text: var(--ldw-insight-white);
  --color-table-row:         var(--ldw-insight-white);
  --color-table-row-alt:     var(--ldw-light-gray);
  --color-table-accent:      var(--ldw-clarity-beam);

  --color-success: var(--ldw-success);
  --color-warning: var(--ldw-warning);
  --color-danger:  var(--ldw-danger);
}

/* ============================================================
   LDW · Typography
   ------------------------------------------------------------
   Two faces, four roles — per DD.NYC® × LDW Brand Guidelines,
   Aug 12 2026 (§4.2 Surt, §4.4 Inter fallback):

     HEADLINE   Surt Extended Ultrabold(800) · lh 120% · −3% · ALL CAPS
     SUB-HEAD   Surt Extended Medium(500)    · lh 100% · +2% · Title Case
     BODY       Inter Regular(400)           · lh 125% · +3% · sentence
     CAPTION /  Surt Extended Ultrabold(800) · lh 100% · +3% · ALL CAPS
       FOOTER

   INTER FALLBACK — the guideline approves Inter wherever Surt
   Extended cannot be embedded (PowerPoint, Word, partner systems).
   Same tracking and leading; the headline weight differs:

     HEADLINE   Inter Semi Bold(600) · lh 120% · −3% · ALL CAPS
     SUB-HEAD   Inter Medium(500)    · lh 100% · +2% · Title Case
     BODY       Inter Regular(400)   · lh 125% · +3% · sentence
     CAPTION    Inter Ultrabold(800) · lh 100% · +3% · ALL CAPS

   Use .ldw-headline-fallback / .ldw-caption-fallback for that path.

   Special characters: the classic "&" is the recommended ampersand.

   Surt Extended is DISPLAY-ONLY (headlines, sub-heads, footer
   captions, big numerals). Inter carries every body / UI text run.
   ============================================================ */

:root {
  /* ---- Weights ---- */
  --font-weight-regular: 400;
  --font-weight-medium:  500;
  --font-weight-semibold:600;  /* Inter headline (fallback path) */
  --font-weight-bold:    700;
  --font-weight-ultra:   800;

  /* ---- Type scale (16px base) ---- */
  --text-2xs: 0.6875rem; /* 11px */
  --text-xs:  0.75rem;   /* 12px */
  --text-sm:  0.875rem;  /* 14px */
  --text-base:1rem;      /* 16px */
  --text-md:  1.125rem;  /* 18px */
  --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 */

  /* ---- Line heights ---- */
  --leading-headline: 1.2;
  --leading-subhead:  1.0;
  --leading-body:     1.25;
  --leading-relaxed:  1.6;
  --leading-flat:     1.0;

  /* ---- Letter spacing ---- */
  --tracking-headline: -0.03em;  /* −3% */
  --tracking-subhead:   0.02em;  /* +2% */
  --tracking-body:      0.03em;  /* +3% */
  --tracking-caption:   0.03em;  /* +3% */
  --tracking-wide:      0.12em;  /* eyebrows / overlines */

  /* =========================================================
     Role bundles
     ========================================================= */
  --type-display:
      var(--font-weight-ultra) var(--text-5xl)/var(--leading-headline) var(--font-display);
  --type-headline:
      var(--font-weight-ultra) var(--text-3xl)/var(--leading-headline) var(--font-display);
  --type-subhead:
      var(--font-weight-medium) var(--text-xl)/var(--leading-subhead) var(--font-display);
  --type-title:
      var(--font-weight-bold) var(--text-lg)/1.2 var(--font-body);
  --type-body:
      var(--font-weight-regular) var(--text-base)/var(--leading-body) var(--font-body);
  --type-caption:
      var(--font-weight-ultra) var(--text-xs)/var(--leading-flat) var(--font-display);

  /* Inter fallback bundles — Surt-unavailable environments */
  --type-headline-fallback:
      var(--font-weight-semibold) var(--text-3xl)/var(--leading-headline) var(--font-body);
  --type-caption-fallback:
      var(--font-weight-ultra) var(--text-xs)/var(--leading-flat) var(--font-body);
}

/* ------------------------------------------------------------
   Helper classes — encode the brand-enforcer roles verbatim.
   ------------------------------------------------------------ */
.ldw-headline {
  font: var(--type-headline);
  letter-spacing: var(--tracking-headline);
  text-transform: uppercase;
  color: var(--color-text);
  text-wrap: balance;
}
.ldw-subhead {
  font: var(--type-subhead);
  letter-spacing: var(--tracking-subhead);
  /* Title Case — set in content, not transformed */
  color: var(--color-text);
}
.ldw-eyebrow {
  font: var(--font-weight-medium) var(--text-xs)/var(--leading-flat) var(--font-body);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-text-muted);
}
.ldw-body {
  font: var(--type-body);
  letter-spacing: var(--tracking-body);
  color: var(--color-text);
  text-wrap: pretty;
}
.ldw-headline-fallback {
  font: var(--type-headline-fallback);
  letter-spacing: var(--tracking-headline);
  text-transform: uppercase;
  color: var(--color-text);
  text-wrap: balance;
}
.ldw-caption-fallback {
  font: var(--type-caption-fallback);
  letter-spacing: var(--tracking-caption);
  text-transform: uppercase;
  color: var(--color-text-muted);
}
.ldw-caption {
  font: var(--type-caption);
  letter-spacing: var(--tracking-caption);
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* ============================================================
   LDW · Base resets & primitives
   Light, opt-in resets so specimen cards and kits share a floor.
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font: var(--type-body);
  letter-spacing: var(--tracking-body);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Brand display defaults */
h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: var(--font-weight-ultra);
  letter-spacing: var(--tracking-headline);
  color: var(--color-text);
  margin: 0 0 0.5em;
}
h1 { font-size: var(--text-3xl); line-height: var(--leading-headline); }
h2 { font-size: var(--text-2xl); line-height: var(--leading-headline); }
h3 { font-size: var(--text-xl); line-height: var(--leading-subhead); }

p { margin: 0 0 1em; }

a { color: var(--color-primary); text-decoration: none; }
a:hover { color: var(--color-primary-hover); }

::selection { background: var(--ldw-beam-100); color: var(--ldw-deep-900); }

/* Utility: the Insight Flow gradient surface */
.ldw-surface-flow {
  background: var(--ldw-gradient-flow);
  color: var(--color-text-inverse);
}
.ldw-surface-graphite {
  background: var(--ldw-shadow-graphite);
  color: var(--color-text-inverse);
}
.ldw-surface-deep {
  background: var(--ldw-deep-current);
  color: var(--color-text-inverse);
}

/* ------------------------------------------------------------
   Diagonal Slash — the signature LDW design motif. A line running
   top-right → bottom-left, echoing the slash gap in the mark.
   Add `.ldw-slash` to any positioned container for a decorative
   diagonal; tune with --slash-color / --slash-weight / --slash-opacity.
   ------------------------------------------------------------ */
.ldw-slash {
  position: relative;
  overflow: hidden;
}
.ldw-slash::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    225deg,
    transparent calc(50% - (var(--slash-weight, 2px) / 2)),
    var(--slash-color, var(--ldw-clarity-beam)) calc(50% - (var(--slash-weight, 2px) / 2)),
    var(--slash-color, var(--ldw-clarity-beam)) calc(50% + (var(--slash-weight, 2px) / 2)),
    transparent calc(50% + (var(--slash-weight, 2px) / 2))
  );
  opacity: var(--slash-opacity, 1);
}

/* A standalone diagonal divider rule (top-right → bottom-left). */
.ldw-slash-divider {
  height: 2px;
  border: 0;
  background: var(--ldw-deep-current);
  transform: skewY(-1.4deg);
  transform-origin: left;
}


  a { color: var(--ldw-deep-current); text-decoration: none; }
  a:hover { color: var(--color-primary-hover); }
  input, textarea, button { font: inherit; color: inherit; }
  textarea { resize: vertical; }
