/* 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;
}
/* Share-flow round 2026-09-26: the native-share button (first child of
   every share block, hidden by default -- dive-ix.js unhides it only on a
   coarse-pointer device with navigator.share). Styled like the gold CTA
   buttons so it reads as the primary action once it takes over. */
.dive-share-native.is-phone {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--ink);
}
.dive-share-native.is-phone:hover {
  background: var(--gold2);
  border-color: var(--gold2);
}
.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;
}

/* ---- role-targeted share picker ---------------------------------------
   Wraps the picker + the existing .dive-share block; a page/component
   with no role file/entry never gets this wrapper at all (dive_ix.py's
   _wrap_role_share fail-closed contract). The Stage 1 "I'm a..." chip row
   is retired (30 Sep 2026): role-2 "Sentence builder" below is THE role
   picker on the hub and every article (Alex's pick; clone of
   qa/2026-09-30-top-band/role-2.css). Light surface, dark only for the
   "?" explainer; no red. Full width of the shell. */
.dive-role-share {
  display: block;
  margin: 16px 0 0;
}
.dive-role-share.dive-rs2 {
  --dive-rs2-label: #77592a;   /* = --rt-gold-a11y */
  --dive-rs2-body: #3b3833;
  position: relative;
  flex: 1 1 100%;
  min-width: 0;
  margin: 8px 0 0;
}
.dive-rs2-eyebrow {
  margin: 0 0 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--dive-rs2-label);
}
.dive-rs2-vh {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.dive-rs2-sentence {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 16px;
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 54px;
  line-height: 1.15;
  color: var(--ink);
}
.dive-rs2-pick {
  position: relative;
  display: inline-flex;
  align-items: baseline;
  max-width: 100%;
}
.dive-rs2-select {
  appearance: none;
  -webkit-appearance: none;
  max-width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 0 52px 2px 6px;
  border: 0;
  border-bottom: 4px solid var(--gold);
  border-radius: 0;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-style: italic;
  line-height: 1.15;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease;
}
.dive-rs2-select:hover { background: #fffaf2; border-bottom-color: var(--ink); }
.dive-rs2-select:focus-visible { outline: 3px solid #8c6a32; outline-offset: 4px; }
.dive-rs2-caret {
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: .42em;
  font-style: normal;
  color: var(--ink);
  pointer-events: none;
}
.dive-rs2-measure {
  position: absolute;
  visibility: hidden;
  white-space: pre;
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
}
.dive-rs2-help {
  align-self: center;
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: transparent;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
  animation: dive-rs2-nudge 1.8s ease-in-out 2 .6s;
}
.dive-rs2-help[hidden] { display: none; }
.dive-rs2-help:hover, .dive-rs2-help[aria-expanded="true"] { background: var(--ink); color: #fff; }
.dive-rs2-help:focus-visible { outline: 3px solid #8c6a32; outline-offset: 3px; }
@keyframes dive-rs2-nudge {
  0%, 100% { box-shadow: 0 0 0 0 rgba(185, 129, 50, 0); }
  50% { box-shadow: 0 0 0 7px rgba(185, 129, 50, .45); }
}
.dive-rs2-pop {
  position: relative;
  margin: 18px 0 0;
  padding: 18px 64px 18px 22px;
  background: var(--dark);
  color: #fff;
  font-size: 15px;
  line-height: 1.5;
}
.dive-rs2-pop[hidden] { display: none; }
.dive-rs2-pop::before {
  content: "";
  position: absolute;
  top: -9px;
  left: var(--dive-rs2-pop-x, 60%);
  border: 9px solid transparent;
  border-top: 0;
  border-bottom-color: var(--dark);
}
.dive-rs2-pop h3 {
  margin: 0 0 8px;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 22px;
  color: #fff;
}
.dive-rs2-pop ol {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px 26px;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: dive-rs2p;
}
.dive-rs2-pop li {
  counter-increment: dive-rs2p;
  padding-top: 10px;
  border-top: 1px solid #333733;
  color: #fff;
}
.dive-rs2-pop li::before {
  content: counter(dive-rs2p);
  display: inline-block;
  margin-right: 8px;
  color: var(--gold2);
  font-weight: 700;
}
.dive-rs2-pop-x {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid #fff;
  background: transparent;
  color: #fff;
  font-size: 20px;
  cursor: pointer;
}
.dive-rs2-pop-x:hover { border-color: var(--gold2); color: var(--gold2); }
.dive-rs2-pop-x:focus-visible { outline: 3px solid var(--gold2); outline-offset: 2px; }
.dive-rs2-status {
  margin: 14px 0 0;
  font-size: 13px;
  color: var(--dive-rs2-body);
}
.dive-rs2-status b { color: var(--ink); }

/* the three reads: full-width numbered row */
.dive-rs2-items {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 28px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}
.dive-rs2-item {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding-top: 14px;
  border-top: 4px solid var(--ink);
}
.dive-rs2-item-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
}
.dive-rs2-num {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 44px;
  line-height: 1;
  color: var(--dive-rs2-label);
}
.dive-rs2-ord {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--dive-rs2-body);
}
.dive-rs2-item > a {
  display: flex;
  align-items: flex-start;
  min-height: 2.35em;
  margin: 10px 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 1.12;
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--line);
  text-underline-offset: 5px;
  text-wrap: balance;
}
.dive-rs2-item > a:hover { text-decoration-color: var(--gold); }
.dive-rs2-item > a:focus-visible { outline: 3px solid #8c6a32; outline-offset: 3px; }
.dive-rs2-here {
  margin-left: auto;
  padding: 2px 8px;
  background: var(--ink);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.dive-rs2-here-title {
  display: flex;
  align-items: flex-start;
  min-height: 2.35em;
  margin: 10px 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 25px;
  line-height: 1.12;
  color: var(--ink);
  text-wrap: balance;
}
.dive-rs2-item.is-here { border-top-color: var(--gold); }
.dive-rs2-dek {
  margin: 0 0 8px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--dive-rs2-body);
}
body.dive-page .dive-rs2-why > summary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 2px;
  list-style: none;
  color: var(--dive-rs2-label);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
}
body.dive-page .dive-rs2-why > summary::-webkit-details-marker { display: none; }
body.dive-page .dive-rs2-why > summary:hover { color: var(--ink); }
.dive-rs2-why > summary:focus-visible { outline: 3px solid #8c6a32; outline-offset: 2px; }
.dive-rs2-why-label { text-decoration: underline; text-underline-offset: 4px; }
.dive-rs2-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  font-size: 15px;
  line-height: 1;
  transition: transform .2s ease;
}
.dive-rs2-why[open] .dive-rs2-arrow { transform: rotate(45deg); }
.dive-rs2-why > p {
  margin: 0;
  padding: 8px 12px;
  border-left: 3px solid var(--gold);
  background: #fff;
  font-size: 14px;
  line-height: 1.45;
  color: var(--ink);
}
.dive-rs2-items.is-swapping .dive-rs2-item { animation: dive-rs2-in .45s ease-out both; }
.dive-rs2-items.is-swapping .dive-rs2-item:nth-child(2) { animation-delay: .09s; }
.dive-rs2-items.is-swapping .dive-rs2-item:nth-child(3) { animation-delay: .18s; }
@keyframes dive-rs2-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* sentence 2: share row [LinkedIn] [WhatsApp] [X] (role picker is switched off) */
.dive-rs2-share {
  margin-top: 34px;
  padding-top: 22px;
  border-top: 1px solid var(--line);
}
.dive-rs2 .dive-share {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin: 0;
}
.dive-rs2-share-lead {
  /* DOM order keeps the native Share button first (share-flow ruling);
     the label still renders at the front of the row. */
  order: -1;
  margin-right: 6px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 40px;
  line-height: 1.15;
  color: var(--ink);
}
.dive-rs2 .dive-share-btn {
  min-height: 56px;
  min-width: 56px;
  padding: 0 22px;
  background: #fff;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 13px;
  letter-spacing: .06em;
}
.dive-rs2 .dive-share-btn[data-share-li],
.dive-rs2 .dive-share-native.is-phone { background: var(--gold); border-color: var(--gold); }
.dive-rs2 .dive-share-btn:hover { background: var(--ink); border-color: var(--ink); color: #fff; }
.dive-rs2 .dive-share-btn:focus-visible { outline: 3px solid #8c6a32; outline-offset: 3px; }
.dive-rs2 .dive-share-btn[hidden] { display: none; }
.dive-rs2-post {
  margin: 14px 0 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--dive-rs2-body);
}
.dive-rs2-post b {
  margin-right: 8px;
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--dive-rs2-label);
}
/* Subscriber-benefit panel (1 Oct 2026, replaces the one-line note):
   sans-serif bold heading on its own line, benefits as a native list, one
   outlined CTA into the existing waiting-list dialog. Desktop: a right-hand
   column beside the share row and draft post, so the share buttons stay
   first and primary; tablet and phone: stacked below them. Text colours
   are the band's own measured tokens on a white panel. */
.dive-rs2-sub {
  margin: 24px 0 0;
  padding: 22px 24px 24px;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 4px solid var(--gold);
  font-family: Arial, Helvetica, sans-serif;
  color: var(--ink);
}
.dive-rs2-sub-h {
  margin: 0 0 12px;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 22px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: 0;
  color: var(--ink);
  text-wrap: balance;
}
.dive-rs2-sub-list {
  margin: 0 0 20px;
  padding: 0 0 0 20px;
  list-style: square;
}
.dive-rs2-sub-list li {
  margin: 0 0 8px;
  padding-left: 2px;
  font-size: 15px;
  line-height: 1.45;
  color: var(--dive-rs2-body);
  text-wrap: pretty;
}
.dive-rs2-sub-list li:last-child { margin-bottom: 0; }
.dive-rs2-sub-list li::marker { color: var(--dive-rs2-label); }
.dive-rs2-sub-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 22px;
  border: 2px solid var(--ink);
  border-radius: 0;
  background: #fff;
  color: var(--ink);
  font-family: Arial, Helvetica, sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}
.dive-rs2-sub-cta:hover { background: var(--ink); color: #fff; }
.dive-rs2-sub-cta:focus-visible { outline: 3px solid #8c6a32; outline-offset: 3px; }
@media (min-width: 1101px) {
  .dive-rs2-share.has-sub-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(340px, 440px);
    grid-template-rows: auto 1fr;
    column-gap: 48px;
    align-items: start;
  }
  .dive-rs2-share.has-sub-panel > .dive-share,
  .dive-rs2-share.has-sub-panel > .dive-rs2-post { grid-column: 1; }
  .dive-rs2-share.has-sub-panel > .dive-rs2-sub { grid-column: 2; grid-row: 1 / span 2; margin-top: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .dive-rs2-help,
  .dive-rs2-items.is-swapping .dive-rs2-item { animation: none; }
  .dive-rs2-select,
  .dive-rs2-arrow { transition: none; }
}
@media (max-width: 1100px) {
  .dive-rs2-sentence { font-size: 44px; }
  .dive-rs2-items { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .dive-rs2-item > a,
  .dive-rs2-here-title { font-size: 23px; min-height: 44px; align-items: center; margin: 6px 0 10px; }
  .dive-rs2-pop ol { grid-template-columns: minmax(0, 1fr); }
  .dive-rs2-share-lead { font-size: 34px; }
}
@media (max-width: 700px) {
  .dive-rs2-sentence { font-size: 32px; gap: 6px 10px; }
  .dive-rs2-pick { flex: 1 1 100%; order: 2; }
  .dive-rs2-select { width: 100%; font-size: 28px; padding-right: 44px; }
  .dive-rs2-sentence .dive-rs2-tail { order: 3; }
  .dive-rs2-help { order: 1; margin-left: auto; width: 44px; height: 44px; font-size: 22px; }
  .dive-rs2-pop { padding: 16px 60px 16px 16px; font-size: 14px; }
  .dive-rs2-num { font-size: 36px; }
  .dive-rs2-item > a,
  .dive-rs2-here-title { font-size: 21px; }
  .dive-rs2-share-lead { flex-basis: 100%; font-size: 28px; }
  .dive-rs2 .dive-share-btn:not([hidden]) { flex: 1 1 auto; padding: 0 12px; }
  .dive-rs2-sub { padding: 18px 16px 18px; }
  .dive-rs2-sub-h { font-size: 20px; }
  .dive-rs2-sub-cta { width: 100%; }
}

/* ---- 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;
}
/* Suggested LinkedIn tags (Alex, 1 Oct 2026; dive_ix.py _share_tags_html):
   its own panel on its own line under the buttons, never between them. The
   panel carries its own paper background so it reads the same on the light
   page, the role builder and the dark bands that host a mini-share.
   Contrast on #fffdf8: ink #11120f 18.6:1, label #6c675e 5.4:1; tag
   buttons ink on #fff 19.3:1, copied state #fff on ink 19.3:1. Every tag
   is a 44px target. Names keep their own case (they are copied as shown). */
.dive-share-tags {
  order: 10;
  flex: 1 1 100%;
  box-sizing: border-box;
  max-width: 100%;
  margin: 4px 0 0;
  padding: 10px 12px 12px;
  border-left: 3px solid var(--gold, #b98132);
  background: #fffdf8;
  color: #11120f;
  text-align: left;
}
.dive-share-tags[hidden] { display: none; }
.dive-share-tags-h {
  margin: 0 0 8px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #6c675e;
}
.dive-share-tags-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.dive-share-tags-list li { margin: 0; padding: 0; max-width: 100%; }
.dive-share-tags-list li::before { content: none; }
.dive-share-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 44px;
  min-width: 44px;
  max-width: 100%;
  padding: 6px 14px;
  border: 1px solid #11120f;
  border-radius: 0;
  background: #fff;
  color: #11120f;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: normal;
  text-transform: none;
  text-align: left;
  overflow-wrap: anywhere;
  cursor: copy;
}
.dive-share-tag:hover { border-color: #8c6a32; background: #f6f2ea; }
.dive-share-tag:focus-visible { outline: 3px solid #8c6a32; outline-offset: 2px; }
.dive-share-tag.is-copied { background: #11120f; border-color: #11120f; color: #fff; }
.dive-share-tags-how {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: #11120f;
}
.dive-share-tags-out {
  margin: 4px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: #11120f;
  overflow-wrap: anywhere;
}
.dive-share-tags-out:empty { display: none; }
.dive-share-tag-sel {
  font-weight: 700;
  user-select: all;
  -webkit-user-select: all;
}
.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 --------------------------------------*/
/* DOS26 hub section directory uses the full page width (Alex, 2026-10-16):
   the six section lists were one narrow column beside two short sidebars.
   Now the editor's note and "Continue the case" sit side by side in a row
   above the lists, and each section is a 2-column (3 from 1300px) card grid.
   Dive-scoped: .dive-body-sections exists only on hubs with dive_sections. */
.dive-hub .dive-hub-section .feed-item p {
  font-size: 13px;
  line-height: 1.45;
}
.dive-hub .dive-hub-section .feed-item .cat {
  font-size: 12px;
}
.dive-hub .dive-hub-section-intro {
  font-size: 13px;
  line-height: 1.45;
}
@media (min-width: 1000px) {
  .dive-hub .news-body-grid.dive-body-sections {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-hub .dive-body-sections .dive-hub-side {
    order: -1;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
    align-items: start;
  }
  .dive-hub .dive-hub-section {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 28px;
    align-content: start;
    margin-bottom: 28px;
  }
  .dive-hub .dive-hub-section > .section-rule,
  .dive-hub .dive-hub-section > .dive-hub-section-intro {
    grid-column: 1 / -1;
  }
  .dive-hub .dive-hub-section .feed-item {
    grid-template-columns: 120px 1fr;
    gap: 14px;
  }
  .dive-hub .dive-hub-section .feed-img {
    height: 90px;
  }
  .dive-hub .dive-hub-section .feed-item h3 {
    font-size: 20px;
  }
  .dive-hub .dive-hub-section-1c {
    grid-template-columns: minmax(0, 1fr);
  }
  .dive-hub .dive-hub-section-3c {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .dive-hub .dive-hub-section-3c .feed-item {
    grid-template-columns: 100px 1fr;
    gap: 12px;
  }
  .dive-hub .dive-hub-section-3c .feed-img {
    height: 80px;
  }
}
@media (min-width: 1300px) {
  .dive-hub .dive-hub-section-3c .feed-item {
    grid-template-columns: 120px 1fr;
    gap: 14px;
  }
  .dive-hub .dive-hub-section-3c .feed-img {
    height: 90px;
  }
}
.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-more-rail (dive_share_pages._more_from_the_dive) had no CSS at all
   -- plain 13px text links, 109x18. VA-BPS sweep 2026-09-26: 24px desktop
   floor, 44px touch floor, same 1100px cut used site-wide. */
.dive-more-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 20px;
  margin: 24px 0;
}
.dive-more-lead {
  flex-basis: 100%;
  margin: 0 0 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.dive-more-rail a {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  color: var(--ink);
}
@media (max-width: 1100px) {
  .dive-more-rail a {
    min-height: 44px;
  }
}

.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: 22px;
  padding-right: 22px;
}
.dive-subnav a {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 12px;
  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;
}
/* Active tab = solid ink block with white text (Alex, 2026-10-16: "highlight
   the active section; not underline"). Same ink fill + white as the numbered
   dots on these tabs and the dark "DOS26 DUBAI" menu pill; contrast 18:1.
   Hover is only a light tint, so it never reads as active. */
.dive-subnav a[aria-current="true"] {
  background: var(--ink);
  color: #ffffff;
}
.dive-subnav a:hover,
.dive-subnav a:focus-visible {
  background: rgba(17, 18, 15, 0.08);
}
.dive-subnav a[aria-current="true"]:hover,
.dive-subnav a[aria-current="true"]:focus-visible {
  background: var(--ink);
}
/* Optional leading label from _dive.json "subnav_label" (not a tab, not a
   link): gold small-caps lead-in plus the Dive name, a thin rule before the
   first tab. */
.dive-subnav .dive-subnav-label {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 44px;
  margin: 0 10px 0 12px;
  padding-right: 18px;
  border-right: 1px solid var(--line);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  white-space: nowrap;
}
.dive-subnav .dive-subnav-label b {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #8c6a32;
}

@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: 6px;
    padding-right: 6px;
  }
  .dive-breadcrumb {
    /* Round-2 mobile gate (Alex, phone screenshot 26 Sep 09:26): at 390
       and 320 the breadcrumb sat flush under the header (measured 0px
       gap, header.getBoundingClientRect().bottom == breadcrumb top) --
       "glued". A margin (not padding) moves the element's own box down,
       which is what that rect measurement actually reads. Desktop's
       REST-state 0px (verify-phase 2026-09-25, defect 4) is untouched;
       this is scoped to the same <=700px break as every other
       mobile-only override in this block. */
    padding: 0 18px;
    margin-top: 10px;
  }
  .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;
}
/* Round-4 fix (27 Sep 2026): RealTimes' own "accepts a small number of
   partners..." instruction, moved OUT of the sponsor mailto and shown
   here instead -- same shape/colour as .dive-call-consent. */
.dive-peerview-sponsor-note {
  font-size: 12px;
  color: var(--muted);
  margin: -6px 0 14px;
}
.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;
}
/* Article hero overlay (Alex, 2026-10-16: "too dark image"): the photo shows
   at full brightness; legibility comes only from the plate behind the text
   block, at 0.76 and sized to its text (no band-wide wash, no gradient).
   Worst case, a white pixel behind the plate: effective background about
   rgb(66, 70, 75), white dek contrast about 9.5:1. */
.dive-hero-article {
  --scrim: rgba(6, 12, 18, 0.76);
  --scrim-soft: rgba(6, 12, 18, 0.76);
}
.dive-hero-article .b-title-wrap .inner {
  padding: 18px 24px 20px;
  max-width: 640px;
}
.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;
  /* VA-BPS sweep 2026-09-26: 32px clears the 24px desktop floor, fails the
     44px touch floor -- grown on the shared 1100px touch cut below. */
  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);
}
@media (max-width: 1100px) {
  .dive-call-chip {
    min-height: 44px;
  }
}

.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;
}
/* DOS26 (2026-10-15) -- event box + closing line (build.py _insert_event_box,
   front-matter `event_box`). Sits inside .rtns-article-body, so it already
   inherits the 780px measure. Light paper box, green rule: ink on paper
   ~18:1, green link on paper ~11:1 (AA). Body fonts only, no new face. */
.dive-event-box {
  background: var(--paper2);
  border: 1px solid var(--line);
  border-left: 4px solid var(--green);
  padding: 18px 22px;
  margin: 28px 0;
  color: var(--ink);
}
.dive-event-box p {
  margin: 0;
}
.dive-event-box .dive-event-box-text {
  font-size: 17px;
  line-height: 1.55;
}
.dive-event-box .dive-event-box-link {
  margin-top: 10px;
  font-size: 15px;
  font-weight: 600;
}
.dive-event-box a,
.dive-event-closing a {
  color: var(--green);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.dive-event-box a {
  display: inline-block;
  min-height: 44px;
  line-height: 44px;
}
.dive-event-closing {
  margin: 28px 0 0;
  padding-top: 16px;
  border-top: 1px solid var(--line);
  font-style: italic;
}
@media (max-width: 600px) {
  .dive-event-box {
    padding: 16px 16px;
    margin: 24px 0;
  }
  .dive-event-box .dive-event-box-text {
    font-size: 16px;
  }
}
/* DOS26 (Alex, 2026-10-16: "i love 2 ... and 4") -- Green band (variant 2,
   once per page, replaces .dive-event-box) and Desk note in the margin
   (variant 4, 1-2 per page). Built by build.py _insert_event_box /
   _insert_desk_notes, only for a Dive whose _dive.json has event_date +
   event_venue. RTNS tokens only: green #113a32, gold #b98132 / #d8ad63, pure
   #ffffff on green, Georgia display + Arial body, 44 px tap targets. */
.dive-article .rtns-article-body .dive-event-band a,
.dive-article .rtns-article-body .dive-desk-note a { text-decoration: none; gap: 8px; }
.dive-article .dive-event-band strong,
.dive-article .dive-desk-note strong { white-space: normal; }
.dive-article .dive-event-band {
  clear: both;
  margin: 44px 0;
  background: var(--green, #113a32);
  color: #ffffff;
  border-top: 3px solid var(--gold2, #d8ad63);
  padding: 34px 40px 30px;
}
.dive-article .dive-event-band p { margin: 0; }
.dive-article .dive-event-band-eyebrow {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 11px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase;
  color: var(--gold2, #d8ad63); margin-bottom: 14px !important;
}
.dive-article .dive-event-band-text {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 27px; line-height: 1.34; color: #ffffff; max-width: 780px;
}
.dive-article .dive-event-band-text strong { color: var(--gold2, #d8ad63); font-weight: 700; }
.dive-article .dive-event-band-foot {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 16px 24px; margin-top: 26px; padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, .28);
}
.dive-article .dive-event-band-meta {
  display: flex; flex-direction: column; gap: 2px;
  font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.45; color: #ffffff;
}
.dive-article .dive-event-band-meta span:first-child { font-weight: 700; }
.dive-article .dive-event-band-btn { min-height: 44px; }
.dive-article .dive-event-band-btn:hover,
.dive-article .dive-event-band-btn:focus-visible,
.dive-article .dive-desk-note-btn:hover,
.dive-article .dive-desk-note-btn:focus-visible { background: var(--gold2, #d8ad63); border-color: var(--gold2, #d8ad63); }
@media (min-width: 1100px) {
  .dive-article .dive-event-band { margin-left: -110px; margin-right: -110px; padding: 42px 110px 36px; }
}
.dive-article .dive-desk-note {
  margin: 30px 0; padding: 16px 0 22px;
  border-top: 3px solid var(--ink, #1a1a1a); border-bottom: 1px solid var(--line, #d9d2c6);
  color: var(--ink, #1a1a1a);
  display: grid; grid-template-columns: 1fr auto; column-gap: 28px; align-items: end;
}
.dive-article .dive-desk-note p { margin: 0; }
.dive-article .dive-desk-note-eyebrow {
  grid-column: 1 / -1;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 11px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase;
  color: #8c6a32; margin-bottom: 8px !important;
}
.dive-article .dive-desk-note-text { grid-column: 1; font-size: 17px; line-height: 1.5; }
.dive-article .dive-desk-note-link {
  display: inline-block; min-height: 44px; color: var(--green, #113a32);
  text-decoration: underline !important; text-underline-offset: 3px; font-weight: 600;
}
.dive-article .dive-desk-note-btn { grid-column: 2; grid-row: 2; min-height: 44px; white-space: nowrap; }
@media (min-width: 1360px) {
  .dive-article .dive-desk-note {
    float: right; clear: right; width: 220px; margin: 4px -252px 20px 0; padding: 14px 0 0;
    border-bottom: 0; display: block;
  }
  .dive-article .dive-desk-note-text { font-size: 15px; line-height: 1.5; }
  .dive-article .dive-desk-note-btn {
    display: flex; width: 100%; margin-top: 14px; white-space: normal; text-align: center; padding: 8px 12px;
  }
}
@media (max-width: 600px) {
  .dive-article .dive-event-band-btn { display: flex; width: 100%; }
  .dive-article .dive-event-band { padding: 26px 20px 24px; margin: 36px 0; }
  .dive-article .dive-event-band-text { font-size: 22px; }
  .dive-article .dive-event-band-foot { flex-direction: column; align-items: stretch; }
  .dive-article .dive-desk-note { grid-template-columns: 1fr; }
  .dive-article .dive-desk-note-btn { grid-column: 1; grid-row: auto; display: flex; width: 100%; margin-top: 16px; }
}
/* 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;
}
/* Round-4 fix (27 Sep 2026): RealTimes' own consent instruction, moved
   OUT of the Agree/Disagree mailto body and shown here instead -- same
   shape as .dive-call-consent (expert calls). */
.dive-claim-consent {
  font-size: 12px;
  color: var(--muted);
  margin: 10px 0 0;
}

/* ===========================================================================
   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;
}
/* Round-3 gate (2026-09-27), rendered MED: "Answer this ->" is a flex-item
   anchor (block-ified by the parent's display:flex/column) but carried no
   padding, so its rendered tap target was the text line only -- 320x12px
   at 390px, well under the 44px floor. inline-flex + align-items:center +
   min-height:44px gives the anchor a real hit area at every breakpoint
   (not mobile-only: the finding reproduced at 1024/390/320 alike)
   without changing font-size/colour or the card's own padding. */
.dive-calls-cards .dive-call-card .more {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.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: normal;
  overflow-wrap: anywhere;
  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: wrap, never truncate (CC BY-SA attribution) */
.dive-thumb-credit {
  display: block;
  font-size: 11px;
  line-height: 1.3;
  color: var(--muted);
  white-space: normal;
  overflow-wrap: anywhere;
  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: 12px;
  line-height: 1.4;
  color: #9fb6af;
  margin-top: 6px;
}
.dive-hub .market-terminal .ticker strong {
  font-size: 24px;
}
.dive-lead-credit {
  font-size: 11px;
  color: var(--muted);
  margin: 4px 0 0;
}
/* Market Intelligence band: "Preview" tag and a readable band (Alex,
   2026-10-16). Kept here, not in rtns.css, because /news/ loads rtns.css and
   must stay byte-identical; the band only renders on Dive hubs. */
body.dive-page .dive-mip-band {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  padding: 16px 18px;
  color: #ffffff;
  font-size: 16px;
  line-height: 1.5;
}
body.dive-page .dive-mip-band strong {
  font-weight: 700;
  color: #ffffff;
}
body.dive-page .dive-mip-band .dive-mip-copy {
  flex: 1 1 280px;
}
body.dive-page .dive-mip-band a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin: -6px 0;
  color: var(--gold2);
  text-decoration: none;
}
body.dive-page .dive-mip-band a:hover,
body.dive-page .dive-mip-band a:focus-visible {
  text-decoration: underline;
}
.dive-mip-tag {
  display: inline-block;
  padding: 5px 10px;
  background: var(--gold2);
  color: var(--dark);
  font: 700 13px/1.2 Arial, Helvetica, sans-serif;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.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;
}
/* Share-flow round 2026-09-26, item 6: the share panel must never overlap
   the "RealTimes Dive · EXPO REAL 2026" label. Additive only. */
body.dive-page .newsroom-topline {
  flex-wrap: wrap;
  row-gap: 6px;
}
@media (max-width: 640px) {
  .dive-topline-right {
    flex-basis: 100%;
    justify-content: flex-start;
    text-align: left;
  }
}
.dive-topline-right .dive-mini-share[open] {
  flex-basis: 100%;
}
/* BEGIN top band (qa/2026-09-30-top-band/final-band.css is the review copy; keep the two identical) */
/* ===========================================================================
   Top band, final (founder pick 30 Sep 2026): option 2's welcome split card
   as the base, with option 4's guided tour (dive-tour.js / dive-tour.css,
   the canon explainer component), option 5's countdown folded INTO the card
   as its header strip (dive-band.js), and option 7's "Idea?" note as the
   BETA "open for your ideas" action. No "Updated <date>" stamp anywhere.
   Donor tokens only; the band sits on the shell grid (max-width var(--max),
   34px / 18px gutters), never a band-local width.
   Contrast, measured against each element's real background:
   - steps column #11120f on #fff = 18.9:1; muted #6c675e on #fff = 5.62:1;
     label gold #8c6a32 on #fff = 4.97:1 (10 to 11px bold caps, AA 4.5 met)
   - countdown strip (#fff): same as the steps column
   - MIP panel #fff on #0c0e0d = 19.3:1; gold2 #d8ad63 on #0c0e0d = 9.29:1
   - gold CTA #111 on #b98132 = 5.62:1
   - idea note #11120f on #fff5ee = 17.8:1; muted #6c675e on #fff5ee = 5.2:1;
     link #77592a on #fff5ee = 6.02:1
   - disclaimer muted #6c675e on Seashell #fff5ee = 5.23:1
   =========================================================================== */

/* ---- numbered dots on the sticky tabs (dive-chrome.html) -------------- */
.dive-subnav a .dive-subnav-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin-right: 7px;
  border-radius: 50%;
  background: var(--ink);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0;
}

/* ---- breadcrumb + kicker row ------------------------------------------ */
.dive-band-head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 2px 24px;
  padding-top: 10px;
  padding-bottom: 12px;
}
body.dive-page .dive-band-head .dive-breadcrumb {
  max-width: none;
  margin: 0;
  padding: 0;
}
.dive-band-head .dive-breadcrumb a {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
}
.dive-band-kicker {
  margin: 0;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}
/* a span, not <strong>: build.py _mark_leading_bold_labels() turns a <p>'s
   leading <strong> into a display:block label, which would split the kicker */
.dive-band-kicker-brand {
  font-weight: 700;
  color: var(--ink);
}

/* ---- the split card ---------------------------------------------------- */
.dive-band-card {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  border: 1px solid var(--ink);
  background: #fff;
}

/* header strip: countdown + tour launcher, spans both columns */
.dive-band-strip {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px 24px;
  padding: 12px 30px;
  background: #fff;
  border-bottom: 1px solid var(--ink);
}
.dive-band-clock {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 18px;
  min-width: 0;
}
.dive-band-clock p {
  margin: 0;
}
.dive-band-clock-state {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink);
  white-space: nowrap;
}
.dive-band-clock-dot {
  flex: 0 0 auto;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--gold);
}
.dive-band-clock-digits {
  display: none;
  align-items: baseline;
  gap: 14px;
}
.dive-band-clock.is-running .dive-band-clock-digits {
  display: inline-flex;
}
.dive-band-unit {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  white-space: nowrap;
}
.dive-band-unit b {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 30px;
  line-height: 1;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.dive-band-unit small {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--dive-label-gold, #8c6a32);
}
.dive-band-clock-word {
  display: none;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 30px;
  line-height: 1;
  color: var(--ink);
}
.dive-band-clock-note {
  font-size: 13px;
  line-height: 1.4;
  color: var(--muted);
}
/* live and after: one word readout instead of three units */
.dive-band-clock[data-phase="live"] .dive-band-unit,
.dive-band-clock[data-phase="after"] .dive-band-unit {
  display: none;
}
.dive-band-clock[data-phase="live"] .dive-band-clock-word {
  display: inline;
}
.dive-band-clock[data-phase="live"] .dive-band-clock-note,
.dive-band-clock[data-phase="after"] .dive-band-clock-note,
.dive-band-clock[data-phase="after"] .dive-band-clock-digits {
  display: none;
}
@media (prefers-reduced-motion: no-preference) {
  .dive-band-clock[data-phase="live"] .dive-band-clock-dot {
    animation: dive-band-live 2s ease-out infinite;
  }
}
@keyframes dive-band-live {
  0% { box-shadow: 0 0 0 0 rgba(185, 129, 50, 0.7); }
  70% { box-shadow: 0 0 0 8px rgba(185, 129, 50, 0); }
  100% { box-shadow: 0 0 0 0 rgba(185, 129, 50, 0); }
}
.dive-band-tour {
  display: flex;
  align-items: center;
  gap: 10px;
}
.dive-band-tour-seen {
  font-size: 12px;
  color: var(--muted);
}

/* left: how this Dive works */
.dive-band-steps {
  background: #fff;
  padding: 26px 30px 24px;
  display: flex;
  flex-direction: column;
}
.dive-band-eyebrow {
  margin: 0 0 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--dive-label-gold, #8c6a32);
}
.dive-band-steps h2,
.dive-band-mip h2 {
  margin: 0 0 16px;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-size: 28px;
  line-height: 1.15;
  color: var(--ink);
  text-wrap: balance;
}
.dive-band-list {
  list-style: none;
  margin: 0 0 16px;
  padding: 0;
}
.dive-band-list li + li {
  border-top: 1px solid var(--line);
}
.dive-band-step {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  gap: 2px 14px;
  align-items: center;
  min-height: 64px;
  padding: 12px 0;
  color: var(--ink);
  text-decoration: none;
}
.dive-band-num {
  grid-row: 1 / span 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1.5px solid var(--ink);
  border-radius: 50%;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 20px;
}
.dive-band-step-title {
  font-size: 17px;
  font-weight: 700;
  line-height: 1.25;
}
.dive-band-step-text {
  grid-column: 2;
  font-size: 14px;
  line-height: 1.45;
  color: var(--muted);
  text-wrap: pretty;
}
.dive-band-where {
  grid-row: 1 / span 2;
  grid-column: 3;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--dive-label-gold, #8c6a32);
  white-space: nowrap;
}
.dive-band-step:hover .dive-band-step-title,
.dive-band-step:focus-visible .dive-band-step-title {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}
.dive-band-navtip {
  margin: auto 0 0;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted);
  text-wrap: pretty;
}
.dive-band-navtip .dive-subnav-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin: 0 2px;
  border-radius: 50%;
  background: var(--ink);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  vertical-align: middle;
  position: relative;
  top: -1px;
}

/* right: the MIP launch panel (dark surface, white text only) */
.dive-band-mip {
  background: var(--dark);
  color: #fff;
  padding: 26px 30px 24px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.dive-band-mip-top {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.dive-band-beta {
  display: inline-flex;
  align-items: center;
  height: 24px;
  padding: 0 9px;
  border: 1.5px solid var(--gold2);
  color: var(--gold2);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
}
.dive-band-mip-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
}
.dive-band-mip h2 {
  margin: 0;
  color: #fff;
}
.dive-band-mip-lede {
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: #fff;
  text-wrap: pretty;
}
.dive-band-preview {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid #333733;
}
.dive-band-preview li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  padding: 0 14px;
  font-size: 14px;
  color: #fff;
}
.dive-band-preview li + li {
  border-top: 1px solid #333733;
}
.dive-band-preview li.dive-band-ask {
  border-top-style: dashed;
}
.dive-band-preview b {
  font-weight: 700;
}
.dive-band-preview a {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex: 1 1 auto;
  min-height: 44px;
  color: #fff;
  text-decoration: none;
}
.dive-band-preview a:hover b,
.dive-band-preview a:focus-visible b {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.dive-band-tag {
  flex: 0 0 auto;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold2);
}
.dive-band-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 10px 12px;
}
.dive-band-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 18px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  text-decoration: none;
}
.dive-band-btn.primary {
  background: var(--gold);
  color: #111;
  border: 1px solid var(--gold);
}
.dive-band-btn.primary:hover,
.dive-band-btn.primary:focus-visible {
  background: var(--gold2);
}

/* the "Idea?" note (option 7), the BETA "open for your ideas" action */
.dive-band-idea {
  flex: 0 1 auto;
}
body.dive-page .dive-band-idea > summary {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid #fff;
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
}
.dive-band-idea > summary::-webkit-details-marker {
  display: none;
}
.dive-band-idea > summary svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}
body.dive-page .dive-band-idea > summary:hover,
body.dive-page .dive-band-idea > summary:focus-visible,
body.dive-page .dive-band-idea[open] > summary {
  background: #fff;
  color: var(--ink);
}
.dive-band-idea[open] {
  flex-basis: 100%;
}
.dive-band-note {
  margin-top: 10px;
  padding: 14px 16px 12px;
  background: var(--paper);
  color: var(--ink);
}
.dive-band-note label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
}
.dive-band-note input {
  display: block;
  width: 100%;
  min-height: 44px;
  padding: 0 12px;
  border: 1px solid var(--muted);
  background: #fff;
  color: var(--ink);
  font-size: 15px;
}
.dive-band-note input:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 1px;
}
.dive-band-note p {
  margin: 8px 0 4px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
  text-wrap: pretty;
}
.dive-band-note-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 18px;
}
.dive-band-note-actions a,
.dive-band-note-actions button {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0;
  background: none;
  border: 0;
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  color: var(--rt-gold-a11y, #77592a);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

/* draft copy marker: one place only (the BETA line, wording not chosen) */
.dive-band-mip-lede[data-copy="beta-wording-tbc"] {
  text-decoration: underline dashed var(--gold2);
  text-underline-offset: 4px;
}

/* ---- foot row: non-affiliation line + role picker and share ----------- */
.dive-band-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 24px;
  padding-top: 12px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
}
.dive-band-disclaimer {
  margin: 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.dive-band-foot .dive-role-share {
  margin: 0;
}

/* ---- touch widths ------------------------------------------------------ */
@media (max-width: 1100px) {
  .dive-band-head .dive-breadcrumb a {
    min-height: 44px;
  }
  .dive-band-card {
    grid-template-columns: minmax(0, 1fr);
  }
  /* launch first on narrow screens so it stays above the fold */
  .dive-band-mip {
    order: 1;
  }
  .dive-band-steps {
    order: 2;
  }
}
@media (max-width: 700px) {
  body.dive-page .dive-band-head .dive-breadcrumb {
    margin: 0;
    padding: 0;
  }
  .dive-band-head {
    padding-top: 4px;
    padding-bottom: 8px;
  }
  .dive-band-strip {
    padding: 12px 18px 14px;
  }
  .dive-band-clock {
    gap: 6px 14px;
  }
  .dive-band-clock-note {
    flex-basis: 100%;
  }
  .dive-band-unit b,
  .dive-band-clock-word {
    font-size: 26px;
  }
  .dive-band-tour {
    width: 100%;
    flex-wrap: wrap;
  }
  .dive-band-steps,
  .dive-band-mip {
    padding: 22px 18px 20px;
  }
  .dive-band-steps h2,
  .dive-band-mip h2 {
    font-size: 24px;
  }
  .dive-band-step {
    grid-template-columns: 44px minmax(0, 1fr);
  }
  .dive-band-where {
    grid-row: auto;
    grid-column: 2;
  }
  .dive-band-actions > * {
    flex: 1 1 100%;
  }
  body.dive-page .dive-band-idea > summary {
    width: 100%;
    justify-content: center;
  }
  .dive-band-foot {
    padding-bottom: 14px;
  }
}
/* END top band */
/* 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;
}
/* Market Pulse type floor (Alex, 2026-10-16): label, period and source
   12px or more, links 13px, period on its own line under the value. Scoped
   to .dive-hub so the protected .market-terminal rules and /news/ stay as
   they are. */
.dive-hub .market-terminal .terminal-head b {
  font-size: 13px;
}
.dive-hub .market-terminal .ticker .name {
  font-size: 12px;
  line-height: 1.35;
}
.dive-hub .market-terminal .ticker .value {
  display: block;
}
.dive-hub .market-terminal .ticker .value em {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  line-height: 1.35;
}
.dive-hub .market-terminal .terminal-link {
  font-size: 13px;
  line-height: 1.4;
}
/* Front page, 4 columns (Alex, 2026-10-16): the Market Pulse stays the left
   column. At 12px type it is the tallest column, so the others stretch to
   its height instead of leaving paper under them: the lead photo grows, the
   argument and planning-desk rows share the extra height. Only the wide
   layouts (above 1000px) and only hubs with a pulse. */
@media (min-width: 1001px) {
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) {
    align-items: stretch;
  }
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) .lead-news {
    display: flex;
    flex-direction: column;
  }
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) .lead-news-img {
    flex: 1 1 325px;
    height: auto;
    min-height: 325px;
  }
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) .news-stack {
    display: flex;
    flex-direction: column;
  }
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) .news-stack .stack-item {
    flex: 1 1 auto;
  }
}
@media (min-width: 1201px) {
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) .latest-rail .latest-item {
    flex: 1 1 auto;
  }
  .dive-hub .dive-news-grid:not(.dive-news-grid-solo) .latest-rail {
    display: flex;
    flex-direction: column;
  }
}
body.dive-page .dive-hub .lead-news p {
  font-size: 13px;
  line-height: 1.45;
}
/* 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: normal;
  overflow-wrap: anywhere;
}
.dive-ticker-src a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.dive-ticker-src a:hover {
  color: #83efca;
}
.dive-hub .market-terminal .ticker {
  min-width: 0;
}
@media (max-width: 900px) {
  .dive-hub .market-terminal .ticker {
    padding: 10px 12px;
  }
}

/* Contrast round 2026-09-27 (rendered-QA re-check, real per-viewport
   background sampling): dive_cycles_story.py's "Through the cycles" ECB
   rate strip (dive-cycles.css .dv-cyc-cell, one gold-gradient cell per
   fair year) picks text colour between two dive-cycles.css classes,
   .dv-cyc-ink (fill:#11120f) and .dv-cyc-paper (fill:#fff), via a naive
   non-gamma-corrected luminance threshold that misjudged the gold end of
   the gradient -- "2008/4.25%", "2023/4.50%" and "2024/3.65%" measured
   2.08-2.94:1 against their real cell background (needs 4.5:1). The Python
   picker is now WCAG-contrast-correct (dive_cycles_story._rate_fill), but
   dive-cycles.css itself is a frozen cross-agent asset outside this pass's
   write scope, and its #11120f ink token tops out at ~4.34:1 against the
   gradient's mid-tone band (just under the 4.5 floor) even once the picker
   always chooses the higher-contrast option. This selector is more
   specific than dive-cycles.css's own `.dv-cyc-svg .dv-cyc-ink` (adds the
   `text` type selector) so it wins regardless of stylesheet load order,
   and repoints the ink fill to pure black -- worst case across the whole
   0-4.5% range is then ~4.61:1 (see dive_cycles_story._rate_fill docstring
   for the exact numbers). Paper (#fff) side is untouched: it was never the
   flagged side (white-on-dark-cell already cleared AA). */
