/* =====================================================================
   OATH RESEARCH RATINGS — Editorial Grid Magazine
   Paper-warm magazine-stock ground + inked-charcoal dominant ink +
   vermilion single chromatic accent. Playfair Display Didone display
   + Source Sans 3 humanist body + DM Mono slab-grotesque numerics.
   Asymmetric inner+outer column rhythm. Drop-caps, pull-quotes,
   chapter-opener oversized numerals. First-class editorial score-bar
   primitive at three scales. Zero animation beyond color-only.
   ===================================================================== */

:root {
  /* Primary inked-charcoal */
  --primary:               #0E0E0C;
  --primary-50:            #F1F0EC;
  --primary-100:           #D9D7CF;
  --primary-200:           #B8B5AB;
  --primary-500:           #0E0E0C;
  --primary-700:           #1A1A17;
  --primary-900:           #050504;

  /* Secondary near-ink */
  --secondary:             #1F1F1B;

  /* Vermilion accent */
  --accent:                #C42B1C;
  --accent-50:             #FAE5E1;
  --accent-100:            #F4C5BE;
  --accent-500:            #C42B1C;
  --accent-700:            #9A1F12;
  --accent-900:            #6B140A;

  /* Warm-paper neutrals */
  --neutral-0:             #FFFFFF;
  --neutral-50:            #FBF7EE;
  --neutral-75:            #F4EFE2;
  --neutral-100:           #ECE7D6;
  --neutral-150:           #DAD3BD;
  --neutral-200:           #C7BFA4;
  --neutral-300:           #A99E7E;
  --neutral-400:           #7F745A;
  --neutral-500:           #5A5240;
  --neutral-600:           #3F392C;
  --neutral-700:           #2A2620;
  --neutral-800:           #1F1B16;
  --neutral-900:           #0E0E0C;

  /* Surfaces + grounds */
  --bg:                    #FBF7EE;
  --bg-paper:              #FBF7EE;
  --bg-card:               #FFFFFF;
  --bg-inset:              #F4EFE2;
  --surface:               #FBF7EE;
  --surface-card:          #FFFFFF;
  --surface-inset:         #F4EFE2;
  --surface-inverse:       #0E0E0C;

  /* Text */
  --text:                  #1F1F1B;
  --text-strong:           #0E0E0C;
  --text-display:          #0E0E0C;
  --text-muted:            #5A5240;
  --text-dim:              #7F745A;
  --text-on-dark:          #FBF7EE;
  --text-on-accent:        #FFFFFF;

  /* Rules */
  --rule:                  #DAD3BD;
  --rule-strong:           #A99E7E;
  --rule-inked:            #0E0E0C;
  --rule-accent:           #C42B1C;

  /* Score-bar */
  --score-fill-inked:      #0E0E0C;
  --score-fill-accent:     #C42B1C;
  --score-track:           #ECE7D6;
  --score-tick:            #A99E7E;

  /* Weight badge */
  --weight-badge-fill:     #0E0E0C;
  --weight-badge-text:     #FBF7EE;

  /* Status */
  --success:               #0E0E0C;
  --warning:               #8A5A0F;
  --danger:                #C42B1C;
  --info:                  #0E0E0C;

  /* Layout */
  --max-width:             78rem;
  --content-width:         44rem;
  --feature-width:         68rem;
  --container-px:          clamp(1rem, 4vw, 2.75rem);
  --outer-margin:          clamp(1.5rem, 5vw, 4rem);

  /* Typography stacks */
  --font-serif:            'Playfair Display', 'Bodoni 72', 'Didot', 'Garamond', Georgia, 'Times New Roman', serif;
  --font-sans:             'Source Sans 3', 'Source Sans Pro', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono:             'DM Mono', 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace;

  /* Motion */
  --transition:            200ms ease-out;
}

/* ======= RESET ======= */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 100%; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0ms !important; animation-duration: 0ms !important; }
}
body {
  font-family: var(--font-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "kern" 1, "liga" 1;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--text-strong); text-decoration: none; transition: color var(--transition); }
a:hover, a:focus-visible { color: var(--accent); }
button { font: inherit; cursor: pointer; background: none; border: 0; color: inherit; }
input, textarea, select, button { font-family: inherit; }
:focus-visible {
  outline: 2.5px solid var(--accent);
  outline-offset: 3px;
  box-shadow: 0 0 0 5px var(--bg);
}

