/* rtns-dive.css: RTNS Dive components (plan row 1.4, A3)
   ==========================================================================
   Additive CSS for Dive pages only. Loaded AFTER styles.css (donor, byte-
   frozen) and rtns.css. Every selector here starts with .dive- (editorial
   components) or .dv-ix- (interactives); no donor selector is overridden.

   House rules this file follows (RTNS carve-out in rt-brand-golden-standard):
   - Domi's tokens only: --paper/--paper2, --ink, --muted, --line, --gold/
     --gold2, --green, --blue, --dark. Small gold TEXT on paper is #8c6a32
     (WCAG AA); --gold stays for fills, rules and large display type.
   - Georgia display, Arial body, no webfont. Square gen1 components (no
     border-radius) on editorial pages. Breakpoints 1100/700, plus 375 checks.
   - 44x44 minimum targets, visible focus, prefers-reduced-motion respected.
   - Dark surfaces: text pure #ffffff, accents full-brightness --gold2, never
     opacity-dimmed.
   - No inline styles anywhere: the one runtime value (--dv-split) is set
     through CSSOM by dive-ix.js, which CSP allows.
   ========================================================================== */

/* Verify-phase fix (2026-09-25, defect 7 -- palette): every named colour
   this file introduced beyond Domi's own tokens, promoted to a :root
   custom property so it has a name and a one-line reason. Rendered
   colours are UNCHANGED -- this only names values already in use; it does
   not remap them onto a donor token of a different exact value (that
   would be a real colour change, not a near-miss fix). See DESIGN-PROMPT
   §3 for the dated changelog entry. */
:root {
  /* editor's-note dark-green band (.dive-editor-box): a brighter, more
     saturated green than Domi's own --green (#113a32), chosen for this
     one high-contrast callout -- not a --green near-miss, a deliberate
     second green. */
  --rt-editor-green-bg: #173d34;
  --rt-editor-green-border: #7ebda9;
  --rt-editor-green-eyebrow: #8fd2bd;
  --rt-editor-green-text: #d7e4df;
}

/* ---- hidden must win over any display rule below ----------------------- */
.dv-ix [hidden],
.dive-share [hidden],
.dive-share[hidden],
.dive-calls-board [hidden],
.dive-call [hidden] {
  display: none !important;
}

.dv-ix-offscreen {
  position: fixed;
  left: -9999px;
  top: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* ---- shared interactive shell ------------------------------------------ */
.dv-ix {
  margin: 48px 0;
  padding: 32px 0 0;
  border-top: 1px solid var(--line);
  color: var(--ink);
  min-width: 0;
}
.dv-ix-head {
  max-width: 820px;
  margin-bottom: 20px;
}
.dv-ix-eyebrow,
.dive-call-eyebrow,
.dive-calls-eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: #8c6a32;
  margin: 0 0 10px;
}
.dv-ix-title {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 38px;
  line-height: 1.08;
  margin: 0 0 12px;
}
.dv-ix-title b {
  font-weight: 700;
}
.dv-ix-sub,
.dv-ix-asof,
.dv-ix-caption {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.55;
  margin: 0 0 10px;
}
.dv-ix-caption {
  font-size: 13px;
  margin-top: 16px;
}
.dv-ix a,
.dive-call a,
.dive-calls-board a,
.dive-quote a,
.dive-call-quote a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: 3px;
}
.dv-ix-label {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-right: 8px;
}
.dv-ix-muted {
  color: var(--muted);
  font-size: 12px;
}

/* square gen1 controls, 44px targets */
.dv-ix-btn,
.dv-ix-chip,
.dv-ix-pick,
.dv-ix-remove,
.dive-share-btn,
.dive-chip,
.dive-call-cta,
.dv-ix-cal-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
  padding: 0 16px;
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none !important;
  cursor: pointer;
  border-radius: 0;
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.dv-ix-btn:hover,
.dv-ix-chip:hover,
.dv-ix-pick:hover,
.dive-share-btn:hover,
.dive-chip:hover,
.dv-ix-cal-link:hover {
  border-color: var(--gold);
  background: var(--paper);
}
.dv-ix-btn:disabled {
  cursor: not-allowed;
  border-color: var(--line);
  color: var(--muted);
  background: transparent;
}
.dv-ix-btn-gold,
.dive-call-cta {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--ink);
}
.dv-ix-btn-gold:hover,
.dive-call-cta:hover {
  background: var(--gold2);
  border-color: var(--gold2);
}
.dv-ix-chip[aria-pressed="true"],
.dv-ix-pick[aria-pressed="true"],
.dive-chip[aria-current="true"] {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

/* focus: gold2 (the site default) is under 3:1 on paper, so paper uses
   #8c6a32; the dark tray keeps gold2 */
.dv-ix a:focus-visible,
.dv-ix button:focus-visible,
.dv-ix input:focus-visible,
.dv-ix summary:focus-visible,
.dv-ix-tablewrap:focus-visible,
.dive-share a:focus-visible,
.dive-share button:focus-visible,
.dive-call a:focus-visible,
.dive-calls-board a:focus-visible {
  outline: 2px solid #8c6a32;
  outline-offset: 2px;
}
.dv-ix .dv-ix-tray a:focus-visible,
.dv-ix .dv-ix-tray button:focus-visible,
.dv-ix-tvn-card:focus-visible {
  outline: 2px solid var(--gold2);
  outline-offset: 2px;
}

/* ---- tables (always visible; scroll inside their own box) --------------- */
.dv-ix-tablewrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 20px 0 0;
  border: 1px solid var(--line);
  background: var(--paper2);
}
.dv-ix-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  line-height: 1.45;
}
.dv-ix-table caption {
  text-align: left;
  padding: 12px 14px 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #8c6a32;
}
.dv-ix-table th,
.dv-ix-table td {
  padding: 10px 14px;
  border-top: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.dv-ix-table thead th {
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  white-space: nowrap;
}
.dv-ix-table tbody th {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  white-space: nowrap;
}

/* ---- 1. planner -------------------------------------------------------- */
.dv-ix-cal-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 14px 0 18px;
}
.dv-ix-filters {
  border: 1px solid var(--line);
  background: var(--paper);
  margin: 0 0 24px;
  padding: 14px 16px 6px;
  min-width: 0;
}
.dv-ix-filters legend {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  padding: 0 6px;
}
.dv-ix-chipgroup,
.dv-ix-filter-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
}
.dv-ix-chipgroup .dv-ix-label {
  min-width: 56px;
}
/* why the broadest themes have no filter chip */
.dv-ix-note {
  font-size: 13px;
  line-height: 1.5;
  color: var(--muted);
  margin: 0 0 10px;
}
.dv-ix-count {
  font-size: 13px;
  color: var(--muted);
  margin: 4px 0 8px;
}
.dv-ix-day {
  margin: 0 0 28px;
}
.dv-ix-day-h {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 26px;
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--gold);
}
.dv-ix-sessions {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
  gap: 14px;
}
.dv-ix-session {
  border: 1px solid var(--line);
  border-top: 3px solid var(--ink);
  background: var(--paper2);
  padding: 14px 16px 10px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.dv-ix-session:target {
  border-top-color: var(--gold);
  background: var(--paper);
}
.dv-ix-session.is-picked {
  border-top-color: var(--gold);
  background: var(--paper);
}
.dv-ix-session.is-clash {
  border-top-color: var(--blue);
}
.dv-ix-session p {
  margin: 0 0 8px;
}
.dv-ix-s-when {
  font-size: 13px;
  font-weight: 700;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  align-items: baseline;
}
.dv-ix-s-stage {
  font-weight: 400;
  color: var(--muted);
}
.dv-ix-pickmark {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #8c6a32;
  border: 1px solid #8c6a32;
  padding: 2px 6px;
}
/* session language (EN, DE, EN & DE) */
.dv-ix-s-lang {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--ink);
  border: 1px solid var(--line);
  padding: 2px 6px;
}
.dv-ix-s-title {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
  line-height: 1.25;
}
.dv-ix-s-meta {
  font-size: 13px;
  line-height: 1.5;
  color: var(--muted);
}
.dv-ix-s-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.dv-ix-tag {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--green);
  border: 1px solid var(--line);
  padding: 3px 7px;
}
.dv-ix-s-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 16px;
  font-size: 13px;
}
.dv-ix-s-links a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.dv-ix-s-links .dv-ix-pick {
  margin-left: auto;
}

/* sticky "My agenda" tray: a dark surface */
.dv-ix-tray {
  position: sticky;
  bottom: 0;
  z-index: 20;
  margin: 12px 0 0;
  padding: 14px 18px;
  background: var(--dark);
  color: #ffffff;
  border-top: 3px solid var(--gold2);
  max-height: 60vh;
  overflow-y: auto;
}
.dv-ix-tray a {
  color: #ffffff;
  text-decoration-color: var(--gold2);
}
.dv-ix-tray-h {
  margin: 0 0 6px;
}
.dv-ix-tray-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gold2);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
}
.dv-ix-tray-toggle::after {
  content: "";
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 6px solid currentColor;
}
.dv-ix-tray-toggle[aria-expanded="false"]::after {
  border-bottom: 0;
  border-top: 6px solid currentColor;
}
.dv-ix-tray:not(.is-open) .dv-ix-tray-body {
  display: none;
}
.dv-ix-tray-empty {
  margin: 0 0 8px;
  font-size: 14px;
  color: #ffffff;
}
.dv-ix-clash {
  margin: 0 0 8px;
  font-size: 14px;
  font-weight: 700;
  color: #ffffff;
  border-left: 3px solid var(--gold2);
  padding-left: 10px;
}
.dv-ix-tray-list {
  margin: 0 0 10px;
  padding-left: 22px;
  font-size: 14px;
  line-height: 1.4;
}
.dv-ix-tray-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 12px;
  overflow-wrap: anywhere;
}
.dv-ix-tray-item.is-clash > a {
  text-decoration-color: #ffffff;
  text-decoration-thickness: 2px;
}
.dv-ix-clash-flag {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gold2);
}
.dv-ix-tray .dv-ix-btn,
.dv-ix-tray .dv-ix-remove {
  color: #ffffff;
  border-color: #6b6f6b;
}
.dv-ix-tray .dv-ix-btn:hover,
.dv-ix-tray .dv-ix-remove:hover {
  background: #1d211f;
  border-color: var(--gold2);
}
.dv-ix-tray .dv-ix-btn-gold {
  background: var(--gold2);
  border-color: var(--gold2);
  color: var(--ink);
}
.dv-ix-tray .dv-ix-btn:disabled {
  color: #ffffff;
  border-color: #3a3e3b;
  background: transparent;
}
.dv-ix-remove {
  padding: 0 10px;
  font-size: 10px;
}
.dv-ix-tray-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.dv-ix-out {
  margin: 10px 0 0;
  font-size: 13px;
  overflow-wrap: anywhere;
}
.dv-ix-url {
  font-family: "Courier New", monospace;
  user-select: all;
}

