/* The Data Center Fix — hub
   Rebuilt 2026-09-20. Numerals move to the margin in mono (Klim/Asterisk),
   claims and decisions share one rule-row primitive, nothing is a card. */

.cta-row { display: flex; flex-wrap: wrap; gap: var(--s-5); margin-top: var(--s-6); }

/* ---------- pullquote: set out by indent and scale, no bar, no fill ---------- */

.pullquote {
  font-family: var(--face-display);
  font-size: clamp(1.5rem, 1.1rem + 1.8vw, 2.1rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin: var(--s-7) 0 var(--s-7) var(--s-6);
  max-width: 26ch;
  text-wrap: balance;
}
@media (max-width: 40rem) { .pullquote { margin-left: 0; } }

/* ---------- claims + decisions: one primitive, marginal figures ----------
   The copy says each claim repairs the one before it. A grid of equal boxes
   asserts parity instead, which contradicts the argument. Rules with the
   numeral set in the margin read as sequence. */

.claims, .decisions {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--rule);
}
.claim, .decision {
  display: grid;
  grid-template-columns: 4.5rem minmax(0, 1fr);
  column-gap: var(--s-6);
  padding-block: var(--s-6);
  border-bottom: 1px solid var(--rule);
}
@media (max-width: 44rem) {
  .claim, .decision { grid-template-columns: 1fr; row-gap: var(--s-2); }
}

.claim__num, .decision__tag {
  font-family: var(--face-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ember);
  font-variant-numeric: tabular-nums;
  margin: 0;
  padding-top: 0.38rem;
}
.decision__tag--refuse { color: var(--danger); }

.claim h3, .decision h3 {
  font-size: var(--t-md);
  margin: 0 0 var(--s-3);
  max-width: var(--measure);
}
.decision h3 { margin-bottom: 0; }
.claim p, .decision p {
  margin-bottom: 0;
  color: var(--ink-muted);
  max-width: var(--measure);
}
/* the decision tag sits in the margin, so its h3 wrapper carries no weight */
.decision h3 { grid-column: 1; padding-top: 0.38rem; }
.decision p  { grid-column: 2; }
/* Without this reset the forced column survives the 1fr collapse and creates an
   implicit second column — decision prose measured 32 CPL at 375px. */
@media (max-width: 44rem) {
  .decision h3, .decision p { grid-column: 1; }
}

/* ---------- empty states: a dated line, never a grey box ----------
   And Other Stories ships 9 WooCommerce placeholder rectangles; they read as
   missing files. Fitzcarraldo ships a date. A date reads as editorial control. */

.empty {
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  padding-block: var(--s-7);
  max-width: var(--measure);
}
.empty p { margin-bottom: var(--s-3); }
.empty p:last-child { margin-bottom: 0; }
.empty__status {
  font-family: var(--face-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ember);
  margin-bottom: var(--s-4) !important;
}

/* A .claim has three children (numeral, heading, prose) in a two-column grid,
   so prose fell into the 4.5rem numeral column and measured 10 CPL. Everything
   that is not the marginal figure belongs in the reading column. */
.claim > :not(.claim__num) { grid-column: 2; }
@media (max-width: 44rem) { .claim > :not(.claim__num) { grid-column: 1; } }