/* ======= TYPOGRAPHY ======= */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-serif);
  color: var(--text-display);
  font-weight: 700;
  line-height: 1.12;
}
h1 {
  font-size: clamp(2.25rem, 4.75vw, 3.625rem);
  line-height: 1.04;
  letter-spacing: -0.025em;
  font-weight: 800;
}
h2 {
  font-size: clamp(1.75rem, 3.25vw, 2.5rem);
  line-height: 1.12;
  letter-spacing: -0.02em;
  font-weight: 700;
}
h3 {
  font-size: 1.4375rem;
  line-height: 1.2;
  letter-spacing: -0.01em;
  font-weight: 600;
}
h4 {
  font-size: 1.0625rem;
  letter-spacing: -0.005em;
  font-weight: 600;
}
p { margin-bottom: 1.25em; }
p:last-child { margin-bottom: 0; }
.lede {
  font-size: 1.25rem;
  line-height: 1.5;
  letter-spacing: -0.005em;
  color: var(--neutral-700);
  font-style: italic;
}
small, .small { font-size: 0.875rem; line-height: 1.55; }
.micro { font-size: 0.8125rem; line-height: 1.5; }

ul, ol { margin-bottom: 1.25em; padding-left: 1.5em; }
ul li, ol li { margin-bottom: 0.5em; line-height: 1.6; }
ul li::marker { color: var(--accent); }
ol li::marker { color: var(--neutral-500); font-family: var(--font-mono); font-weight: 500; }
strong { font-weight: 600; color: var(--text-strong); }
em { font-style: italic; color: var(--neutral-700); }
blockquote { margin: 1.5em 0; padding-left: 1rem; border-left: 2px solid var(--rule-accent); font-style: italic; color: var(--neutral-700); }
code, .mono {
  font-family: var(--font-mono);
  font-size: 0.95em;
  font-weight: 500;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 1px;
}
sup { font-size: 0.7em; }
sup a {
  color: var(--accent);
  font-family: var(--font-mono);
  font-weight: 500;
  text-decoration: none;
}
sup a:hover { color: var(--accent-700); }

/* Eyebrow & small-caps labels */
.eyebrow {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.eyebrow--inked { color: var(--text-strong); }
.eyebrow-square {
  width: 8px;
  height: 8px;
  background: var(--accent);
  display: inline-block;
}
.small-caps-label {
  font-family: var(--font-sans);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}

/* ======= LAYOUT ======= */
.container {
  width: 100%;
  max-width: var(--max-width);
  margin: 0 auto;
  padding-left: var(--container-px);
  padding-right: var(--container-px);
}
.container--content {
  max-width: var(--content-width);
}
.container--feature {
  max-width: var(--feature-width);
}
main {
  flex: 1 0 auto;
  display: block;
}

/* Asymmetric inner+outer column layout */
.editorial-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem 1.75rem;
}
@media (min-width: 1024px) {
  .editorial-grid {
    grid-template-columns: minmax(0, 8fr) minmax(0, 4fr);
    gap: 2.5rem 2.5rem;
  }
}
.editorial-grid > .editorial-inner {
  min-width: 0;
}
.editorial-grid > .editorial-outer {
  min-width: 0;
}
@media (min-width: 1024px) {
  .editorial-outer {
    padding-top: 0.5rem;
  }
}

/* ======= HEADER / MASTHEAD ======= */
.site-header {
  background: var(--bg);
  border-bottom: 2px solid var(--rule-inked);
  position: sticky;
  top: 0;
  z-index: 50;
}
.masthead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding-top: 1.125rem;
  padding-bottom: 1.125rem;
  min-height: 84px;
}
.brand-block {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  flex-shrink: 0;
}
.brand-dot {
  width: 8px;
  height: 8px;
  background: var(--accent);
  display: inline-block;
  margin-top: 0.45rem;
  flex-shrink: 0;
}
.brand-text {
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
  line-height: 1.15;
}
.site-brand {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 1.0625rem;
  letter-spacing: -0.015em;
  color: var(--text-strong);
  text-transform: uppercase;
}
.brand-eyebrow {
  font-family: var(--font-sans);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}