/* ---- 2. debate --------------------------------------------------------- */
.dv-ix-lead {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 24px;
  line-height: 1.25;
  margin: 0 0 18px;
}
.dv-ix-topics {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 22px;
}
.dv-ix-topic {
  border-top: 1px solid var(--line);
  padding-top: 14px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.dv-ix-topic-q {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
  line-height: 1.3;
  margin: 0 0 10px;
}
.dv-ix-split {
  display: block;
  width: 100%;
  height: 20px;
}
.dv-ix-split.is-clickable {
  cursor: pointer;
}
.dv-ix-split-for {
  fill: var(--gold);
}
.dv-ix-split-against {
  fill: var(--blue);
}
.dv-ix-split-mixed {
  fill: #a39d93;
}
.dv-ix-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin: 8px 0 6px;
  font-size: 13px;
}
.dv-ix-key::before {
  content: "";
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 6px;
  vertical-align: -1px;
}
.dv-ix-key-for::before {
  background: var(--gold);
}
.dv-ix-key-against::before {
  background: var(--blue);
}
.dv-ix-key-mixed::before {
  background: #a39d93;
}
.dv-ix-posts summary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  cursor: pointer;
  list-style: none;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.dv-ix-posts summary::-webkit-details-marker {
  display: none;
}
/* inline-flex drops the native marker, so draw one: right when closed, down when open */
.dv-ix-posts summary::before {
  content: "";
  width: 0;
  height: 0;
  border-top: 5px solid transparent;
  border-bottom: 5px solid transparent;
  border-left: 6px solid currentColor;
}
.dv-ix-posts[open] summary::before {
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 6px solid currentColor;
  border-bottom: 0;
}
.dv-ix-posts ol {
  margin: 4px 0 8px;
  padding-left: 22px;
  font-size: 14px;
  line-height: 1.55;
}
.dv-ix-posts li {
  margin-bottom: 8px;
}
.dv-ix-posts li a {
  display: inline-block;
  min-height: 24px;
}
.dv-ix-stance {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 1px 6px;
  border: 1px solid currentColor;
}
.dv-ix-stance-for {
  color: #8c6a32;
}
.dv-ix-stance-against {
  color: var(--blue);
}
.dv-ix-stance-mixed {
  color: var(--muted);
}
.dv-ix-topic-sessions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 14px;
  font-size: 14px;
  margin: 4px 0 0;
}
.dv-ix-topic-sessions a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

/* ---- 3. cycles --------------------------------------------------------- */
.dv-ix-figure {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--line);
  background: var(--paper2);
}
.dv-ix-cy-svg {
  display: block;
  width: 100%;
  height: auto;
  font-family: Arial, Helvetica, sans-serif;
}
.dv-ix-cy-grid {
  stroke: var(--line);
  stroke-width: 1;
}
.dv-ix-cy-axis {
  stroke: var(--ink);
  stroke-width: 1;
}
.dv-ix-cy-tick,
.dv-ix-cy-axlab {
  font-size: 13px;
  fill: var(--muted);
}
.dv-ix-cy-panel {
  font-size: 13px;
  font-weight: 700;
  fill: var(--ink);
}
.dv-ix-cy-bar {
  fill: var(--gold);
}
.dv-ix-cy-line {
  fill: none;
  stroke: var(--blue);
  stroke-width: 2.5;
}
.dv-ix-cy-dot {
  fill: var(--blue);
}
.dv-ix-cy-zero {
  stroke: var(--muted);
  stroke-dasharray: 2 3;
}
.dv-ix-cy-step {
  fill: none;
  stroke-width: 2.5;
}
.dv-ix-cy-mro {
  stroke: var(--green);
}
.dv-ix-cy-dfr {
  stroke: var(--green);
  stroke-dasharray: 6 4;
}
/* participants counting basis changes: the line breaks and a marker says so */
.dv-ix-cy-break {
  stroke: var(--ink);
  stroke-width: 1.5;
  stroke-dasharray: 4 3;
}
.dv-ix-cy-breaklab {
  font-size: 12px;
  font-weight: 700;
  fill: var(--ink);
}
/* the rate panel with no ECB series */
.dv-ix-cy-empty {
  font-size: 14px;
  font-style: italic;
  fill: var(--muted);
}
/* an unpublished figure reads as text, never as blank or 0 */
.dv-ix-np {
  color: var(--muted);
  font-style: italic;
}
.dv-ix-year {
  cursor: pointer;
  outline: none;
}
.dv-ix-year-hit {
  fill: transparent;
  pointer-events: all;
}
.dv-ix-year-guide {
  stroke: transparent;
  stroke-width: 2;
}
.dv-ix-mood {
  visibility: hidden;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  fill: var(--ink);
}
.dv-ix-year:hover .dv-ix-mood,
.dv-ix-year:focus .dv-ix-mood,
.dv-ix-year.is-on .dv-ix-mood {
  visibility: visible;
}
.dv-ix-year:hover .dv-ix-year-guide,
.dv-ix-year.is-on .dv-ix-year-guide {
  stroke: #8c6a32;
}
.dv-ix-year:focus-visible .dv-ix-year-guide {
  stroke: #8c6a32;
  stroke-width: 4;
}
.dv-ix-year:focus-visible .dv-ix-year-hit {
  stroke: #8c6a32;
  stroke-width: 2;
}
.dv-ix-mood-out {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  line-height: 1.35;
  margin: 12px 0 0;
  padding-left: 12px;
  border-left: 3px solid var(--gold);
}

/* ---- 4. then vs now ---------------------------------------------------- */
.dv-ix-tvn-control {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  margin: 0 0 12px;
}
.dv-ix-tvn-range {
  flex: 1 1 240px;
  min-height: 44px;
  accent-color: var(--gold);
  margin: 0;
}
.dv-ix-tvn-card {
  --dv-split: 50%;
  position: relative;
  display: grid;
  min-height: 280px;
  overflow: hidden;
}
.dv-ix-tvn-panel {
  grid-area: 1 / 1;
  padding: 24px 22px;
  color: #ffffff;
}
.dv-ix-tvn-left {
  background: var(--green);
}
.dv-ix-tvn-right {
  background: var(--blue);
  text-align: right;
  clip-path: inset(0 0 0 var(--dv-split));
}
.dv-ix-tvn-card::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: var(--dv-split);
  width: 3px;
  margin-left: -1px;
  background: var(--gold2);
  pointer-events: none;
}
.dv-ix-tvn-label {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 48px;
  line-height: 1;
  color: var(--gold2);
  margin: 0 0 6px;
}
.dv-ix-tvn-cap {
  font-size: 13px;
  color: #ffffff;
  margin: 0 0 14px;
}
.dv-ix-tvn-panel dl {
  margin: 0;
  max-width: 46%;
}
.dv-ix-tvn-right dl {
  margin-left: auto;
}
.dv-ix-tvn-panel dt {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #ffffff;
  margin-top: 10px;
  overflow-wrap: anywhere;
}
.dv-ix-tvn-panel dd {
  margin: 2px 0 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 24px;
  color: #ffffff;
}

/* ---- share row --------------------------------------------------------- */
.dive-share {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 16px 0 0;
}
.dive-share-lead {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #8c6a32;
  margin-right: 4px;
}
.dive-share-out {
  flex-basis: 100%;
  font-size: 13px;
  color: var(--muted);
  overflow-wrap: anywhere;
}

/* ---- quote cards ------------------------------------------------------- */
.dive-quote,
.dive-call-quote {
  margin: 28px 0;
  padding: 4px 0 4px 22px;
  border-left: 3px solid var(--gold);
}
.dive-quote blockquote,
.dive-call-quote blockquote {
  margin: 0 0 10px;
}
.dive-quote blockquote p,
.dive-call-quote blockquote p {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 26px;
  line-height: 1.3;
  margin: 0;
}
.dive-quote figcaption,
.dive-call-quote figcaption {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}
.dive-quote cite,
.dive-call-quote cite {
  font-style: normal;
  margin-left: 4px;
}

/* ---- expert calls ------------------------------------------------------ */
.dive-calls {
  display: grid;
  gap: 18px;
  margin: 36px 0;
}
.dive-call {
  border: 1px solid var(--line);
  border-top: 3px solid var(--gold);
  background: var(--paper);
  padding: 20px 22px;
  overflow-wrap: anywhere;
  scroll-margin-top: 96px;
}
.dive-call-badge {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 26px;
  line-height: 1.15;
  margin: 0 0 10px;
}
.dive-call-why {
  font-size: 15px;
  line-height: 1.55;
  margin: 0 0 10px;
}
.dive-call-questions {
  margin: 0 0 14px;
  padding-left: 22px;
  font-size: 15px;
  line-height: 1.55;
}
.dive-call-questions li {
  margin-bottom: 6px;
}
.dive-call-actions {
  margin: 0 0 8px;
}
.dive-call-note,
.dive-call-status {
  font-size: 13px;
  color: var(--muted);
  margin: 0 0 6px;
}
.dive-call-answered .dive-call-quote {
  margin: 10px 0 6px;
}

/* ---- open-calls board -------------------------------------------------- */
.dive-calls-board {
  margin: 48px 0;
  padding-top: 32px;
  border-top: 1px solid var(--line);
  scroll-margin-top: 96px;
}
.dive-calls-title {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 38px;
  line-height: 1.08;
  margin: 0 0 10px;
}
.dive-calls-sub {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.55;
  max-width: 720px;
  margin: 0 0 16px;
}
.dive-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 22px;
}
.dive-calls-group {
  margin: 0 0 24px;
  scroll-margin-top: 96px;
}
.dive-calls-role,
.dive-paths-h {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 24px;
  margin: 0 0 10px;
  padding-bottom: 6px;
  border-bottom: 2px solid var(--gold);
}
.dive-calls-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
  gap: 12px;
}
.dive-calls-item {
  border: 1px solid var(--line);
  background: var(--paper2);
  padding: 12px 14px;
  overflow-wrap: anywhere;
}
.dive-calls-item p {
  margin: 0 0 6px;
}
.dive-calls-badge {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #8c6a32;
}
.dive-calls-link {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 18px;
  line-height: 1.3;
}
.dive-calls-link a {
  display: inline-block;
  min-height: 24px;
}
.dive-calls-why {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}
.dive-paths {
  margin: 32px 0 0;
}
.dive-path {
  margin: 0 0 16px;
}
.dive-path-h {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin: 0 0 6px;
}
.dive-path ol {
  margin: 0;
  padding-left: 22px;
  font-size: 15px;
  line-height: 1.5;
}
.dive-path li a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

/* ---- breakpoints ------------------------------------------------------- */
@media (max-width: 1100px) {
  .dv-ix-title,
  .dive-calls-title {
    font-size: 32px;
  }
}

