/* ==========================================================================
   Base — typography, surface, focus
   ========================================================================== */

body {
  font-family: var(--font-ui);
  font-size: var(--size-base);
  line-height: var(--leading-body);
  letter-spacing: var(--tracking-body);
  color: var(--color-ink);
  background: var(--color-paper);
  overflow-x: hidden;
}

/* Display typography ------------------------------------------------------- */

.display {
  font-family: var(--font-display);
  font-weight: var(--weight-light);
  line-height: var(--leading-display);
  letter-spacing: var(--tracking-display);
  font-variation-settings: 'opsz' 144, 'SOFT' 30, 'WONK' 0;
  overflow-wrap: break-word;
  hyphens: manual;
}

.display--hero {
  font-size: var(--size-3xl);
  text-wrap: balance;
}

.display--section {
  font-size: var(--size-2xl);
  line-height: var(--leading-h2);
  letter-spacing: var(--tracking-h2);
  font-variation-settings: 'opsz' 96, 'SOFT' 20, 'WONK' 0;
  text-wrap: balance;
}

.display--sub {
  font-size: var(--size-xl);
  line-height: var(--leading-h2);
  letter-spacing: var(--tracking-h2);
  font-variation-settings: 'opsz' 72, 'SOFT' 20, 'WONK' 0;
}

.h3 {
  font-family: var(--font-display);
  font-weight: var(--weight-regular);
  font-size: var(--size-lg);
  line-height: var(--leading-h3);
  letter-spacing: var(--tracking-h3);
  font-variation-settings: 'opsz' 48, 'SOFT' 15, 'WONK' 0;
}

/* Body typography ---------------------------------------------------------- */

.lede {
  font-family: var(--font-display);
  font-weight: var(--weight-regular);
  font-style: italic;
  font-size: var(--size-md);
  line-height: var(--leading-long-form);
  letter-spacing: 0;
  color: var(--color-ink-secondary);
  max-width: var(--measure);
  font-variation-settings: 'opsz' 24, 'SOFT' 50, 'WONK' 1;
}

.prose {
  font-size: var(--size-base);
  line-height: var(--leading-long-form);
  max-width: var(--measure);
  color: var(--color-ink-secondary);
}

.prose p + p {
  margin-top: 1em;
}

/* Kicker — mono, uppercase, tracked out. Editorial fingerprint. */

.kicker {
  font-family: var(--font-mono);
  font-size: var(--size-xs);
  font-weight: var(--weight-regular);
  text-transform: uppercase;
  letter-spacing: var(--tracking-kicker);
  color: var(--color-marginalia);
  line-height: 1.2;
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
}

.kicker::before {
  content: '';
  display: inline-block;
  width: 1.8em;
  height: 1px;
  background: currentColor;
  flex-shrink: 0;
}

.kicker--no-rule::before {
  display: none;
}

/* Index number — large serif numeral, editorial chapter marker */

.index-num {
  font-family: var(--font-display);
  font-weight: var(--weight-light);
  font-size: var(--size-lg);
  color: var(--color-brand);
  letter-spacing: -0.04em;
  font-variation-settings: 'opsz' 48, 'SOFT' 20, 'WONK' 1;
  font-style: italic;
}

/* Small mono label — for specs, meta, nav numbers */

.mono-label {
  font-family: var(--font-mono);
  font-size: var(--size-xs);
  font-weight: var(--weight-regular);
  letter-spacing: var(--tracking-mono-label);
  text-transform: uppercase;
  color: var(--color-ink-tertiary);
}

.caption {
  font-family: var(--font-ui);
  font-size: var(--size-sm);
  line-height: var(--leading-caption);
  color: var(--color-ink-tertiary);
  letter-spacing: 0;
}

/* Tabular numerics for all numbers */
.mono, .index-num, .mono-label, .kicker {
  font-variant-numeric: tabular-nums;
}

/* Focus ring — brand, box-shadow (respects radius), never outline blue */

:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-paper), 0 0 0 4px var(--color-brand);
  border-radius: var(--radius-xs);
}

/* On dark surfaces */
[data-surface='dark'] :focus-visible {
  box-shadow: 0 0 0 2px var(--color-ink-surface), 0 0 0 4px var(--color-brand-light);
}

/* Selection on dark */
[data-surface='dark'] ::selection {
  background: var(--color-brand-light);
  color: var(--color-ink-surface);
}

/* Skip link ---------------------------------------------------------------- */

.skip-link {
  position: absolute;
  top: -100vh;
  left: 0;
  background: var(--color-ink);
  color: var(--color-paper);
  padding: var(--space-3) var(--space-5);
  font-family: var(--font-mono);
  font-size: var(--size-xs);
  z-index: var(--z-modal);
  letter-spacing: var(--tracking-mono-label);
  text-transform: uppercase;
}

.skip-link:focus,
.skip-link:focus-visible {
  top: var(--space-3);
  left: var(--space-3);
  outline: 2px solid var(--color-brand);
  outline-offset: 2px;
}