.site-nav {
  display: none;
}
@media (min-width: 880px) {
  .site-nav { display: block; }
}
.site-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  gap: 2.5rem;
  align-items: center;
}
.site-nav li { margin: 0; }
.site-nav a {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 0.9375rem;
  color: var(--text-strong);
  position: relative;
  padding-bottom: 0.25rem;
}
.site-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -10px;
  height: 2px;
  background: var(--accent);
  opacity: 0;
  transition: opacity var(--transition);
}
.site-nav a:hover::after,
.site-nav a:focus-visible::after,
.site-nav a.is-active::after { opacity: 1; }
.site-nav a:hover, .site-nav a:focus-visible { color: var(--accent); }
.issue-chip {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 0.8125rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-strong);
  padding-bottom: 0.3rem;
  border-bottom: 2px solid var(--accent);
  flex-shrink: 0;
  display: none;
}
@media (min-width: 1080px) { .issue-chip { display: inline-block; } }

.nav-toggle {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 36px;
  height: 36px;
  border: 1px solid var(--rule-strong);
  padding: 0 7px;
  align-items: stretch;
}
.nav-toggle span {
  display: block;
  height: 2px;
  background: var(--text-strong);
  transition: transform var(--transition), opacity var(--transition);
}
@media (min-width: 880px) { .nav-toggle { display: none; } }

.mobile-nav {
  display: none;
  background: var(--bg);
  border-top: 1px solid var(--rule);
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.mobile-nav.is-open { display: block; }
.mobile-nav ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.25rem; }
.mobile-nav li { margin: 0; }
.mobile-nav a {
  display: block;
  padding: 0.75rem 0;
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 1.125rem;
  color: var(--text-strong);
  border-bottom: 1px solid var(--rule);
}

/* ======= HERO ======= */
.hero {
  padding-top: clamp(2.25rem, 6vw, 4.5rem);
  padding-bottom: clamp(1.5rem, 4vw, 3rem);
}
.cover-rule {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  border-top: 1px solid var(--rule-inked);
  padding-top: 0.75rem;
  margin-bottom: 1.5rem;
  font-size: 0.6875rem;
}
.cover-rule__left {
  font-family: var(--font-sans);
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}
.cover-rule__right {
  font-family: var(--font-mono);
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-strong);
  font-size: 0.8125rem;
  display: none;
}
@media (min-width: 768px) { .cover-rule__right { display: inline-block; } }

.hero-eyebrow {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
}
.hero-h1 {
  margin-bottom: 1.25rem;
  max-width: 28ch;
}
.hero-subhead {
  font-size: 1.25rem;
  line-height: 1.5;
  letter-spacing: -0.005em;
  color: var(--neutral-700);
  font-style: italic;
  max-width: 56ch;
  margin-bottom: 2rem;
}
.cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: 2rem;
}

/* ======= BUTTONS ======= */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.875rem 1.75rem;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.9375rem;
  letter-spacing: 0.04em;
  border-radius: 0;
  border: 0;
  cursor: pointer;
  transition: background-color var(--transition), color var(--transition), border-color var(--transition);
  text-align: center;
}
.btn--primary {
  background: var(--primary);
  color: var(--text-on-dark);
}
.btn--primary:hover, .btn--primary:focus-visible {
  background: var(--accent);
  color: var(--text-on-accent);
}
.btn--primary:active { background: var(--accent-700); }
.btn--secondary {
  background: transparent;
  color: var(--text-strong);
  border: 1.5px solid var(--text-strong);
}
.btn--secondary:hover, .btn--secondary:focus-visible {
  color: var(--accent);
  border-color: var(--accent);
}
.btn--ghost {
  background: transparent;
  color: var(--text-strong);
  padding: 0.25rem 0;
  position: relative;
}
.btn--ghost::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -2px;
  height: 2px;
  background: var(--accent);
  opacity: 0;
  transition: opacity var(--transition);
}
.btn--ghost:hover::after, .btn--ghost:focus-visible::after { opacity: 1; }