@media (max-width: 700px) {
  .dv-ix {
    margin: 36px 0;
    padding-top: 24px;
  }
  .dv-ix-title,
  .dive-calls-title {
    font-size: 28px;
  }
  .dv-ix-lead {
    font-size: 20px;
  }
  .dv-ix-day-h {
    font-size: 22px;
  }
  .dv-ix-s-links .dv-ix-pick {
    margin-left: 0;
  }
  /* the chart keeps legible type and scrolls inside its own frame */
  .dv-ix-cy-svg {
    min-width: 720px;
  }
  .dv-ix-tvn-label {
    font-size: 34px;
  }
  .dv-ix-tvn-panel {
    padding: 18px 14px;
  }
  .dv-ix-tvn-panel dd {
    font-size: 19px;
  }
  .dive-quote blockquote p,
  .dive-call-quote blockquote p {
    font-size: 21px;
  }
  .dive-call {
    padding: 16px;
  }
  .dive-call-badge {
    font-size: 22px;
  }
  .dv-ix-tray {
    margin-left: -18px;
    margin-right: -18px;
    padding: 12px 18px;
  }
}

/* ---- motion ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  .dv-ix-btn,
  .dv-ix-chip,
  .dv-ix-pick,
  .dv-ix-remove,
  .dive-share-btn,
  .dive-chip,
  .dive-call-cta,
  .dv-ix-cal-link {
    transition: none;
  }
}

/* ---- print: "my agenda" ------------------------------------------------ */
@media print {
  .dv-ix-filters,
  .dv-ix-tray,
  .dv-ix-pick,
  .dv-ix-cal-links,
  .dv-ix-tvn-control,
  .dive-share,
  .dive-chips,
  .dive-call-actions {
    display: none !important;
  }
  .dv-ix-planner.has-picks .dv-ix-session:not(.is-picked) {
    display: none !important;
  }
  .dv-ix-planner.has-picks .dv-ix-day:not(:has(.is-picked)) {
    display: none !important;
  }
  .dv-ix-session[hidden],
  .dv-ix-day[hidden] {
    display: block !important;
  }
  .dv-ix-planner.has-picks .dv-ix-session[hidden]:not(.is-picked) {
    display: none !important;
  }
  .dv-ix-sessions {
    display: block;
  }
  .dv-ix-session {
    break-inside: avoid;
    border: 0;
    border-top: 1px solid #000;
    padding: 8px 0;
    background: none;
  }
  .dv-ix-day-h {
    break-after: avoid;
  }
  .dv-ix-tablewrap,
  .dv-ix-figure {
    overflow: visible;
    border: 0;
  }
  .dv-ix-cy-svg {
    min-width: 0;
  }
  .dv-ix a,
  .dive-call a {
    text-decoration: none;
  }
}

/* ==========================================================================
   Dive layout (plan row 1.4 follow-up)
   --------------------------------------------------------------------------
   Page-level layout for the classes emitted by templates/dive-hub.html and
   templates/dive-article.html. Everything is scoped under a .dive-* class,
   so her furniture (page-hero, hero-meta, section-rule, feed-item, the
   rows/row pair, btn, more) is only re-tuned INSIDE a Dive page, never on
   a PTC page. Tokens are hers; no new colour is introduced.

   Contrast, measured (WCAG 2.x):
   - #8c6a32 small gold text: 4.89:1 on --paper2 #fffdf8 (pass), 4.45:1 on
     --paper #f6f2ea (fail), 4.19:1 on the .soft band #f1ebdf (fail). So
     small labels on the soft band use --ink (15.83:1), the same answer
     rtns-event.css gives for `.event-v2 .feed-item small`, and the hero
     band stays on --paper2.
   - --muted #6c675e: 5.52:1 on paper2, 4.73:1 on soft (both pass).
   - Dark tiles: #ffffff text, --gold2 accent (9.18:1 on #0d100e).
   ========================================================================== */

/* ---- shared: type rhythm, widow control ---------------------------------- */
.dive-hub h1,
.dive-hub h2,
.dive-hub h3,
.dive-article h1,
.dive-article h2,
.dive-article h3 {
  text-wrap: balance;
}
.dive-hub p,
.dive-article p {
  text-wrap: pretty;
}
/* her 42px .btn, lifted to the 44px target floor on Dive pages only */
.dive-hub .btn,
.dive-article .btn {
  min-height: 44px;
}

/* ---- hero band ---------------------------------------------------------- */
.dive-hero-band {
  padding-bottom: 48px;
}
.dive-hero-band .page-hero-grid {
  align-items: start;
}
.dive-hero-band .hero-meta {
  margin-top: 32px;
}
/* sits under the dek: needs air above it, then hugs the question */
.dive-hero-band .dive-question-label {
  margin: 30px 0 10px;
}
/* (0,2,0) so it beats her `.page-hero p` (0,1,1) muted 16px dek style;
   every first token here starts .dive- (tests: TestHygiene) */
.dive-hero-band .dive-question {
  max-width: 760px;
  margin: 0;
  padding: 2px 0 2px 20px;
  border-left: 3px solid var(--gold);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 1.32;
  color: var(--ink);
}

/* Her .hero-meta is a 2-column grid built for an even number of stats.
   The hub always has 3 and article stats vary, which left an empty cell.
   An odd last stat spans the row; the stat above it gets its rule back
   (her :nth-last-child(-n+2) removed it); a meta box with no stats hides. */
.dive-hub .hero-stat:last-child:nth-child(odd),
.dive-article .hero-stat:last-child:nth-child(odd) {
  grid-column: 1 / -1;
  border-right: 0;
}
.dive-hub .hero-stat:nth-last-child(2):nth-child(even),
.dive-article .hero-stat:nth-last-child(2):nth-child(even) {
  border-bottom: 1px solid var(--line);
}
.dive-article .hero-meta:not(:has(.hero-stat)),
.dive-hub .hero-meta:not(:has(.hero-stat)) {
  /* Brand-review finding 2026-09-24: the hub dropped its lone "Updated"
     stat box (folded into the eyebrow meta line) but this hide rule was
     article-only, so the hub's donor hero-meta (border 1px solid line,
     donor/styles.css) rendered as an empty bordered box next to the press
     photo at every breakpoint. The canon hero band replaces this whole
     section when a hero photo resolves, so this is now belt and braces
     for the no-photo fallback path too. */
  display: none;
}

/* ---- section rail ------------------------------------------------------- */
.dive-rail {
  border-bottom: 1px solid var(--line);
  background: var(--paper2);
}
.dive-rail .dive-rail-links {
  margin: 0;
  padding-top: 16px; /* top/bottom only: .shell owns the side gutter */
  padding-bottom: 16px;
  gap: 8px;
  flex-wrap: wrap;
}
.dive-rail .btn:hover {
  background: var(--ink);
  border-color: var(--ink);
  color: #ffffff;
}

/* ---- interactive slots (hub) --------------------------------------------
   Each slot is her .event-v2-section (64px padding) around a .dv-ix that
   carries its own 48px margins: stacked, that left 220px dead bands. The
   slot keeps her section, the rhythm moves onto the module. */
.dive-hub .dive-ix-slot {
  padding: 0;
}
.dive-hub .dive-ix-slot .dv-ix {
  margin: 0;
  padding: 48px 0;
}
.dive-hub .dive-rail + .dive-ix-slot .dv-ix {
  border-top: 0;
}

/* ---- sections and cards (hub) ------------------------------------------- */
.dive-section > .shell {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 44px;
}
.dive-section > .shell > * {
  grid-column: 1 / -1;
  min-width: 0;
}
.dive-section > .shell > .dive-card {
  grid-column: auto;
}
.dive-section .section-rule a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font-size: 11px;
  letter-spacing: 0.08em;
}
.dive-section-intro {
  max-width: 760px;
  margin: 12px 0 14px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
  line-height: 1.5;
  color: var(--ink);
}

/* card: her .feed-item row, at a readable scale, whole card clickable.
   Grid rows stretch, so unequal cards share one baseline rule. */
.dive-section .dive-card {
  position: relative;
  grid-template-columns: 208px minmax(0, 1fr);
  gap: 20px;
  align-items: start;
  padding: 22px 0;
}
.dive-card .feed-img {
  height: auto;
}
.dive-card .feed-img img {
  height: auto;
  aspect-ratio: 16 / 9;
}
.dive-card .cat {
  font-size: 11px;
  letter-spacing: 0.1em;
}
.dive-section .dive-card h3 {
  font-size: 25px;
  line-height: 1.12;
  margin: 6px 0 8px;
}
.dive-card h3 a::after {
  content: "";
  position: absolute;
  inset: 0;
}
.dive-card:hover h3 a {
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: 3px;
}
.dive-card:has(a:focus-visible) {
  outline: 2px solid #8c6a32;
  outline-offset: 4px;
}
.dive-card h3 a:focus-visible {
  outline: 0;
}
.dive-section .dive-card p {
  font-size: 13px;
  line-height: 1.5;
}
.dive-card small {
  display: block;
  margin-top: 10px;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink);
}

/* heroless card: B7's dark .rtns-poster at the image's 16:9 */
.dive-card-tile.rtns-poster {
  padding: 14px 16px;
  border: 0;
  border-top: 3px solid var(--gold2);
}
.dive-card-tile .kicker {
  margin: 0;
  color: var(--gold2);
}

/* ---- quote cards ---------------------------------------------------------- */
.dive-quotes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
  column-gap: 44px;
  margin: 4px 0 8px;
}
.dive-quotes > * {
  min-width: 0;
}
.dive-quotes .dive-quote {
  margin: 20px 0;
}
.dive-article .dive-quotes {
  max-width: 980px;
  margin-top: 36px;
}

/* ---- soft band: small labels in --ink (see contrast note above) -------- */
.dive-section.soft .dive-card .cat,
.dive-section.soft .section-rule a,
.dive-calls-wrap .section-rule a,
.dive-calls-wrap .dive-calls-eyebrow,
.dive-article .soft .eyebrow,
.dive-article .soft .more {
  color: var(--ink);
}

/* ---- expert calls wrapper --------------------------------------------- */
.dive-calls-wrap .section-rule {
  margin-bottom: 20px;
}
.dive-calls-wrap .section-rule a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font-size: 11px;
  letter-spacing: 0.08em;
}
/* the board carries its own 48px margin + rule; the band already frames it */
.dive-calls-wrap .dive-calls-board {
  margin: 0;
  padding-top: 0;
  border-top: 0;
}
/* two soft bands in a row (Voices, then the board) need a divider */
.dive-section.soft + .dive-calls-wrap {
  border-top: 1px solid var(--line);
}
/* call cards sit on paper2 so their #8c6a32 labels clear AA (4.89:1) */
.dive-calls-wrap .dive-call {
  background: var(--paper2);
}

/* ---- contribute --------------------------------------------------------- */
.dive-contribute .shell {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 48px;
  align-items: end;
}
.dive-contribute .section-rule {
  grid-column: 1 / -1;
}
.dive-contribute p {
  max-width: 760px;
  margin: 16px 0 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 21px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.dive-contribute .btn {
  min-height: 48px;
  padding: 0 26px;
}
.dive-contribute .btn:hover {
  background: var(--gold2);
  border-color: var(--gold2);
}

/* ---- article ------------------------------------------------------------- */
.dive-section-eyebrow a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin: -16px 0 -15px; /* 44px target, 13px of layout */
}
.dive-section-eyebrow a:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
/* wider than the 720 reading column, never the full 1412 shell */
.dive-hero-figure {
  max-width: 980px;
  margin: 0 0 40px;
}
.dive-hero-figure img {
  height: auto;
  aspect-ratio: 16 / 9;
}

