/* MAGMA — typography tokens. Sizes/leading/tracking transcribed from the .fig. */
:root{
  --font-core:"Source Sans 3",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-script:Allura,"Snell Roundhand","Apple Chancery",cursive;
  --font-ui:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

  --fw-regular:400; /* @kind font */
  --fw-medium:500; /* @kind font */
  --fw-semibold:600; /* @kind font */
  --fw-bold:700; /* @kind font */

  /* Size ramp — the max of each clamp is the value in the source file.
     Sizes above 20px are fluid between 375 and 1280 (the desktop base);
     body copy and smaller stay fixed so paragraphs never shrink. */
  --fs-hero:clamp(38px,9.5vw,122px);  /* @kind spacing */      /* headline word rows                */
  --fs-mega:clamp(30px,6.2vw,80px);  /* @kind spacing */       /* stat values, script section title */
  --fs-display:clamp(30px,5.6vw,72px);  /* @kind spacing */    /* section titles                    */
  --fs-brandline:clamp(20px,2.7vw,35px);  /* @kind spacing */  /* "INFRASTRUCTURE" lockup           */
  --fs-headline:clamp(22px,2.3vw,30px);  /* @kind spacing */   /* row + card titles                 */
  --fs-title:clamp(19px,1.9vw,24px);  /* @kind spacing */      /* lede paragraphs, list titles      */
  --fs-subhead:clamp(17px,1.6vw,20px);  /* @kind spacing */    /* FAQ question                      */
  --fs-lead:18px;       /* supporting paragraph              */
  --fs-base:16px;       /* footer values                     */
  --fs-cta:15px;        /* large button label                */
  --fs-label:14px;      /* nav, eyebrow, body copy           */
  --fs-meta:13px;       /* footer field labels               */
  --fs-small:12px;      /* small button label                */
  --fs-micro:11px;      /* store-button kicker (Inter)       */

  /* Leading */
  --lh-tight:0.78;      /* @kind font */
  --lh-solid:1; /* @kind font */
  --lh-headline:34px; /* @kind font */
  --lh-title:28px; /* @kind font */
  --lh-lead:24px; /* @kind font */
  --lh-body:20px; /* @kind font */
  --lh-label:16px; /* @kind font */
  --lh-flat:13px;       /* @kind font */

  /* Tracking */
  --ls-hero:-0.07em; /* @kind font */
  --ls-display:-0.05em; /* @kind font */
  --ls-headline:-0.04em; /* @kind font */
  --ls-label:-0.02em; /* @kind font */
  --ls-meta:-0.01em; /* @kind font */
  --ls-cta:0.02em; /* @kind font */

  /* Composite text styles */
  --type-hero:var(--fw-regular) var(--fs-hero)/var(--lh-tight) var(--font-core);
  --type-script-hero:var(--fw-regular) var(--fs-mega)/var(--lh-tight) var(--font-script);
  --type-display:var(--fw-regular) var(--fs-display)/var(--lh-tight) var(--font-core);
  --type-stat:var(--fw-regular) var(--fs-mega)/var(--lh-tight) var(--font-core);
  --type-headline:var(--fw-regular) var(--fs-headline)/var(--lh-headline) var(--font-core);
  --type-title:var(--fw-medium) var(--fs-title)/var(--lh-title) var(--font-core);
  --type-subhead:var(--fw-medium) var(--fs-subhead)/var(--lh-title) var(--font-core);
  --type-lead:var(--fw-regular) var(--fs-lead)/var(--lh-lead) var(--font-core);
  --type-body:var(--fw-regular) var(--fs-label)/var(--lh-body) var(--font-core);
  --type-eyebrow:var(--fw-medium) var(--fs-label)/var(--lh-label) var(--font-core);
  --type-nav:var(--fw-medium) var(--fs-label)/var(--lh-flat) var(--font-core);
  --type-cta:var(--fw-medium) var(--fs-cta)/var(--lh-flat) var(--font-core);
  --type-cta-sm:var(--fw-medium) var(--fs-small)/var(--lh-flat) var(--font-core);
  --type-meta:var(--fw-semibold) var(--fs-meta)/var(--lh-flat) var(--font-core);
  --type-value:var(--fw-bold) var(--fs-base)/var(--lh-label) var(--font-core);

  /* Composites the page templates were spelling out by hand. Adding them here is
     what lets a template carry zero raw font shorthands. */
  --type-display-solid:var(--fw-regular) var(--fs-display)/var(--lh-solid) var(--font-core); /* section title, single line */
  --type-brandline:var(--fw-bold) var(--fs-brandline)/var(--lh-solid) var(--font-core);      /* "INFRASTRUCTURE" lockup */
  --type-script-step:var(--fw-regular) 30px/var(--lh-tight) var(--font-script);              /* 01. 02. 03. step numbers */
  --type-title-flat:var(--fw-regular) var(--fs-title)/var(--lh-solid) var(--font-core);      /* Umbrella list items */
  --type-prose:var(--fw-regular) var(--fs-lead)/28px var(--font-core);                       /* reading column */
  --type-lead-strong:var(--fw-medium) var(--fs-lead)/var(--lh-lead) var(--font-core);        /* hero fact lines */
  /* One step up from body, for copy the client found too small to read: the two
     columns beside a solution row. 16/24 rather than the lead's 18/24 because those
     columns are 262px on a desktop and 299 on a phone — at 18px the lines break at
     34 characters and the column reads as a list of fragments. 18.08.2026. */
  --type-body-lg:var(--fw-regular) var(--fs-base)/var(--lh-lead) var(--font-core);
  --type-pair:var(--fw-medium) var(--fs-title)/var(--lh-lead) var(--font-core);              /* EMI-regulated / Fully online */
  --type-pair-sub:var(--fw-medium) var(--fs-base)/var(--lh-lead) var(--font-core);           /* their sub-labels */
  --type-quote:var(--fw-regular) clamp(24px,3.4vw,44px)/1.16 var(--font-core);               /* pull quote */
  --type-script-mark:var(--fw-regular) clamp(48px,6.2vw,80px)/0.6 var(--font-script);        /* the quote's opening mark */
}