/* ======= RUBRIC SCORECARD (homepage hero four-up) ======= */
.rubric-scorecard {
  margin-top: 2.5rem;
  background: var(--surface-card);
  border: 1px solid var(--rule);
  display: grid;
  grid-template-columns: 1fr;
}
@media (min-width: 720px) {
  .rubric-scorecard { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1080px) {
  .rubric-scorecard { grid-template-columns: 1fr 1fr 1fr 1fr; }
}
.rubric-cell {
  padding: 1.5rem 1.5rem 1.75rem;
  border-top: 1px solid var(--rule-strong);
  border-right: none;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.rubric-cell:first-child { border-top: none; }
@media (min-width: 720px) {
  .rubric-cell { border-top: none; border-right: 1px solid var(--rule-strong); }
  .rubric-cell:nth-child(2n) { border-right: none; }
  .rubric-cell:nth-child(n+3) { border-top: 1px solid var(--rule-strong); }
}
@media (min-width: 1080px) {
  .rubric-cell { border-top: none; border-right: 1px solid var(--rule-strong); }
  .rubric-cell:nth-child(2n) { border-right: 1px solid var(--rule-strong); }
  .rubric-cell:last-child { border-right: none; }
}
.rubric-cell__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}
.rubric-cell__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}
.rubric-cell__rationale {
  font-family: var(--font-sans);
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--neutral-700);
  margin: 0;
}
.rubric-cell__link {
  display: inline-block;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.8125rem;
  color: var(--accent);
  margin-top: 0.75rem;
  border-bottom: 1px solid var(--accent);
  padding-bottom: 1px;
  align-self: flex-end;
}
.rubric-cell__link:hover { color: var(--accent-700); border-bottom-color: var(--accent-700); }

/* ======= WEIGHT BADGE ======= */
.weight-badge {
  width: 64px;
  height: 64px;
  background: var(--weight-badge-fill);
  color: var(--weight-badge-text);
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  text-align: center;
  flex-shrink: 0;
}
.weight-badge__value {
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(1rem, 1.5vw, 1.5rem);
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--weight-badge-text);
}
.weight-badge__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.5rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--weight-badge-text);
}
.weight-badge--lg {
  width: 84px;
  height: 84px;
}
.weight-badge--lg .weight-badge__value { font-size: 1.75rem; }
.weight-badge--lg .weight-badge__label { font-size: 0.625rem; }

/* ======= SCORE BAR PRIMITIVE — three scales ======= */
/* HERO SCALE */
.score-bar {
  display: block;
  width: 100%;
}
.score-bar__row {
  display: flex;
  align-items: flex-end;
  gap: 1.25rem;
}
.score-bar__track {
  position: relative;
  flex: 1;
  height: 10px;
  background: var(--score-track);
}
.score-bar__fill {
  position: absolute;
  inset: 0 auto 0 0;
  background: var(--score-fill-inked);
}
.score-bar__fill--accent {
  background: var(--score-fill-accent);
}
/* Score-bar fill widths via class — keeps inline styles out of HTML */
.score-bar__fill--0   { width: 0%;   }
.score-bar__fill--5   { width: 5%;   }
.score-bar__fill--12  { width: 12%;  }
.score-bar__fill--14  { width: 14%;  }
.score-bar__fill--16  { width: 16%;  }
.score-bar__fill--20  { width: 20%;  }
.score-bar__fill--25  { width: 25%;  }
.score-bar__fill--30  { width: 30%;  }
.score-bar__fill--40  { width: 40%;  }
.score-bar__fill--50  { width: 50%;  }
.score-bar__fill--55  { width: 55%;  }
.score-bar__fill--60  { width: 60%;  }
.score-bar__fill--67  { width: 67%;  }
.score-bar__fill--70  { width: 70%;  }
.score-bar__fill--71  { width: 71%;  }
.score-bar__fill--75  { width: 75%;  }
.score-bar__fill--80  { width: 80%;  }
.score-bar__fill--83  { width: 83%;  }
.score-bar__fill--85  { width: 85%;  }
.score-bar__fill--87  { width: 87%;  }
.score-bar__fill--90  { width: 90%;  }
.score-bar__fill--92  { width: 92%;  }
.score-bar__fill--93  { width: 93%;  }
.score-bar__fill--95  { width: 95%;  }
.score-bar__fill--97  { width: 97%;  }
.score-bar__fill--100 { width: 100%; }
/* Score-bar tick positions via class */
.score-bar__tick--20 { left: 20%; }
.score-bar__tick--40 { left: 40%; }
.score-bar__tick--60 { left: 60%; }
.score-bar__tick--80 { left: 80%; }
.score-bar__ticks {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.score-bar__tick {
  position: absolute;
  top: -2px;
  bottom: -2px;
  width: 1px;
  background: var(--score-tick);
}
.score-bar__numeric {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  line-height: 1;
  white-space: nowrap;
}
.score-bar__value {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: clamp(2.5rem, 4.25vw, 3.5rem);
  color: var(--text-strong);
  line-height: 0.9;
  letter-spacing: -0.035em;
  font-feature-settings: "tnum" 1;
}
.score-bar__denominator {
  font-family: var(--font-mono);
  font-weight: 400;
  font-size: 0.8125rem;
  color: var(--neutral-500);
  margin-top: 0.25rem;
}

/* MID SCALE */
.score-bar--mid .score-bar__track { height: 6px; max-width: 100%; }
.score-bar--mid .score-bar__value { font-size: 1rem; letter-spacing: 0; }
.score-bar--mid .score-bar__denominator { display: none; }
.score-bar--mid {
  width: 60px;
}
.score-bar--mid .score-bar__row {
  gap: 0;
  align-items: center;
}

/* INLINE MINI */
.score-bar--mini { display: inline-block; width: 40px; vertical-align: middle; margin: 0 0.25rem; }
.score-bar--mini .score-bar__track { height: 4px; }
.score-bar--mini .score-bar__numeric { display: none; }

/* Score-bar above-label slot */
.score-bar__topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.5rem;
}
.score-bar__caption {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}