/* prev / next: her .rows/.row, as a two-up with the whole row clickable */
.dive-prevnext {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-bottom: 20px;
}
.dive-prevnext:not(:has(.row)) {
  display: none;
}
.dive-prevnext .row {
  position: relative;
  grid-template-columns: 1fr;
  gap: 4px;
  padding: 22px 0;
  min-width: 0;
}
.dive-previous {
  grid-column: 1;
  padding-right: 28px !important;
}
.dive-next {
  grid-column: 2;
  padding-left: 28px !important;
  border-left: 1px solid var(--line);
  text-align: right;
}
/* first or last article: one link spans the row, no empty half */
.dive-prevnext .row:only-child {
  grid-column: 1 / -1;
  border-left: 0;
}
.dive-previous .eyebrow::before {
  content: "\2190\00a0";
}
.dive-next .eyebrow::after {
  content: "\00a0\2192";
}
.dive-prevnext .eyebrow {
  margin-bottom: 6px;
}
.dive-prevnext h3 {
  font-size: 26px;
  line-height: 1.12;
}
.dive-prevnext p,
.dive-article .soft .rows .row p {
  font-size: 13px;
  line-height: 1.5;
}
.dive-article .soft .rows .row h3 a::after {
  content: "";
  position: absolute;
  inset: 0;
}
.dive-article .soft .rows .row {
  position: relative;
}
.dive-article .soft .rows .row:hover h3 a {
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: 3px;
}
.dive-article .soft .rows .row:has(a:focus-visible) {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}
.dive-article .soft .rows .row h3 a:focus-visible {
  outline: 0;
}
/* heroless "More in" rows: drop the empty 150px image column */
.dive-article .soft .rows .row:has(> div:empty) {
  grid-template-columns: 1fr;
}
.dive-article .soft .rows .row > div:empty {
  display: none;
}
.dive-prevnext + .section-rule {
  margin-top: 8px;
}
.dive-article .soft .more {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin-top: 14px;
}

/* ---- Dive layout: breakpoints --------------------------------------------- */
@media (max-width: 1100px) {
  /* her 70px column gap becomes a dead row gap once the grid stacks */
  .dive-hub .page-hero-grid,
  .dive-article .page-hero-grid {
    row-gap: 28px;
  }
  .dive-hero-band .hero-meta {
    margin-top: 0;
  }
  .dive-section > .shell {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-hero-band .dive-question {
    font-size: 23px;
  }
}

@media (max-width: 700px) {
  .dive-hero-band {
    padding: 44px 0 36px;
  }
  .dive-hero-band .dive-question {
    font-size: 21px;
    padding-left: 16px;
  }
  .dive-rail .dive-rail-links {
    padding-top: 12px;
    padding-bottom: 12px;
  }
  .dive-hub .dive-ix-slot .dv-ix {
    padding: 36px 0;
  }
  .dive-section .dive-card {
    grid-template-columns: 116px minmax(0, 1fr);
    gap: 14px;
    padding: 18px 0;
  }
  .dive-section .dive-card h3 {
    font-size: 21px;
  }
  .dive-card .feed-img img {
    aspect-ratio: 1 / 1;
  }
  .dive-card-tile.rtns-poster {
    aspect-ratio: 1 / 1;
    padding: 10px;
  }
  .dive-card-tile .kicker {
    font-size: 10px;
    letter-spacing: 0.1em;
  }
  .dive-section-intro {
    font-size: 17px;
  }
  .dive-contribute .shell {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-contribute p {
    font-size: 18px;
  }
  .dive-contribute .btn {
    justify-self: start;
    margin-top: 20px;
  }
  .dive-hero-figure {
    margin-bottom: 28px;
  }
  .dive-prevnext {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-previous,
  .dive-next {
    grid-column: 1;
    padding-left: 0 !important;
    padding-right: 0 !important;
    border-left: 0;
    text-align: left;
  }
  .dive-prevnext h3 {
    font-size: 22px;
  }
}

/* ==========================================================================
   v5 hub / article / planner modules (dive-plan-v5.md, adjusted).
   Reuses --paper/--paper2/--ink/--muted/--line/--gold/--gold2/--green/--dark
   only. Dark surfaces here (snapshot, route band, editor's note, claims
   theme tag): text pure #ffffff, accents full-brightness --gold2, per the
   dark-surface contract -- never opacity-dimmed. Breakpoints 1100/700/375
   match the rest of this file.
   ========================================================================== */

.dive-expo-logo {
  height: 44px;
  width: auto;
  margin-bottom: 18px;
}
.dive-independent-line {
  font-size: 13px;
  color: var(--muted);
  max-width: 46ch;
}

/* ---- Market snapshot: dark green-black panel, 6 cards, no deltas ------- */
.dive-snapshot {
  background: var(--dark);
  color: #fff;
  padding: 34px;
}
.dive-snapshot .dv-ix-eyebrow {
  color: var(--gold2);
}
.dive-snapshot .dv-ix-asof {
  color: #cfd3cf;
  font-size: 12px;
  margin: 0 0 18px;
}
.dive-snapshot-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.dive-snapshot-card {
  border-left: 2px solid var(--gold2);
  padding-left: 16px;
}
.dive-snapshot-label {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #cfd3cf;
  margin: 0 0 6px;
}
.dive-snapshot-value {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 30px;
  margin: 0 0 6px;
  color: #fff;
}
.dive-snapshot-def {
  font-size: 13px;
  color: #dad6cc;
  margin: 0 0 8px;
}
.dive-snapshot-meta {
  font-size: 11px;
  color: #a9ada9;
  margin: 0;
}
.dive-snapshot-meta a {
  color: var(--gold2);
}

/* ---- Lead story ---------------------------------------------------------*/
.dive-lead h2 {
  font-size: 40px;
  line-height: 1.08;
}
.dive-lead-cta {
  display: flex;
  gap: 12px;
  margin-top: 20px;
  flex-wrap: wrap;
}
.dive-photo-credit {
  display: block;
  font-size: 11px;
  color: var(--muted);
  margin-top: 6px;
}

/* ---- Headline stack / photo strip --------------------------------------*/
.dive-headline-stack .feed-item {
  margin-bottom: 26px;
}
.dive-photo-strip {
  /* Founder ruling 2026-09-24 ("RTNS 5-up photo strip"): 4 country cards
     + a 5th "Plan your day" card -- auto-fit so it still reads as 4-up
     when plan_day_card isn't resolved (graceful fallback). */
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 18px;
}
.dive-photo-strip-item {
  display: block;
}
.dive-photo-strip-item img {
  aspect-ratio: 4 / 3;
  margin-bottom: 8px;
}
.dive-photo-strip-title {
  display: block;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 16px;
  color: var(--ink);
}

/* ---- Build a Munich day: dark route band -------------------------------*/
.dive-route-band {
  background: var(--green);
  color: #fff;
  padding: 34px;
}
.dive-route-band .dv-ix-eyebrow {
  color: var(--gold2);
}
.dive-route-band-note {
  font-size: 13px;
  color: #cfe0d9;
  margin: 0 0 20px;
}
.dive-route-band-note a {
  color: var(--gold2);
  font-weight: 700;
}
.dive-route-band-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.dive-route-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  padding: 18px;
  min-height: 44px;
  color: #fff;
}
.dive-route-card:hover,
.dive-route-card:focus-visible {
  border-color: var(--gold2);
}
.dive-route-label {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 19px;
}
.dive-route-why {
  font-size: 13px;
  color: #d4d9d4;
}
.dive-route-count {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--gold2);
}

/* ---- Arguments to take into the halls (claims map) ---------------------*/
.dive-claims {
  display: grid;
  gap: 18px;
}
.dive-claim-card {
  background: var(--paper2);
  border: 1px solid var(--line);
  padding: 20px;
}
.dive-claim-theme {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--gold);
  margin: 0 0 10px;
}
.dive-claim-thesis,
.dive-claim-counter {
  font-size: 15px;
  line-height: 1.5;
  margin: 0 0 8px;
}
.dive-claim-evidence {
  margin: 10px 0 0;
  padding-left: 18px;
  font-size: 12px;
  color: var(--muted);
}
.dive-claim-route {
  display: inline-block;
  margin-top: 8px;
  font-size: 12px;
  font-weight: 700;
  color: var(--gold);
}

/* ---- Planning desk (reuses .rows/.row; give it its own density cue so it
   doesn't read thin against the dark snapshot/editor's-note panels) -------*/
.dive-desk-rail .row {
  align-items: baseline;
}
.dive-desk-rail .row > div:first-child {
  min-width: 0;
}
.dive-desk-rail .row > div:first-child::before {
  content: "\2013";
  font-weight: 700;
  color: var(--gold);
  margin-right: 6px;
}
.dive-desk-rail .row p {
  font-weight: 600;
}

/* ---- CEE country grid + yield ladder -----------------------------------*/
.dive-country-wrap {
  display: grid;
  gap: 24px;
}
@media (min-width: 900px) {
  .dive-country-wrap {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
    align-items: start;
  }
}
.dive-country-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.dive-country-cell {
  display: flex;
  justify-content: space-between;
  border-bottom: 1px solid var(--line);
  padding: 10px 0;
  font-size: 14px;
}
.dive-country-yield {
  font-weight: 700;
  color: var(--gold);
}
.dive-yield-ladder {
  margin: 0;
}
.dv-ix-ladder-svg {
  width: 100%;
  height: auto;
}
.dv-ix-ladder-axis {
  stroke: var(--line);
  stroke-width: 1;
}
.dv-ix-ladder-bar {
  stroke: var(--gold);
  stroke-width: 2;
}
.dv-ix-ladder-dot {
  fill: var(--gold);
}
.dv-ix-ladder-label,
.dv-ix-ladder-value {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 12px;
  fill: var(--ink);
}

/* ---- Cycles compact wrapper (reuses render_cycles() output as-is) ------*/
/* No fixed max-height / overflow:hidden here: an earlier version clipped
   the chart and the tables below the fold in a static screenshot (looked
   like a broken interactive). The figure and each table already scroll
   horizontally inside their own frame (.dv-ix-figure / .dv-ix-tablewrap);
   the section itself must stay auto-height so nothing is cut vertically. */