.dv-cyc-svg text.dv-cyc-ink {
  fill: #000;
}

/* Planning desk type size (Alex 2026-10-16: "large font needed here").
   Left label 9px -> 13px, tag 8px -> 12px. Scoped to the Dive hub rail. */
.dive-hub .latest-rail .latest-item {
  grid-template-columns: 56px minmax(0, 1fr);
  column-gap: 12px;
}
.dive-hub .latest-rail .latest-time {
  font-size: 13px;
  line-height: 1.35;
  letter-spacing: 0.04em;
}
.dive-hub .latest-rail .latest-item small {
  display: block;
  margin-top: 3px;
  font-size: 12px;
  line-height: 1.35;
  letter-spacing: 0.06em;
  color: #8c6a32;
}
@media (max-width: 650px) {
  .dive-hub .latest-rail .latest-time {
    font-size: 13px;
  }
}

/* Type floor sweep (Alex, 2026-10-16): Dive-owned text under 12px raised to
   12px. Donor and site-wide classes (news-meta, stack-item, latest-rail,
   marquee, footer) are protected and stay as they are. */
body.dive-page .dive-thumb-credit,
body.dive-page .dive-hero-credit,
body.dive-page .dive-share-lead,
body.dive-page .dive-share-btn,
body.dive-page .dv-ix-eyebrow,
body.dive-page .dive-desk-note-eyebrow,
body.dive-page .dive-event-band-eyebrow,
body.dive-page .dive-event-band-btn,
body.dive-page .dive-desk-note-btn,
body.dive-page .dive-band-kicker,
body.dive-page .dive-band-kicker-brand,
body.dive-page .dv-cyc-eyebrow,
body.dive-page .dv-cyc-by,
body.dive-page .dv-cyc-ctx-k,
body.dive-page .dv-cyc-sum,
body.dive-page .dive-brief-src,
body.dive-page .dive-mini-share > summary,
body.dive-page .dive-peerview-still figcaption,
body.dive-page .dive-call-card a.more,
body.dive-page .dive-expert-call .btn,
body.dive-page .dive-peerview-ctas .btn,
body.dive-page .dive-hero .eyebrow,
body.dive-page .dive-next-up .eyebrow {
  font-size: 12px;
}
/* Same floor for the donor News classes as they appear inside a Dive hub
   (Alex, 2026-10-16). Scoped to .dive-hub, so the protected rules in
   styles.css and /news/ are untouched. */
body.dive-page .dive-hub .news-meta,
body.dive-page .dive-hub .stack-item .k,
body.dive-page .dive-hub .latest-item small,
body.dive-page .dive-hub .feed-item .cat,
body.dive-page .dive-hub .eyebrow,
body.dive-page .dive-hub .rail-title,
body.dive-page .dive-hub .latest-time,
body.dive-page .dive-hub .brief-line,
body.dive-page .dive-hub .brief-line b,
body.dive-page .dive-hub .home-cal-item span,
body.dive-page .dive-hub .home-cal-item small,
body.dive-page .dive-hub .home-cal-head a,
body.dive-page .home-cal-head p,
body.dive-page .compact-news .cat,
body.dive-page .dive-related .row .eyebrow,
body.dive-page a.more {
  font-size: 12px;
}
body.dive-page .dive-hub .stack-item p,
body.dive-page .compact-news p,
body.dive-page .dive-related .row p,
body.dive-page .dive-hub .feed-item p {
  font-size: 13px;
  line-height: 1.45;
}