/* ======= OVERALL RATING PANEL (homepage outer column) ======= */
.overall-rating {
  background: var(--bg);
  padding-top: 0.5rem;
  text-align: left;
}
.overall-rating__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-block;
  margin-bottom: 0.75rem;
}
.overall-rating__numeral {
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(4.5rem, 8.5vw, 7.5rem);
  line-height: 0.9;
  letter-spacing: -0.035em;
  color: var(--accent);
  display: block;
}
.overall-rating__denominator {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 1.25rem;
  color: var(--text-strong);
  display: block;
  margin-top: 0.5rem;
}
.overall-rating__band {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.8125rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--text-strong);
  display: block;
  margin-top: 0.5rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--rule);
}

/* ======= HERO STAT CHIPS (snapshot strip) ======= */
.snapshot-strip {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.75rem;
  margin-top: 1.5rem;
}
@media (min-width: 640px) {
  .snapshot-strip { grid-template-columns: repeat(4, 1fr); gap: 0.5rem; }
}
.stat-chip {
  display: flex;
  flex-direction: column;
  padding: 0.5rem 0.875rem;
  background: var(--surface-card);
  border: 1px solid var(--rule);
  gap: 0.25rem;
}
.stat-chip__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}
.stat-chip__value {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 1.0625rem;
  color: var(--text-strong);
  line-height: 1.2;
  font-feature-settings: "tnum" 1;
}

/* ======= CHAPTER OPENER (scored category hero) ======= */
.chapter-opener {
  padding-top: clamp(2rem, 4.5vw, 4rem);
  padding-bottom: 1rem;
}
.chapter-numeral {
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(5.5rem, 11vw, 9rem);
  line-height: 0.85;
  letter-spacing: -0.04em;
  color: var(--text-display);
  display: block;
}
.chapter-eyebrow {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-block;
  margin-bottom: 0.5rem;
}
.chapter-title-rule {
  width: 32px;
  height: 2px;
  background: var(--accent);
  margin-top: 1rem;
}

/* ======= CATEGORY PANEL (single-category score block) ======= */
.category-panel {
  background: var(--surface-card);
  border: 1px solid var(--rule);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  margin-top: 2rem;
}
.category-panel__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 1.5rem;
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--rule);
}
.category-panel__label {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 0.5rem;
}
.category-panel__band {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.875rem;
  color: var(--text-strong);
}
.category-panel__rationale {
  font-family: var(--font-sans);
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--neutral-700);
  margin-top: 1.25rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--rule);
}

