/* d0re components — shared colour, type, spacing, radius, layout and motion roles.
   Class prefix: d0-. Square everywhere (radius-none); discs only for geometry (radius-round). */

.d0 { background: var(--surface); color: var(--ink); font-family: var(--font-mono); font-size: var(--type-body-size); line-height: var(--type-body-line); }
.d0 *, .d0 *::before, .d0 *::after { box-sizing: border-box; }
.d0 :focus-visible { outline: var(--focus-width) solid var(--ink); outline-offset: var(--focus-offset); }
.d0 a { color: inherit; text-decoration: none; }

/* Eyebrow — the line above a heading */
.d0-eyebrow { margin: 0; color: var(--ink-soft); font: var(--type-eyebrow-weight) var(--type-eyebrow-size)/var(--type-eyebrow-line) var(--type-eyebrow-family); letter-spacing: var(--type-eyebrow-tracking); }

/* Headings */
.d0-h-page, .d0-h-section, .d0-h-card, .d0-h-item { margin: 0; font-family: var(--font-serif); font-weight: var(--type-display-page-weight); line-height: var(--type-display-page-line); text-wrap: balance; color: var(--ink); }
.d0-h-page { font-size: var(--type-display-page-fluid); }
.d0-h-section { font-size: var(--type-heading-section-fluid); letter-spacing: var(--type-heading-section-tracking); }
.d0-h-card { font-size: var(--type-heading-card-size); }
.d0-h-item { font-size: var(--type-heading-item-size); }
.d0-lede { max-width: var(--measure); margin: 0; color: var(--ink-muted); font-size: var(--type-lede-size); line-height: var(--type-lede-line); }
.d0-small { margin: 0; color: var(--ink-muted); font-size: var(--type-small-size); line-height: var(--type-small-line); }

/* Button — primary (filled ink) and outline */
.d0-button { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-xs); min-height: var(--control-min-height); padding: var(--space-2xs) var(--space-sm); border: var(--border-width) solid var(--ink); border-radius: var(--radius-none); font: var(--type-button-weight) var(--type-button-size)/var(--type-button-line) var(--type-button-family); letter-spacing: var(--type-button-tracking); cursor: pointer; transition: background var(--motion-fast), color var(--motion-fast); }
.d0-button--primary { background: var(--ink); color: var(--on-ink); }
.d0-button--primary:hover { background: transparent; color: var(--ink); }
.d0-button--outline { background: transparent; color: var(--ink); }
.d0-button--outline:hover { background: var(--ink); color: var(--on-ink); }

/* Text link — arrow says where it goes: → this site, ↗ leaves it, ↓ same page */
.d0-link { display: inline-flex; align-items: center; gap: var(--space-2xs); border-bottom: var(--border-width) solid currentColor; padding-bottom: 3px; color: var(--ink); font-size: var(--type-caption-size); letter-spacing: var(--type-nav-tracking); }
.d0-link:hover { color: var(--ink-muted); }

/* Status label — exactly four values */
.d0-status { display: inline-block; border: var(--border-width) solid currentColor; border-radius: var(--radius-none); padding: 5px 9px; color: var(--ink-muted); font: var(--type-status-weight) var(--type-status-size)/var(--type-status-line) var(--type-status-family); letter-spacing: var(--type-status-tracking); text-transform: uppercase; white-space: nowrap; }

/* Figure — a measured number and what it means */
.d0-figure { display: grid; gap: var(--space-2xs); padding-top: var(--space-sm); border-top: var(--border-width) solid var(--line); }
.d0-figure strong { font: var(--type-figure-weight) var(--type-figure-size)/var(--type-figure-line) var(--type-figure-family); color: var(--ink); }
.d0-figure span { color: var(--ink-soft); font-size: var(--type-caption-size); line-height: var(--type-caption-line); }

/* Card — a built part: kind, status, name, one paragraph, one figure, one link */
.d0-card { display: flex; flex-direction: column; gap: var(--space-xs); padding: var(--space-md); background: var(--surface); border: var(--border-width) solid var(--line); border-radius: var(--radius-none); }
.d0-card__top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-xs); }
.d0-card__kind { color: var(--ink-soft); font-size: var(--type-eyebrow-size); letter-spacing: var(--type-eyebrow-tracking); text-transform: uppercase; }
.d0-card .d0-link { align-self: flex-start; margin-top: 6px; }