/* ---- Editor's note / continue the case ---------------------------------*/
.dive-editor-note {
  background: var(--green);
  color: #fff;
  padding: 34px;
  max-width: 760px;
}
.dive-editor-note .dv-ix-eyebrow {
  color: var(--gold2);
}
.dive-editor-note p:last-child {
  font-size: 17px;
  line-height: 1.6;
  margin: 0;
}
.dive-continue {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.dive-continue .dv-ix-eyebrow {
  grid-column: 1 / -1;
}

/* ---- Article: TL;DR / What-to-test callout / thesis cards / sources ----*/
.dive-tldr,
.dive-test-callout {
  background: var(--paper);
  border-left: 3px solid var(--gold);
  padding: 18px 22px;
  margin: 0 0 28px;
}
.dive-tldr ul,
.dive-test-callout ul {
  margin: 8px 0 0;
  padding-left: 20px;
}
.dive-tldr li,
.dive-test-callout li {
  font-size: 15px;
  line-height: 1.5;
  margin-bottom: 6px;
}
.dive-thesis-cards {
  display: grid;
  gap: 16px;
  margin: 28px 0;
}
.dive-thesis-card {
  border: 1px solid var(--line);
  padding: 18px 22px;
}
.dive-thesis-line,
.dive-thesis-test {
  font-size: 15px;
  line-height: 1.5;
  margin: 0 0 8px;
}
.dive-thesis-card .btn {
  margin-top: 6px;
}
.dive-sources {
  margin: 28px 0;
  border-top: 1px solid var(--line);
  padding-top: 14px;
}
.dive-sources summary {
  cursor: pointer;
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--gold);
}
.dive-sources ul {
  margin: 12px 0 0;
  padding-left: 20px;
}
.dive-sources li {
  font-size: 13px;
  line-height: 1.6;
  color: var(--muted);
}
.dive-related .row-img {
  aspect-ratio: 4 / 3;
}

/* ---- Standalone planner page --------------------------------------------*/
.dive-planner-routes {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 12px;
}
.dive-planner-tab {
  min-height: 44px;
}
.dive-planner-note {
  font-size: 13px;
  color: var(--muted);
  max-width: 62ch;
  margin: 0 0 28px;
}
.dive-planner-note a {
  color: var(--gold);
  font-weight: 700;
}
.dive-planner-route {
  border-top: 1px solid var(--line);
  padding-top: 24px;
  margin-top: 24px;
}
.dive-planner-route h2 {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 26px;
  margin: 0 0 6px;
}
.dive-planner-route .dive-route-why {
  color: var(--muted);
  font-size: 14px;
  margin: 0 0 18px;
}

@media (max-width: 1100px) {
  .dive-snapshot-grid,
  .dive-route-band-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .dive-photo-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 700px) {
  /* .dive-subnav / .dive-breadcrumb mobile gutter override lives further
     down (after their base rule, so it actually wins the cascade -- see
     the note there, alignment gate 2026-09-24). */
  .dive-snapshot-grid,
  .dive-route-band-grid,
  .dive-photo-strip,
  .dive-country-grid,
  .dive-continue {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-country-wrap {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-lead h2 {
    font-size: 30px;
  }
  /* the country list and the yield ladder show the same 5 cities twice at
     this width; the list is the readable one, so the ladder chart hides */
  .dive-yield-ladder {
    display: none;
  }
}

/* ---- horizontally-scrollable figures/tables: discoverable, not a dead end */
@media (max-width: 700px) {
  .dv-ix-figure,
  .dv-ix-tablewrap {
    position: relative;
  }
  .dv-ix-figure::after,
  .dv-ix-tablewrap::after {
    content: "Swipe to see more \2192";
    display: block;
    font-size: 11px;
    color: var(--muted);
    text-align: right;
    padding: 3px 8px;
    background: var(--paper2);
    border-top: 1px solid var(--line);
  }
}

/* ===========================================================================
   Founder ruling 2026-09-24: every LIGHT background on Dive pages is RT
   canon Seashell #fff5ee (rt-brand-golden-standard.md L169-172), not the
   donor's warm-ivory --paper2 (#fffdf8) / --paper (#f6f2ea) or the
   hardcoded #f1ebdf .soft band. donor/styles.css is frozen (md5-checked) --
   this overrides scoped to `body.dive-page` (set by build.py on the v5 hub,
   article and planner pages only), so PTC26 and every non-Dive page keep
   the donor palette untouched. Redefining the custom properties here
   cascades into every donor rule that reads var(--paper)/var(--paper2)
   (body background, .rows-based panels, etc.); the one HARDCODED donor hex
   (.event-v2-section.soft{background:#f1ebdf}) needs a direct override
   since it never reads the variable. White .card fills stay white (still
   read clearly against seashell, hairline border unchanged) per the
   ruling's own carve-out. Dark panels/bands and the black .mast/.footer
   are untouched -- this only ever redefines LIGHT surfaces.
   =========================================================================== */
body.dive-page {
  --paper: #fff5ee;
  --paper2: #fff5ee;
}
body.dive-page .event-v2-section.soft {
  background: #fff5ee;
}
/* Pass 4 conformance fix: no inline style="object-position:...". The
   focal point ships as a data-focus attribute; dive-ix.js reads it via
   CSSOM (same pattern as --dv-split). This is the no-JS default. */
body.dive-page img[data-focus] {
  object-position: 50% 50%;
}

/* ===========================================================================
   Pass 2 (2026-09-24): breadcrumb + sticky sub-nav, binge components,
   contribute module + news board. Donor tokens only (--paper/--paper2,
   --ink, --muted, --line, --gold/--gold2, --dark); sticky offset clears the
   fixed .mast via --nav-h (rtns.css), per the sticky-chrome rect check in
   verification-before-completion.md.
   =========================================================================== */

.dive-breadcrumb {
  /* Founder ruling 2026-09-24 (alignment gate): every block aligns to the
     SAME grid as the donor shell class (max-width var(--max), 34px
     gutters), not its own max-width/padding -- exactly the "crooked"
     defect class the founder flagged (sub-nav/breadcrumb starting at a
     different x than the shell's own content). */
  max-width: var(--max);
  /* Verify-phase fix (2026-09-25, defect 4): trimmed from 10px so the
     REST-state (unscrolled) gap between the header and the sub-nav is as
     small as the breadcrumb's own line-height allows. The subnav's
     STICKY-engaged state (confirmed flush, <=1px) is unaffected -- see
     qa/2026-09-25-verify/fixes/ for the full rect table at rest and
     scrolled, at every width. */
  margin: 0 auto;
  padding: 0 34px;
  font-size: 12px;
  line-height: 1.3;
  color: var(--muted);
}
.dive-breadcrumb a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--line);
}
.dive-breadcrumb .sep {
  margin: 0 6px;
  color: var(--line);
}
.dive-breadcrumb [aria-current="page"] {
  color: var(--ink);
  font-weight: 600;
}

.dive-subnav {
  position: sticky;
  /* --nav-h (rtns.css) is scoped to .mast, not :root -- it does not cascade
     into .dive-subnav, a .mast sibling under <main>. Mirror .mast's own
     700px breakpoint directly instead of relying on the custom property
     here; verified against .mast's live rect via smoke_dive.py's
     subnav_rect_check (Pass 2), which caught the 12px gap this fixes. */
  top: 76px;
  z-index: 110;
  display: flex;
  gap: 2px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  /* Verify-phase fix (2026-09-25, defect 4): trimmed from 8px, same reason
     as .dive-breadcrumb's margin above. */
  margin-top: 0;
  /* Alignment gate: same grid as .shell -- the row itself is full width for
     the sticky background, but its first link must start at the same x as
     every other block's content. */
  max-width: var(--max);
  margin-left: auto;
  margin-right: auto;
  padding-left: 34px;
  padding-right: 34px;
}
.dive-subnav a {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 16px 0 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 3px solid transparent;
  white-space: nowrap;
}
.dive-subnav a[aria-current="true"] {
  border-bottom-color: var(--gold2);
  color: #000;
}
.dive-subnav a:hover,
.dive-subnav a:focus-visible {
  border-bottom-color: var(--gold);
}

@media (max-width: 700px) {
  .dive-subnav {
    top: 64px;
    /* Alignment gate 2026-09-24: this rule sits AFTER the base .dive-subnav
       block above in source order, so it's the one that actually wins the
       cascade (equal specificity) -- an earlier duplicate override earlier
       in the file was being silently clobbered by the base rule's 34px.
       Match .shell's own 18px mobile gutter (donor, same 700px break). */
    padding-left: 18px;
    padding-right: 18px;
  }
  .dive-breadcrumb {
    padding: 0 18px;
  }
  .dive-hub section[id],
  .dive-article [id^="s-"],
  .dive-article [id^="thesis-"] {
    scroll-margin-top: calc(64px + 52px);
  }
}

/* section anchor targets: keep headings clear of the fixed mast + sticky
   sub-nav when a subnav link (or any #s-... deep link) jumps to them */
.dive-hub section[id],
.dive-article [id^="s-"],
.dive-article [id^="thesis-"] {
  /* --nav-h does not cascade here either (see .dive-subnav note above);
     76px mirrors .mast's own desktop height (rtns.css), the 700px media
     query below overrides to the 64px mobile height. */
  scroll-margin-top: calc(76px + 52px);
}