/* ======= CRITERION BREAKDOWN ======= */
.criteria-list {
  list-style: none;
  padding: 0;
  margin: 2rem 0 0;
  border-top: 2px solid var(--rule-inked);
}
.criteria-list__item {
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--rule);
}
.criteria-list__row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 1.5rem;
  margin-bottom: 0.5rem;
}
@media (max-width: 600px) {
  .criteria-list__row {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }
}
.criteria-list__label {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 1.0625rem;
  color: var(--text-strong);
}
.criteria-list__bar {
  width: 80px;
  flex-shrink: 0;
}
.criteria-list__numeric {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 0.9375rem;
  color: var(--text-strong);
  font-feature-settings: "tnum" 1;
  letter-spacing: -0.01em;
  white-space: nowrap;
}
.criteria-list__evidence {
  font-family: var(--font-sans);
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--neutral-700);
  margin-top: 0.25rem;
  max-width: 70ch;
}

/* ======= DROP-CAP ======= */
.has-drop-cap > p:first-of-type::first-letter,
p.has-drop-cap::first-letter {
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(4.5rem, 7vw, 6rem);
  line-height: 0.86;
  letter-spacing: -0.03em;
  color: var(--text-display);
  float: left;
  margin: 0.1rem 0.75rem 0 0;
  padding: 0;
}
.has-drop-cap--accent > p:first-of-type::first-letter,
p.has-drop-cap--accent::first-letter {
  color: var(--accent);
}

/* ======= PULL-QUOTE ======= */
.pull-quote {
  position: relative;
  margin: 3rem 0;
  padding: 2rem 0 2rem;
  border: 0;
  text-align: left;
}
.pull-quote::before {
  content: "";
  display: block;
  width: 64px;
  height: 2px;
  background: var(--rule-accent);
  margin-bottom: 1.5rem;
}
.pull-quote::after {
  content: "";
  display: block;
  width: 64px;
  height: 2px;
  background: var(--rule-accent);
  margin-top: 1.5rem;
  margin-left: auto;
}
.pull-quote__text {
  font-family: var(--font-serif);
  font-weight: 600;
  font-style: italic;
  font-size: clamp(1.75rem, 3.5vw, 2.625rem);
  line-height: 1.25;
  letter-spacing: -0.015em;
  color: var(--text-strong);
  position: relative;
  padding: 0 2.5rem;
  max-width: 32ch;
  margin: 0 auto;
}
.pull-quote__text::before {
  content: "\201C";
  position: absolute;
  left: -0.4rem;
  top: -2.5rem;
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(4.5rem, 6vw, 6rem);
  line-height: 1;
  color: var(--accent);
}
.pull-quote__text::after {
  content: "\201D";
  position: absolute;
  right: -0.4rem;
  bottom: -3.25rem;
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(4.5rem, 6vw, 6rem);
  line-height: 1;
  color: var(--accent);
}
.pull-quote__attribution {
  display: block;
  margin-top: 2.5rem;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  text-align: right;
  padding-right: 2.5rem;
}

/* ======= CALLOUT VARIANTS ======= */
.callout {
  background: var(--surface-card);
  border: 1px solid var(--rule);
  border-left: 4px solid var(--text-strong);
  padding: 1.25rem 1.5rem;
  margin: 1.75rem 0;
}
.callout__eyebrow {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--text-strong);
  margin-bottom: 0.5rem;
  display: block;
}
.callout__body {
  font-family: var(--font-sans);
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--neutral-800);
}
.callout--editorial-note {
  background: var(--surface-inset);
  border-left: 4px solid var(--text-strong);
}
.callout--editorial-note .callout__body {
  font-style: italic;
  color: var(--neutral-700);
}
.callout--methodology {
  background: var(--surface-card);
  border-left: 4px solid var(--accent);
}
.callout--methodology .callout__eyebrow {
  color: var(--accent);
}
.callout--regulatory {
  background: var(--surface-card);
  border-left: 4px solid var(--text-strong);
}

/* ======= SECTIONS / SECTION RULE ======= */
.section {
  padding-top: clamp(2rem, 4vw, 3.5rem);
  padding-bottom: clamp(2rem, 4vw, 3.5rem);
}
.section + .section { border-top: 1px solid var(--rule); }
.section-rule {
  border-top: 2px solid var(--rule-inked);
  position: relative;
  margin: clamp(2.5rem, 6vw, 4.5rem) 0;
  padding-top: 1rem;
}
.section-rule__numeral {
  font-family: var(--font-serif);
  font-weight: 800;
  font-size: 1.4375rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-strong);
}
.section h2 {
  margin-bottom: 1.25rem;
  position: relative;
}
.section h2::after {
  content: "";
  display: block;
  width: 32px;
  height: 2px;
  background: var(--accent);
  margin-top: 0.75rem;
}
.section h3 {
  margin-top: 1.75rem;
  margin-bottom: 0.75rem;
}

