/* Typographic roles — Nullspace. Display = IBM Plex Mono 600 (xl/l are UPPERCASE, set by
   these classes — write copy in sentence case). Text = IBM Plex Sans. HUD/mono unchanged. */
.kd-display-xl{font-family:var(--kd-font-display);font-size:clamp(2.375rem,4.8vw,var(--kd-size-8xl));font-weight:var(--kd-weight-semibold);line-height:var(--kd-leading-tight);letter-spacing:var(--kd-tracking-display);text-transform:uppercase;margin:0}
.kd-display-l{font-family:var(--kd-font-display);font-size:clamp(1.875rem,3.4vw,var(--kd-size-6xl));font-weight:var(--kd-weight-semibold);line-height:var(--kd-leading-tight);letter-spacing:var(--kd-tracking-display);text-transform:uppercase;margin:0}
.kd-display-m{font-family:var(--kd-font-display);font-size:clamp(1.5rem,2.4vw,var(--kd-size-5xl));font-weight:var(--kd-weight-semibold);line-height:var(--kd-leading-snug);letter-spacing:var(--kd-tracking-display);margin:0}
.kd-h1{font-family:var(--kd-font-display);font-size:var(--kd-size-4xl);font-weight:var(--kd-weight-semibold);line-height:var(--kd-leading-snug);letter-spacing:var(--kd-tracking-display);margin:0}
.kd-h2{font-family:var(--kd-font-display);font-size:var(--kd-size-2xl);font-weight:var(--kd-weight-semibold);line-height:var(--kd-leading-snug);letter-spacing:var(--kd-tracking-tight);margin:0}
.kd-h3{font-family:var(--kd-font-display);font-size:var(--kd-size-lg);font-weight:var(--kd-weight-semibold);line-height:1.32;letter-spacing:var(--kd-tracking-tight);margin:0}
.kd-h4{font-family:var(--kd-font-text);font-size:var(--kd-size-md);font-weight:var(--kd-weight-semibold);line-height:1.4;letter-spacing:var(--kd-tracking-tight);margin:0}
.kd-body-l{font-size:var(--kd-size-lg);line-height:var(--kd-leading-relaxed);margin:0;max-width:var(--kd-measure-base);text-wrap:pretty}
.kd-body{font-size:var(--kd-size-md);line-height:var(--kd-leading-normal);margin:0;max-width:var(--kd-measure-base);text-wrap:pretty}
.kd-body-s{font-size:var(--kd-size-sm);line-height:var(--kd-leading-normal);margin:0;text-wrap:pretty}
.kd-caption{font-size:var(--kd-size-xs);line-height:1.45;color:var(--kd-text-tertiary);margin:0}
.kd-lead{font-size:var(--kd-size-xl);line-height:var(--kd-leading-relaxed);color:var(--kd-text-secondary);margin:0;max-width:var(--kd-measure-base);text-wrap:pretty}
/* HUD label — the signature small type. Uppercase mono, wide tracking. */
.kd-hud{font-family:var(--kd-font-mono);font-size:var(--kd-size-3xs);font-weight:var(--kd-weight-medium);letter-spacing:var(--kd-tracking-hud);text-transform:uppercase;color:var(--kd-text-tertiary);margin:0}
.kd-hud--accent{color:var(--kd-text-accent)}
.kd-hud--signal{color:var(--kd-text-signal)}
.kd-mono{font-family:var(--kd-font-mono);font-size:var(--kd-size-xs);letter-spacing:var(--kd-tracking-normal);font-variant-numeric:tabular-nums}
.kd-metric{font-family:var(--kd-font-mono);font-size:var(--kd-size-4xl);font-weight:var(--kd-weight-semibold);letter-spacing:var(--kd-tracking-tight);line-height:1;font-variant-numeric:tabular-nums}
/* Wordmark — kindrift is always lowercase mono. The em (or trailing _) takes cyan. */
.kd-wordmark{font-family:var(--kd-font-mono);font-weight:var(--kd-weight-semibold);letter-spacing:-0.05em;text-transform:lowercase;line-height:1;display:inline-block}
.kd-wordmark em{font-style:normal;color:var(--kd-cyan-400)}
.kd-wordmark--cursor::after{content:"_";color:var(--kd-cyan-400)}