.dive-series-progress {
  max-width: 1180px;
  margin: 14px auto 0;
  padding: 0 16px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.dive-next-up {
  /* Alignment gate 2026-09-24: .shell itself stays the standard grid width
     (never re-centered narrower); only this inner card is a narrower
     measure, so it still starts flush at the same x as everything else. */
  max-width: 780px;
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 18px;
  align-items: center;
  color: inherit;
  text-decoration: none;
}
.dive-next-up-img img {
  width: 100%;
  height: 110px;
  object-fit: cover;
  display: block;
}
.dive-next-up-body h3 {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 24px;
  margin: 4px 0 6px;
}
.dive-next-up-body p {
  margin: 0;
  color: var(--muted);
}
@media (max-width: 640px) {
  .dive-next-up {
    grid-template-columns: 1fr;
  }
}

.dive-plan-cta-wrap .shell {
  text-align: left;
}

.dive-role-paths {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.dive-role-path h3 {
  font-size: 14px;
  margin: 0 0 6px;
}
.dive-role-why {
  color: var(--muted);
  font-size: 13px;
  margin: 0 0 8px;
}
.dive-role-path ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.dive-role-path li {
  padding: 8px 0;
  border-top: 1px solid var(--line);
}
.dive-role-path a {
  color: inherit;
  text-decoration: none;
}
.dive-role-path a:hover {
  text-decoration: underline;
  text-decoration-color: var(--gold);
}
@media (max-width: 900px) {
  .dive-role-paths {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 480px) {
  .dive-role-paths {
    grid-template-columns: 1fr;
  }
}

.dive-contribute-inline {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin: 18px 0;
  padding: 14px 16px;
  border: 1px solid var(--line);
  background: var(--paper2);
}
.dive-contribute-inline p {
  margin: 0;
  font-size: 14px;
}

.dive-contribute-module {
  padding: 28px 0;
}
.dive-contribute-h {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 30px;
  margin: 4px 0 10px;
}
.dive-contribute-dek {
  color: var(--muted);
  max-width: 640px;
}
.dive-contribute-what {
  margin: 14px 0;
  padding-left: 18px;
  max-width: 640px;
}
.dive-contribute-what li {
  margin: 6px 0;
}
.dive-contribute-cta {
  margin: 10px 0 14px;
}
.dive-contribute-promise,
.dive-contribute-privacy {
  font-size: 13px;
  color: var(--muted);
  max-width: 640px;
}

/* Pass 4: RealTimes PeerView. Donor .event-v2-section (bare, no .soft/.dark
   modifier -> light paper ground), .feed-item reused for the still (a
   single-image variant, same "enlarged via modifier" pattern as the lead
   story per component-map.md). Fillers: .dive-peerview, .dive-peerview-card. */
body.dive-page .event-v2-section.dive-peerview {
  /* Height budget (wireframes.md): trims the donor .event-v2-section
     padding further for this single-column module (Dive pages already
     trim it to 26px 0 at body.dive-page .event-v2-section; specificity
     bumped to beat that rule, same idea as .dive-contribute-module's own
     compact padding). */
  padding: 20px 0;
}
.dive-peerview-card {
  padding: 8px 0;
  max-width: 760px;
}
.dive-peerview-h {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 30px;
  margin: 4px 0 10px;
}
.dive-peerview-dek {
  color: var(--muted);
  max-width: 640px;
}
.dive-peerview-what {
  margin: 14px 0;
  padding-left: 18px;
  max-width: 640px;
}
.dive-peerview-what li {
  margin: 6px 0;
}
.dive-peerview-ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 14px 0;
}
.dive-peerview-film {
  display: inline-block;
  font-size: 13px;
  color: #8c6a32;
  text-decoration: underline;
  margin: 2px 0 4px;
}
/* Pass 4b: sponsor line sits directly under the film link, in the
   module's body colour (var(--ink)), never in --muted (that reads as a
   caption) and never bold (this is not the offer copy, it is a credit). */
.dive-peerview-sponsor {
  font-size: 13px;
  color: var(--ink);
  margin: 0 0 14px;
}
.dive-peerview-still {
  display: block;
  grid-template-columns: 1fr;
  border-bottom: none;
  padding: 0 0 18px;
  margin: 0 0 18px;
  max-width: 420px;
}
.dive-peerview-still img {
  /* Pass 4b (Alex ruling 2026-09-25): the thumbnail is never cropped.
     16:9 + object-fit:contain shows the whole frame at every width --
     object-fit:cover (the pass-4 default) would crop it. */
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  object-fit: contain;
  display: block;
}
/* Pass 4b fix round (coordinator, 2026-09-25): >=1024px, two columns --
   text left, thumbnail+caption right, top-aligned -- same grid idiom as
   .dive-country-wrap (minmax(0,1fr) pair, align-items:start, 24px gap).
   Below 1024 the module stays the single stacked column above (image
   first in the DOM, so mobile always shows the image before the copy).
   Grid placement only (`.dive-peerview-still` -> column 2; every other
   direct child -> column 1) -- DOM order is untouched, so this is a
   pure CSS re-flow, not a markup change. */
@media (min-width: 1024px) {
  .dive-peerview-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: start;
    column-gap: 24px;
    row-gap: 0;
    max-width: none;
  }
  .dive-peerview-card > *:not(.dive-peerview-still) {
    grid-column: 1;
  }
  .dive-peerview-still {
    grid-column: 2;
    grid-row: 1;
    align-self: start;
    max-width: none;
    margin: 0;
  }
}
.dive-peerview-still figcaption {
  font-size: 11px;
  color: var(--muted);
  margin-top: 6px;
}

.dive-news-board {
  margin-top: 30px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}
.dive-news-board-h {
  font-size: 16px;
  margin: 0 0 6px;
}
.dive-news-board-empty {
  color: var(--muted);
  max-width: 560px;
}
.dive-news-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  margin-top: 10px;
}
.dive-news-card {
  padding: 14px 16px;
  border: 1px solid var(--line);
  background: var(--paper);
}
.dive-news-checked {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #8c6a32;
  margin-bottom: 6px;
}
.dive-news-headline {
  margin: 0 0 6px;
}
.dive-news-summary {
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 14px;
}
.dive-news-meta {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}
@media (max-width: 640px) {
  .dive-news-cards {
    grid-template-columns: 1fr;
  }
}

.dive-planner-buffer {
  font-size: 12px;
  color: #8c6a32;
  font-weight: 700;
  margin: 6px 0 4px;
}

/* ===========================================================================
   Founder ruling 2026-09-24: hero banners use the Skyscraper Day / IPS26
   canon (1B: full-bleed plate + scrim title block). Cloned from
   ~/RealTimes/dives/skyscraper-day/website/css/hero.css's `.dive-hero.b`
   block and its dive_hero_band() markup -- class names, tokens and the
   scrim/plate contract are theirs verbatim; this Dive drops the countdown
   bar, the video layer and the ticker (IPS-specific, not part of this
   ruling) and adds `.dek`, `.meta`, `.ctas` and `.dive-independent-line`
   inside the scrim box for the hub's headline/dek/CTAs/independent line and
   the article's eyebrow/dek/meta. Static photo plate only -- no video, no
   countdown. Fonts and gold stay Domi's donor tokens (--gold/--gold2), not
   the source file's own --rt-gold-bright, per the ruling.
   =========================================================================== */