/* ======= FIGURE ======= */
figure {
  margin: 2rem 0;
  background: var(--surface-card);
  border: 1px solid var(--rule);
  padding: 0;
}
figure img {
  display: block;
  width: 100%;
  height: auto;
}
figure.figure--bleed {
  background: transparent;
  border: 0;
  margin: 3rem 0;
}
figcaption {
  padding: 0.875rem 1.25rem 1rem;
  border-top: 1px solid var(--rule);
  font-family: var(--font-sans);
  font-style: italic;
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--neutral-700);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.75rem;
}
.figure-marker {
  font-family: var(--font-sans);
  font-weight: 600;
  font-style: normal;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  white-space: nowrap;
}

/* ======= TABULAR TABLE ======= */
.tabular-table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0 2rem;
  font-size: 0.9375rem;
  border-bottom: 1px solid var(--rule-strong);
}
.tabular-table thead th {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.8125rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-strong);
  text-align: left;
  border-bottom: 2px solid var(--rule-inked);
  padding: 0.875rem 0.75rem;
  background: transparent;
}
.tabular-table tbody td {
  padding: 1rem 0.75rem;
  border-bottom: 1px solid var(--rule);
  font-family: var(--font-sans);
  font-weight: 500;
  color: var(--text-strong);
  vertical-align: top;
}
.tabular-table tbody tr:hover td { background: rgba(244, 239, 226, 0.5); }
.tabular-table .num {
  font-family: var(--font-mono);
  font-weight: 500;
  text-align: right;
  font-feature-settings: "tnum" 1;
  letter-spacing: -0.01em;
  white-space: nowrap;
}
.tabular-table .text-left { text-align: left; }

/* ======= CONFIDENCE CHIP ======= */
.confidence-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.25rem 0.5rem;
  background: var(--surface-inset);
  border: 1px solid var(--rule);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-strong);
  white-space: nowrap;
}
.confidence-chip--high { color: var(--text-strong); }
.confidence-chip--med { color: var(--warning); }
.confidence-chip--partial { color: var(--neutral-500); }
.confidence-chip__dot {
  width: 6px;
  height: 6px;
  background: currentColor;
  display: inline-block;
}

/* ======= REFERENCES LIST ======= */
.references-list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
  counter-reset: ref;
}
.references-list__item {
  display: grid;
  grid-template-columns: 3.5rem 1fr;
  gap: 0.75rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--rule);
  font-size: 0.9375rem;
  line-height: 1.55;
}
.references-list__num {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 0.9375rem;
  color: var(--accent);
  font-feature-settings: "tnum" 1;
}
.references-list__body {
  color: var(--text);
}
.references-list__meta {
  display: block;
  margin-top: 0.25rem;
  font-family: var(--font-sans);
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 600;
}
.references-list__url {
  display: block;
  margin-top: 0.25rem;
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  color: var(--accent);
  word-break: break-word;
}
.references-list__url::after {
  content: " \2197";
}

/* ======= FORM ======= */
.editor-form {
  background: var(--surface-card);
  border: 1px solid var(--rule);
  padding: 1.75rem;
  margin: 2rem 0;
}
.editor-form__field { margin-bottom: 1.25rem; }
.editor-form__label {
  display: block;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 0.5rem;
}
.editor-form__input,
.editor-form__select,
.editor-form__textarea {
  display: block;
  width: 100%;
  padding: 0.75rem 0.875rem;
  font-family: var(--font-sans);
  font-size: 1rem;
  color: var(--text-strong);
  background: var(--bg);
  border: 1px solid var(--rule-strong);
  border-radius: 0;
  transition: border-color var(--transition);
}
.editor-form__input:focus,
.editor-form__select:focus,
.editor-form__textarea:focus {
  outline: 2.5px solid var(--accent);
  outline-offset: 2px;
  border-color: var(--accent);
}
.editor-form__textarea { min-height: 9rem; resize: vertical; }
.editor-form__submit {
  margin-top: 0.75rem;
}