/* Evidence list — research rows */
.d0-evidence { border-top: var(--border-width) solid var(--line); }
.d0-evidence a { display: grid; grid-template-columns: 100px 1fr auto; align-items: center; gap: var(--space-sm); padding: var(--space-sm) 0; border-bottom: var(--border-width) solid var(--line); }
.d0-evidence .type { color: var(--ink-soft); font-size: var(--type-eyebrow-size); letter-spacing: var(--type-nav-tracking); text-transform: uppercase; }
.d0-evidence strong { font: var(--type-heading-item-weight) var(--type-heading-item-size)/var(--type-heading-item-line) var(--type-heading-item-family); color: var(--ink); }
.d0-evidence a:hover strong { text-decoration: underline; text-underline-offset: .25em; }

/* Site header — wordmark, chapters, contact */
.d0-header { display: flex; align-items: center; gap: var(--space-md); min-height: var(--header-height); padding: 0 var(--gutter); background: var(--surface); border-bottom: var(--border-width) solid var(--line); }
.d0-wordmark { display: inline-flex; align-items: center; gap: var(--space-2xs); font-size: var(--type-body-size); font-weight: var(--type-eyebrow-weight); letter-spacing: var(--type-nav-tracking); color: var(--ink); }
.d0-wordmark img { width: var(--mark-size); height: var(--mark-size); }
.d0-wordmark .dim { color: var(--ink-soft); }
.d0-nav { display: flex; align-items: center; gap: var(--space-sm); margin-left: auto; white-space: nowrap; }
.d0-nav a { color: var(--ink-muted); font-size: var(--type-nav-size); letter-spacing: var(--type-nav-tracking); }
.d0-nav a[aria-current="page"], .d0-nav a:hover { color: var(--ink); }
.d0-nav .d0-nav__contact { border: var(--border-width) solid var(--ink-muted); padding: var(--space-2xs) var(--space-xs); color: var(--ink); }

/* Chapter end — the book's page turn */
.d0-chapter-end { padding: var(--space-xl) var(--gutter) var(--space-lg); background: var(--surface-raised); border-top: var(--border-width) solid var(--line); }
.d0-chapter-end__main { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: var(--gutter); }
.d0-chapter-end h2 { margin: var(--space-xs) 0 var(--space-2xs); font: var(--type-heading-section-weight) var(--type-heading-section-fluid)/var(--type-heading-section-line) var(--type-heading-section-family); color: var(--ink); }
.d0-chapter-end p { margin: 0; max-width: var(--measure); color: var(--ink-muted); font-size: var(--type-small-size); }
.d0-chapter-end__next { display: inline-flex; align-items: center; gap: var(--space-sm); min-height: var(--control-min-height); padding: var(--space-xs) var(--space-sm); border: var(--border-width) solid var(--ink-muted); color: var(--ink); font: var(--type-button-weight) var(--type-button-size)/var(--type-button-line) var(--type-button-family); letter-spacing: var(--type-button-tracking); }
.d0-chapter-end__next:hover { background: var(--ink); color: var(--on-ink); }

/* Footer */
.d0-footer { padding: var(--space-lg) var(--gutter) var(--space-md); background: var(--surface-deep); border-top: var(--border-width) solid var(--line); }
.d0-footer__row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-sm); }
.d0-footer__links { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-sm); }
.d0-footer__links a { color: var(--ink-muted); font-size: var(--type-nav-size); letter-spacing: var(--type-nav-tracking); }
.d0-footer__meta { margin-top: var(--space-sm); padding-top: var(--space-sm); border-top: var(--border-width) solid var(--line); color: var(--ink-soft); font-size: var(--type-caption-size); }
.d0-footer-nav { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-sm); padding-block: var(--space-sm); border-top: var(--border-width) solid var(--line); font-family: var(--font-mono); font-size: var(--type-nav-size); line-height: var(--type-nav-line); }
.d0-footer-nav a { color: var(--ink-muted); text-decoration: none; }
.d0-footer-nav a:hover, .d0-footer-nav a:focus-visible { color: var(--ink); }
.d0-footer-legal { margin: 0; color: var(--ink-soft); font-family: var(--font-mono); font-size: var(--type-caption-size); line-height: var(--type-caption-line); }
.d0-essay-credit { margin: var(--space-sm) 0; color: var(--ink-muted); font-family: var(--font-mono); font-size: var(--type-caption-size); line-height: var(--type-caption-line); }
.d0-essay-records { display: inline-flex; align-items: center; min-height: var(--control-min-height); margin: var(--space-sm) var(--gutter); color: var(--ink); font-family: var(--font-mono); font-size: var(--type-nav-size); letter-spacing: var(--type-nav-tracking); }

@media (max-width: 640px) {
  .d0-chapter-end__main { grid-template-columns: 1fr; }
  .d0-evidence a { grid-template-columns: 1fr auto; }
  .d0-evidence .type { grid-column: 1 / -1; }
  .d0-nav { gap: 16px; }
}
@media (prefers-reduced-motion: reduce) { .d0 * { transition-duration: .01ms !important; animation-duration: .01ms !important; } }