.dive-hero {
  --scrim: rgba(6, 12, 18, 0.74);
  --scrim-soft: rgba(6, 12, 18, 0.62);
  position: relative;
  color: #ffffff;
  overflow: hidden;
  isolation: isolate;
  min-height: 480px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.dive-hero .photo {
  /* Pass 4: was a <div style="background-image:...">; now a real <img>
     (no inline style at all), same box + fill behaviour via object-fit. */
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  background: #0b1a22;
  object-fit: cover;
  object-position: 50% 45%;
}
.dive-hero .b-top {
  /* Alignment gate 2026-09-24: same grid as .shell, not the source kit's
     own 1180px/32px measure. */
  position: relative;
  padding: 24px 34px 0;
  max-width: var(--max);
  margin: 0 auto;
  width: 100%;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.dive-hero .b-top img.rt {
  height: 30px;
  width: auto;
  padding: 10px 14px;
  background: var(--scrim-soft);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.dive-hero .b-top .dive-independent-line {
  margin: 0;
  padding: 10px 14px;
  background: var(--scrim-soft);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  font-size: 12px;
  max-width: 360px;
  color: #ffffff;
}
.dive-hero .b-title-wrap {
  position: relative;
  max-width: var(--max);
  margin: auto auto 0;
  width: 100%;
  padding: 60px 34px 40px;
}
.dive-hero .b-title-wrap .inner {
  display: inline-block;
  background: var(--scrim);
  padding: 22px 28px 24px;
  max-width: 680px;
}
.dive-hero .eyebrow {
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--gold2);
  margin: 0 0 10px;
}
.dive-hero .title {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  line-height: 1.04;
  color: #ffffff;
  font-size: clamp(30px, 4vw, 54px);
  margin: 0;
}
.dive-hero .dek {
  color: #ffffff;
  font-size: 16px;
  line-height: 1.5;
  margin: 12px 0 0;
  max-width: 560px;
}
.dive-hero .meta {
  color: #ffffff;
  font-size: 13px;
  margin: 12px 0 0;
}
.dive-hero .ctas {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 18px;
}
.dive-hero .ctas .btn {
  color: #ffffff;
  border-color: #ffffff;
}
.dive-hero .ctas .btn.gold {
  background: var(--gold2);
  border-color: var(--gold2);
  color: var(--ink);
}
.dive-hero-credit {
  position: absolute;
  right: 12px;
  bottom: 8px;
  z-index: 1;
  font-size: 11px;
  color: #ffffff;
  background: var(--scrim-soft);
  padding: 3px 8px;
}
.dive-hero-article {
  min-height: 360px;
}
.dive-hero-planner {
  min-height: 320px;
}
@media (max-width: 720px) {
  .dive-hero {
    min-height: 380px;
  }
  .dive-hero .b-top {
    /* Alignment gate 2026-09-24: match .shell's 18px mobile gutter (this
       block used 720px, not the donor's 700px break, but close enough
       that both apply together under 700px; the values themselves now
       match regardless of which query wins). */
    padding: 16px 18px 0;
  }
  .dive-hero .b-title-wrap {
    padding: 36px 18px 24px;
  }
  .dive-hero .b-title-wrap .inner {
    padding: 16px 18px;
    display: block;
    max-width: none;
  }
}

/* ===========================================================================
   Founder ruling 2026-09-24: expert calls are back, prominent. Article-top
   chip strip anchoring to the boxes below; the boxes themselves (eyebrow,
   title, context, numbered questions, gold mailto CTA, consent line, per-
   call share); the hub's grouped "Open calls" board. Donor tokens only.
   =========================================================================== */
.dive-call-strip {
  margin: 18px 0 0;
  padding: 14px 16px;
  background: var(--paper2);
  border: 1px solid var(--line);
}
.dive-call-strip-lead {
  margin: 0 0 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.dive-call-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.dive-call-chip {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 0 12px;
  font-size: 12px;
  font-weight: 700;
  color: var(--ink);
  background: #ffffff;
  border: 1px solid var(--gold);
  text-decoration: none;
}
.dive-call-chip:hover,
.dive-call-chip:focus-visible {
  background: var(--gold);
  color: var(--ink);
}

.dive-expert-calls {
  display: grid;
  gap: 18px;
  margin: 24px 0;
}
.dive-expert-call {
  padding: 22px 24px;
  border: 1px solid var(--line);
  background: #ffffff;
  scroll-margin-top: calc(76px + 52px);
}
.dive-call-title {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 22px;
  margin: 6px 0 10px;
}
.dive-call-context {
  color: var(--muted);
  margin: 0 0 12px;
}
.dive-call-questions {
  margin: 0 0 16px;
  padding-left: 20px;
}
.dive-call-questions li {
  margin: 6px 0;
}
.dive-call-consent {
  font-size: 12px;
  color: var(--muted);
  margin: 12px 0 0;
}
.dive-call-share {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.dive-open-calls-wrap .section-rule {
  margin-bottom: 12px;
}
.dive-open-calls .dv-ix-sub {
  margin: 0 0 16px;
}
.dive-calls-group {
  margin: 0 0 22px;
}
.dive-calls-role {
  font-size: 14px;
  margin: 0 0 10px;
}
.dive-call-card {
  display: block;
  padding: 14px 16px;
  border: 1px solid var(--line);
  background: #ffffff;
  color: inherit;
  text-decoration: none;
}

.dive-call-card h4 {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 16px;
  margin: 4px 0 0;
}
.dive-call-card:hover,
.dive-call-card:focus-visible {
  border-color: var(--gold);
}

/* ===========================================================================
   Founder ruling 2026-09-24: article reading column widened to ~780px at
   1440 (was 720px, rtns-event.css's donor-gap-fill default -- that file is
   shared with plain Events pages, so this overrides SCOPED to .dive-article
   only, never touching rtns-event.css itself). 16-18px body size / ~1.65
   line-height unchanged (rtns-event.css already sets them). TL;DR, the
   "What to test" callout, the thesis cards and the expert-call boxes now
   share the SAME measure so nothing reads narrower or wider than the body
   prose beside it. Mobile keeps the donor .shell 18px gutter untouched.
   =========================================================================== */
.dive-article .rtns-article-body,
.dive-article .dive-tldr,
.dive-article .dive-test-callout,
.dive-article .dive-thesis-cards,
.dive-article .dive-expert-calls {
  max-width: 780px;
  /* Wave 2, M7 fix-list F3 (8 HIGH rows, .dive-tldr): the 780px column
     stayed flush-left inside a wider parent, leaving a visible empty
     right band on any box with a background/border. Centring keeps the
     founder-ruled 780px measure; it does not widen it. */
  margin-left: auto;
  margin-right: auto;
}
/* Wave 2 -- FAQ / comparison-table blocks (M5 articles-db schema).
   Untriggered on any current article (see build.py render_article_faq_html
   / render_article_comparison_table_html); styles wired ahead of content. */
.dive-faq {
  max-width: 780px;
  margin: 24px auto;
}
.dive-faq h2 {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
}
.dive-faq-item {
  border-top: 1px solid var(--line);
  padding: 12px 0;
}
.dive-faq-item summary {
  cursor: pointer;
  font-weight: 700;
}
.dive-faq-item p {
  margin: 10px 0 0;
  color: var(--muted);
}
.dive-comparison-table {
  max-width: 780px;
  margin: 24px auto;
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.dive-comparison-table th,
.dive-comparison-table td {
  border: 1px solid var(--line);
  padding: 8px 10px;
  text-align: left;
}
.dive-comparison-table caption {
  caption-side: top;
  text-align: left;
  font-weight: 700;
  margin-bottom: 8px;
}

.dive-component-dek,
.dive-independent-line,
.dive-peerview-dek,
.dive-peerview-what,
.dive-next-up,
.dv-my-head,
.dv-my-route-why {
  /* Wave 2, M7 fix-list F2/LOW sweep: better wrap, no layout change.
     (.rtns-article-body / .rtns-article-video get the same property in
     rtns.css, since those two classes are shared with rtns-event.css /
     PTC26 pages, which this file must never touch.) */
  text-wrap: pretty;
}

/* ===========================================================================
   Founder ruling 2026-09-24 (queue item 14): argument cards get a compact
   Agree/Disagree + share disclosure, driven by _editorial/interactive-
   copy.json (elements.arguments.<claim id>). A small <details>, not a wall
   of buttons.
   =========================================================================== */
.dive-claim-share {
  margin-top: 14px;
}
.dive-claim-share summary {
  /* light (soft/seashell) surface: small gold text is the AA-safe
     #8c6a32, not --gold2 (bright, dark-surface only) -- same rule the
     file's contrast note above already documents for this card class. */
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--gold);
}
.dive-claim-share-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

/* ===========================================================================
   Founder ruling 2026-09-24: full-bleed photo band under "Build a Munich
   day", credit line inner content aligned to the shell grid.
   =========================================================================== */
.dive-photo-band {
  margin: 0;
  position: relative;
}
.dive-photo-band img {
  width: 100%;
  height: clamp(220px, 32vw, 420px);
  object-fit: cover;
  display: block;
}
.dive-photo-band .dive-photo-credit {
  position: absolute;
  right: 0;
  bottom: 8px;
  left: 0;
  margin: 0 auto;
  padding: 0 34px;
  text-align: right;
  font-size: 11px;
  color: #ffffff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
}

.dive-contribute-photo {
  position: relative;
  margin: 0 0 18px;
}
.dive-contribute-photo img {
  width: 100%;
  height: 220px;
  object-fit: cover;
  display: block;
}
.dive-contribute-photo .dive-photo-credit {
  position: absolute;
  right: 8px;
  bottom: 6px;
  font-size: 11px;
  color: #ffffff;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
}

.dive-continue-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-right: 16px;
}
.dive-continue-thumb {
  display: inline-block;
  width: 32px;
  height: 32px;
  overflow: hidden;
}
.dive-continue-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.dive-role-path-thumb {
  width: 24px;
  height: 24px;
  object-fit: cover;
  vertical-align: middle;
  margin-right: 8px;
}

/* ===========================================================================
   Founder review 2026-09-24 (hub-1440 pass2b): one section rhythm, the RTNS
   News home spacing (donor news-body runs ~26/44px, not the 64/64px
   event-v2-section band spacing that left 120-160px dead gaps between
   consecutive bands). Applies on every Dive page.
   =========================================================================== */
body.dive-page .event-v2-section {
  padding: 30px 0;
}
body.dive-page .event-v2-section + .event-v2-section:not(.soft):not(.dark) {
  padding-top: 8px;
}
body.dive-page .section-rule {
  margin-bottom: 14px;
}

/* share row attached to the hero: slim bar, no gap */
.dive-hero-share-wrap {
  background: var(--paper2);
  border-bottom: 1px solid var(--line);
}
.dive-hero-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding-top: 10px;
  padding-bottom: 10px;
}
.dive-hero-bar .dive-share {
  margin: 0;
}
.dive-hero-bar .dive-independent-line {
  margin: 0;
  font-size: 12px;
}
.dive-attrib-logo {
  height: 32px;
  width: auto;
  display: block;
}
.dive-call-strip-wrap {
  padding-top: 16px;
}

/* Planning desk: compact label/value list */
.dive-desk-list {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0 24px;
  border-top: 1px solid var(--line);
}
.dive-desk-item {
  display: flex;
  gap: 8px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
  font-size: 15px;
  line-height: 1.45;
}
.dive-desk-item dt {
  font-weight: 700;
  color: var(--ink);
  white-space: nowrap;
}
.dive-desk-item dd {
  margin: 0;
  color: var(--ink);
}

/* More arguments: RTNS standard dek size */
.dive-headline-stack .feed-item p {
  font-size: 15px;
  line-height: 1.5;
}
.dive-headline-stack .feed-item small {
  font-size: 12px;
}
.dive-headline-stack .feed-img {
  position: relative;
}
.dive-headline-stack .feed-img .dive-photo-credit,
.dive-photo-strip-item .dive-photo-credit {
  display: block;
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
}

/* Open calls: compact text cards, count-independent (flex rows stretch, so a
   final row is never left-weighted; tested with 1, 2 and 4 cards) */
.dive-calls-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.dive-calls-cards .dive-call-card {
  flex: 1 1 260px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 16px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-top: 2px solid var(--gold);
}
.dive-calls-cards .dive-call-card h4 {
  margin: 0;
  font-size: 17px;
}
.dive-call-card-q {
  margin: 0;
  font-size: 14px;
  line-height: 1.45;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.dive-calls-cards .dive-call-card .more {
  margin-top: auto;
}
.dive-calls-group {
  margin: 0 0 16px;
}

/* route cards carry their asset-map image */
.dive-route-img {
  display: block;
  margin: -1px -1px 10px;
}
.dive-route-img img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}
.dive-route-img .dive-photo-credit {
  display: block;
  font-size: 10px;
  color: #cfe0d9;
  margin-top: 3px;
}

/* editor's note beside its band image */
.dive-editor-note-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: 24px;
  align-items: stretch;
}
.dive-editor-note-img {
  margin: 0;
}
.dive-editor-note-img img {
  width: 100%;
  height: 100%;
  max-height: 320px;
  object-fit: cover;
  display: block;
}
.dive-editor-note-img .dive-photo-credit {
  font-size: 11px;
  color: var(--muted);
}
@media (max-width: 700px) {
  .dive-editor-note-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.dive-calls-top {
  margin-bottom: 14px;
}
.dive-calls-all > summary {
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gold);
  padding: 8px 0;
}
.dive-calls-all[open] > summary {
  margin-bottom: 12px;
}
/* claims map: two columns at desktop (8 stacked cards ran ~1,900px) */
@media (min-width: 900px) {
  .dive-claims {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .dive-claims > .dv-ix-head {
    grid-column: 1 / -1;
  }
}
/* route band: shallower card images */
.dive-route-img img {
  aspect-ratio: 21 / 9;
}
@media (min-width: 1200px) {
  .dive-route-band-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .dive-route-img img {
    aspect-ratio: 4 / 3;
  }
}
.dive-photo-band img {
  height: clamp(200px, 24vw, 340px);
}

/* In-body article figures (asset-map in-body slots) */
.dive-article .dive-body-figure {
  margin: 8px 0 24px;
  max-width: 780px;
}
.dive-article .dive-body-figure img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  display: block;
}
.dive-article .dive-body-figure .dv-ix-caption {
  font-size: 12px;
  color: var(--muted);
  margin-top: 6px;
}

/* ===========================================================================
   Build wiring round 2026-09-24 (founder review of pass2b + item 14)
   =========================================================================== */
/* compact per-component share: a small disclosure, not a wall of buttons */
.dive-mini-share {
  margin-top: 10px;
}
.dive-mini-share > summary {
  cursor: pointer;
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--gold);
  list-style: none;
}
.dive-mini-share > summary::-webkit-details-marker {
  display: none;
}
.dive-mini-share > summary::after {
  content: " +";
}
.dive-mini-share[open] > summary::after {
  content: " \2212";
}
/* Verify-phase fix (2026-09-25, defect 1): scoping display:flex to
   .dive-share unconditionally defeated native <details> closed-state
   hiding -- a closed .dive-mini-share still rendered its buttons
   (dark-on-dark, 1.01:1). [open] only, so a closed accordion truly
   hides its content, matching every browser's default <details> CSS. */