/* ======= 404 ======= */
.error-shell {
  padding: 4rem 0 6rem;
  text-align: center;
}
.error-shell__code {
  font-family: var(--font-serif);
  font-weight: 900;
  font-size: clamp(5rem, 14vw, 11rem);
  line-height: 1;
  letter-spacing: -0.04em;
  color: var(--accent);
  margin-bottom: 1rem;
}
.error-shell__title {
  margin-bottom: 0.75rem;
}
.error-shell__lede {
  font-style: italic;
  color: var(--neutral-700);
  max-width: 48ch;
  margin: 0 auto 2rem;
}

/* ======= FOOTER ======= */
.site-footer {
  background: var(--surface-inverse);
  color: var(--text-on-dark);
  border-top: 2px solid var(--rule-accent);
  margin-top: clamp(3rem, 6vw, 5rem);
  flex-shrink: 0;
}
.site-footer .container {
  padding-top: 3rem;
  padding-bottom: 2rem;
}
.footer-columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 600px) {
  .footer-columns { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 960px) {
  .footer-columns { grid-template-columns: repeat(4, 1fr); }
}
.footer-col-heading {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 1rem;
}
.footer-col ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.footer-col li { margin: 0; }
.footer-col a {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 0.9375rem;
  color: var(--text-on-dark);
}
.footer-col a:hover, .footer-col a:focus-visible { color: var(--accent); }
.footer-bottom {
  border-top: 1px solid var(--neutral-700);
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  justify-content: space-between;
  align-items: flex-start;
  font-size: 0.875rem;
}
@media (min-width: 760px) {
  .footer-bottom { flex-direction: row; align-items: center; }
}
.footer-disclaimer {
  font-family: var(--font-sans);
  font-style: italic;
  color: var(--neutral-300);
  font-size: 0.875rem;
  max-width: 60ch;
}
.footer-colophon {
  font-family: var(--font-mono);
  font-weight: 400;
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--neutral-400);
  text-align: left;
}
@media (min-width: 760px) { .footer-colophon { text-align: right; } }
.footer-copyright {
  font-family: var(--font-sans);
  font-size: 0.8125rem;
  color: var(--neutral-400);
  display: block;
  margin-top: 0.5rem;
}

/* ======= Tippy editorial theme ======= */
.tippy-box[data-theme~='editorial'] {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 0.875rem;
  line-height: 1.5;
  border: 0;
  border-top: 2px solid var(--text-strong);
  border-radius: 0;
  padding: 0.75rem 0.875rem;
  max-width: 320px;
  box-shadow: 0 4px 16px rgba(14, 14, 12, 0.12);
}
.tippy-box[data-theme~='editorial'] .tippy-content {
  padding: 0;
}
.tippy-box[data-theme~='editorial'] .tippy-arrow {
  color: var(--bg);
}
.tippy-box[data-theme~='editorial'] strong {
  font-family: var(--font-mono);
  color: var(--accent);
  font-weight: 500;
}

/* ======= UTILITIES ======= */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}
.text-mono { font-family: var(--font-mono); font-feature-settings: "tnum" 1; }
.text-accent { color: var(--accent); }
.no-bullet { list-style: none; padding-left: 0; }
.quick-link-stack { display: flex; flex-direction: column; gap: 0.75rem; }
.quick-link-stack li { margin: 0; }
.confidence-chip-stack { display: flex; flex-direction: column; gap: 0.5rem; }
.confidence-chip-row { margin-top: 1.5rem; }
.aside-stack { display: flex; flex-direction: column; gap: 1rem; }
.gap-top { margin-top: 1.5rem; }
.gap-top-sm { margin-top: 1rem; }

/* Wide content for homepage hero rubric area */
.hero-rubric-wrapper {
  max-width: var(--feature-width);
  width: 100%;
}

/* Inline H2 (no decorative under-rule) when in callout / sub-section */
.callout h2, .callout h3 { font-family: var(--font-serif); margin-bottom: 0.5rem; }
.callout h2::after, .callout h3::after { display: none; }
.callout p { margin-bottom: 0.75rem; }
.callout p:last-child { margin-bottom: 0; }

/* Hide H2 under-rule on FAQ pages where every H2 is a question */
.faq-section h2 { font-size: clamp(1.25rem, 2.4vw, 1.625rem); }
.faq-section h2::after { width: 24px; }

/* Ensure body italics in honest-gap callouts pop without breaking color */
.callout--editorial-note em { color: var(--neutral-700); }