.dive-mini-share:not([open]) .dive-share {
  display: none;
}
.dive-mini-share[open] .dive-share {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.dive-snapshot .dive-mini-share > summary,
.dive-route-band .dive-mini-share > summary,
.dive-cycles-share .dive-mini-share > summary {
  color: var(--gold2);
}

/* route cards: card + its share; credit one line under the image */
.dive-route-card-wrap {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.dive-route-card-wrap .dive-route-card {
  flex: 1 1 auto;
}
.dive-route-credit {
  display: block;
  font-size: 11px;
  line-height: 1.3;
  color: #cfe0d9;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin: -6px 0 8px;
  max-width: 100%;
}
.dive-route-img .dive-photo-credit {
  display: none;
}

/* Munich panorama: short credit on a small dark chip, like the hero's */
.dive-photo-band .dive-photo-chip {
  position: absolute;
  right: 12px;
  bottom: 8px;
  font-size: 11px;
  color: #ffffff;
  background: rgba(6, 12, 18, 0.62);
  padding: 3px 8px;
  margin: 0;
}

/* CEE yields: ladder only, full width */
.dive-country-wrap {
  display: block;
}
.dive-country-wrap .dive-yield-ladder {
  margin: 0;
  max-width: none;
}
.dive-country-wrap .dv-ix-ladder-svg {
  width: 100%;
  height: auto;
  display: block;
}

/* editor's note: balanced two columns, the image always has a box */
.dive-editor-note-grid .dive-editor-note {
  max-width: none;
}
.dive-editor-note-img img {
  height: 280px;
  max-height: none;
}

/* contribute band: shorter crop toward the window and desk */
.dive-contribute-photo img {
  height: 180px;
}

/* cycles story share sits inside its dark section */
.dive-cycles-share {
  padding-top: 8px;
  padding-bottom: 24px;
}

/* hub length budget (founder target <= 8,000px at 1440) */
.dive-hero-hub {
  min-height: 440px;
}
.dive-photo-band img {
  height: clamp(180px, 20vw, 280px);
}
body.dive-page .event-v2-section {
  padding: 26px 0;
}

/* ===========================================================================
   Brand review 2026-09-24 (MAJOR x2), hero band only:
   - the white RealTimes logo with the red i sits in .b-top (canon lockup:
     26px desktop, 20px mobile, opacity 1, no filters);
   - gold inside the 1B hero is the CANON gold-bright #e2c77a (founder
     ruling "for hero banners use the canons from other dives": the IPS26 /
     Skyscraper Day hero.css --rt-gold-bright). Everywhere else on the Dive
     keeps the RTNS donor golds (--gold / --gold2).
   =========================================================================== */
.dive-hero {
  --rt-gold-bright: #e2c77a;
}
.dive-hero .b-top img.rt {
  height: 46px;
  width: auto;
  padding: 10px 14px;
  object-fit: contain;
  opacity: 1;
}
.dive-hero .eyebrow {
  color: var(--rt-gold-bright);
}
.dive-hero .ctas .btn.gold {
  background: var(--rt-gold-bright);
  border-color: var(--rt-gold-bright);
  color: var(--ink);
}
@media (max-width: 520px) {
  .dive-hero .b-top img.rt {
    height: 38px;
    padding: 9px 12px;
  }
}

/* Dive pages: the shared newsletter block ("Sign-up opens with the full
   site", disabled input) is hidden here -- a Dive-scoped rule, never an
   edit to the shared site.js (PTC26 md5 invariant) -- and replaced by the
   morning-brief band. */
body.dive-page .newsletter {
  display: none;
}
.dive-brief-band {
  background: var(--dark);
  color: #ffffff;
  padding: 18px 0;
}
.dive-brief-band p {
  margin: 0;
  font-size: 15px;
}
.dive-brief-band a {
  color: var(--gold2);
  font-weight: 700;
}

/* ===========================================================================
   Rendered QA 2026-09-24: contrast, tap targets, thumbnail credits
   Contrast rule: on LIGHT surfaces (Seashell/white) small gold text uses the
   dark label gold #8c6a32 (4.89:1 on #fff5ee); the brighter golds (--gold
   #b98132 = 3.13:1, --gold2 #d8ad63 = 1.94:1) stay on dark surfaces only.
   Muted text on light is the donor --muted #6c675e (5.2:1).
   =========================================================================== */
body.dive-page {
  --dive-label-gold: #8c6a32;
}
body.dive-page summary,
body.dive-page .dive-mini-share > summary,
body.dive-page .dive-calls-all > summary,
body.dive-page .dive-claim-share summary,
body.dive-page .dive-claim-theme,
body.dive-page .dive-claim-route,
body.dive-page .dive-yield-value,
body.dive-page .more,
body.dive-page .section-rule a,
body.dive-page .eyebrow,
body.dive-page .cat,
body.dive-page .feed-item .cat {
  color: var(--dive-label-gold);
}
/* dark surfaces keep the bright golds */
body.dive-page .dive-snapshot .dive-mini-share > summary,
body.dive-page .dive-route-band .dive-mini-share > summary,
body.dive-page .dive-cycles-share .dive-mini-share > summary,
body.dive-page .dive-route-band .more,
body.dive-page .dive-hero .eyebrow {
  color: var(--gold2);
}
/* Verify-phase fix (2026-09-25, defect 1): the open share-accordion's
   buttons kept var(--ink) (near-black) text/border on these same 3 dark
   surfaces, 1.01:1 against the dark background. Pure white + a light
   border reaches well past 4.5:1 (near-black-on-white would be 4.5:1;
   white-on-near-black is the same ratio, ~19:1). */
body.dive-page .dive-snapshot .dive-share-btn,
body.dive-page .dive-route-band .dive-share-btn,
body.dive-page .dive-cycles-share .dive-share-btn {
  color: #ffffff;
  border-color: #ffffff;
}
body.dive-page .dive-snapshot .dive-share-btn:hover,
body.dive-page .dive-route-band .dive-share-btn:hover,
body.dive-page .dive-cycles-share .dive-share-btn:hover {
  color: var(--ink);
  background: #ffffff;
  border-color: #ffffff;
}
body.dive-page .dive-hero .eyebrow {
  color: var(--rt-gold-bright, #e2c77a);
}
/* light-surface uses of the dark-panel meta style (component route and
   figure pages) */
body.dive-page .dive-snapshot-meta {
  color: var(--muted);
}
body.dive-page .dive-snapshot-meta a {
  color: var(--dive-label-gold);
}
body.dive-page .dive-snapshot .dive-snapshot-meta {
  color: #a9ada9;
}
body.dive-page .dive-snapshot .dive-snapshot-meta a {
  color: var(--gold2);
}
.dive-breadcrumb .sep {
  color: var(--muted);
}
/* photo credits that sit ON a photo carry their own dark chip */
.dive-contribute-photo .dive-photo-credit {
  background: rgba(6, 12, 18, 0.62);
  padding: 2px 6px;
  text-shadow: none;
}
/* thumbnail credits, same pattern as the route cards: one line, 11px */
.dive-thumb-credit {
  display: block;
  font-size: 11px;
  line-height: 1.3;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 3px;
  max-width: 100%;
}
.dive-next-up-img,
.dive-article .row-img {
  min-width: 0;
}
/* header tap targets (shared header markup unchanged; Dive-scoped only) */
@media (max-width: 700px) {
  body.dive-page .mast .logo {
    min-height: 44px;
    align-items: center;
  }
  body.dive-page .mast .actions .btn {
    min-height: 44px;
  }
}
body.dive-page #cycles summary,
body.dive-page #cycles .dv-cyc-sum {
  color: #e2c77a;
}

/* ===========================================================================
   Pass 3 (founder ruling 2026-09-25): the hub is an RTNS FRONT PAGE, cloned
   from the News home's own classes (.newsroom-hero, .news-grid, .market-
   terminal, .lead-news, .news-stack, .latest-rail, .news-strip, .home-
   calendar, .news-body). Only Dive fillers below: Seashell on the light
   modules (standing ruling; the News home's own paper is #fffdf8/#eee7db),
   links inside the cloned modules, source lines and photo credits, and
   AA-safe text colours on Seashell.
   =========================================================================== */
body.dive-page .newsroom-hero {
  background: #fff5ee;
}
body.dive-page .brief-box {
  background: #fff5ee;
  border: 1px solid var(--line);
  border-top: 4px solid var(--gold);
}
body.dive-page .brief-line {
  border-top-color: var(--line);
}
.dive-hub .lead-news h1 a,
.dive-hub .stack-item h2 a,
.dive-hub .latest-item h3 a,
.dive-hub .compact-news h3 a,
.dive-hub .feed-item h3 a,
.dive-hub .mr-item h3 a {
  color: inherit;
  text-decoration: none;
}
.dive-hub .lead-news h1 a:hover,
.dive-hub .stack-item h2 a:hover,
.dive-hub .latest-item h3 a:hover,
.dive-hub .compact-news h3 a:hover,
.dive-hub .feed-item h3 a:hover,
.dive-hub .mr-item h3 a:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.dive-hub .dive-ticker {
  display: block;
  color: inherit;
  text-decoration: none;
}
.dive-ticker-src {
  font-size: 10px;
  line-height: 1.35;
  color: #9fb6af;
  margin-top: 4px;
}
.dive-hub .market-terminal .ticker strong {
  font-size: 24px;
}
.dive-lead-credit {
  font-size: 11px;
  color: var(--muted);
  margin: 4px 0 0;
}
.dive-hub .dive-editor-box {
  background: var(--rt-editor-green-bg);
  color: #ffffff;
  border: 0;
  border-top: 4px solid var(--rt-editor-green-border);
}
.dive-hub .dive-editor-box .eyebrow {
  color: var(--rt-editor-green-eyebrow);
}
.dive-editor-box-body {
  font-size: 12px;
  line-height: 1.6;
  color: var(--rt-editor-green-text);
}
.dive-brief-src {
  font-size: 11px;
  color: var(--muted);
}
.dive-topline-right {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: flex-end;
  text-align: right;
}
.dive-topline-right .dive-mini-share {
  margin: 0;
  text-align: left;
}
/* AA on Seashell for the News home's small greys and golds */
body.dive-page .newsroom-topline,
body.dive-page .news-meta,
body.dive-page .latest-time,
body.dive-page .stack-item p,
body.dive-page .compact-news p,
body.dive-page .lead-news p {
  color: var(--muted);
}
body.dive-page .stack-item .k,
body.dive-page .latest-item small,
body.dive-page .compact-news .cat,
body.dive-page .feed-item .cat {
  color: var(--dive-label-gold);
}
body.dive-page .home-calendar .eyebrow {
  color: var(--gold2);
}
.dive-hub .compact-news .dive-thumb-credit {
  margin: -6px 0 6px;
}
body.dive-page .dive-hub .dive-editor-box {
  background: var(--rt-editor-green-bg);
  color: #ffffff;
  border: 0;
  border-top: 4px solid var(--rt-editor-green-border);
}
body.dive-page .dive-hub .dive-editor-box .eyebrow {
  color: var(--rt-editor-green-eyebrow);
}
/* compact pulse: six figures + source lines inside the News home's column */
.dive-hub .market-terminal .ticker {
  padding: 9px 0;
}
.dive-hub .market-terminal .ticker strong {
  font-size: 22px;
}
.dive-hub .market-terminal .ticker .value {
  margin-top: 3px;
}
.dive-hub .market-terminal {
  min-height: 0;
}
/* 8 arguments at the News home's feed density */
.dive-hub #s-claims .feed-item {
  grid-template-columns: 120px 1fr;
  gap: 14px;
  padding: 10px 0;
}
.dive-hub #s-claims .feed-img {
  height: 78px;
}
.dive-hub #s-claims .feed-item h3 {
  font-size: 19px;
  margin: 3px 0 4px;
}
/* contribute + news board side by side, compact */
@media (min-width: 900px) {
  .dive-hub .dive-contribute-pre .shell {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: 28px;
    align-items: start;
  }
}
.dive-hub .dive-contribute-photo img {
  height: 140px;
}
.dive-hub #cycles.dv-cyc,
.dive-hub .dv-cyc {
  padding-top: 36px;
  padding-bottom: 30px;
}
@media (min-width: 1100px) {
  .dive-hub #s-claims {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 20px;
    align-content: start;
  }
  .dive-hub #s-claims .section-rule {
    grid-column: 1 / -1;
  }
  .dive-hub #s-claims .feed-item {
    grid-template-columns: 84px 1fr;
    gap: 10px;
  }
  .dive-hub #s-claims .feed-img {
    height: 64px;
  }
  .dive-hub #s-claims .feed-item h3 {
    font-size: 17px;
  }
}
.dive-ticker-src {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dive-hub .market-terminal .ticker {
  min-width: 0;
}
@media (max-width: 900px) {
  .dive-hub .market-terminal .ticker {
    padding: 10px 12px;
  }
}
