/* ==========================================================================
   A1 v2.0 — Shared story stylesheet
   --------------------------------------------------------------------------
   Generated 2026-04-28 (Block 4 of A1 v2.0 plan).
   Source of truth for Rakvia design tokens used across the router page,
   Founder full path page, and the 6 stub path pages.

   Tokens drawn from /brand/visual-identity.md (Rakvia Gold + Cream + Warm
   Black palette + Inter / Cormorant Garamond / JetBrains Mono).

   SOURCE LOCATION: presence/data-stories/a1-il-veteran-employers/assets/story.css
       This _deploy/.../assets/story.css copy is the build target (gitignored
       per Layer 2 GL2-8). The source-controlled copy at the story-root
       assets/ folder is the source-of-truth; Block 6 build pipeline copies
       it into _deploy/.../assets/ at publish time. Edit only the source
       copy; the deploy copy is regenerated.

   Loaded via:
     <link rel="stylesheet" href="/veterans/il-employer-map/assets/story.css">
   in path_router_template.html.j2, path_template.html.j2,
   path_stub_template.html.j2 (built in Block 6).

   Google Fonts loaded via <link> in template <head>; this file does NOT
   @import them (avoids render-blocking + duplicate downloads).

   Plotly chart palette (Rakvia gold + deep gold + warm gray) is set in the
   Plotly layout dict in build_publish_notebook.py, NOT here.

   Tuneable values (not locked by /brand/visual-identity.md; flagged for
   Block 5 wireframe + persona-review tuning):
     --section-tint-warm-gray: #efece4   (subtle warm-gray; author's pick)
     --loss-bg:                #f0ede4   (warm-gray callout background)
   ========================================================================== */

html { color-scheme: light; }

:root {
  /* Rakvia palette — primary */
  --rakvia-gold: #cbb26a;
  --rakvia-gold-deep: #8a7544;
  --rakvia-cream: #faf7f0;
  --rakvia-warm-black: #1a1a1a;
  --rakvia-neutral-gray: #4a4a4a;
  --rakvia-light-gray: #e5e2d8;
  --rakvia-white: #ffffff;

  /* Semantic aliases (consumed by component classes below) */
  --body: var(--rakvia-warm-black);
  --bg: var(--rakvia-cream);
  --secondary: var(--rakvia-neutral-gray);
  --accent: var(--rakvia-gold-deep);          /* WCAG-AA-safe link/text accent on cream */
  --accent-bold: var(--rakvia-gold);          /* Decorative borders, chip selected state */
  --rule: var(--rakvia-light-gray);
  --card: var(--rakvia-white);

  /* Callout palette */
  --gain-bg: var(--rakvia-cream);
  --gain-border: var(--rakvia-gold);
  --loss-bg: #f0ede4;                          /* warm-gray tint */
  --loss-border: var(--rakvia-neutral-gray);
  --cannot-show-bg: var(--rakvia-cream);
  --cannot-show-border: var(--rakvia-gold-deep);

  /* Section tints */
  --section-tint-cream: var(--rakvia-cream);
  --section-tint-warm-gray: #efece4;
}

* { box-sizing: border-box; }

html { font-size: 18px; scroll-behavior: smooth; }

body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, sans-serif;
  color: var(--body);
  background: var(--bg);
  margin: 0;
  line-height: 1.6;
  font-feature-settings: "tnum";
}

main { max-width: 720px; margin: 0 auto; padding: 1.5rem 1rem 4rem; }

.full-width {
  width: 100vw;
  max-width: 1200px;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  margin: 2rem 0;
  padding: 0 1rem;
}
@media (min-width: 1232px) { .full-width { left: auto; transform: none; margin: 2rem auto; } }

/* Display headings use Cormorant Garamond (large text only — WCAG-AA-safe on cream at H1/H2) */
h1, h2 {
  font-family: 'Cormorant Garamond', 'Questa Grande', Georgia, serif;
  font-weight: 600;
  color: var(--body);
}
h1 { font-size: 2.1rem; line-height: 1.2; margin: 1.5rem 0 0.5rem; }
h2 {
  font-size: 1.55rem;
  margin: 2rem 0 0.75rem;
  padding-bottom: 0.35rem;
  border-bottom: 2px solid var(--rakvia-gold);
}
h3 {
  font-family: 'Inter', sans-serif;
  font-size: 1.1rem;
  font-weight: 600;
  margin: 1.25rem 0 0.5rem;
  color: var(--secondary);
}
p { margin: 0.75rem 0; }

a { color: var(--accent); text-decoration: underline; }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
}

/* Skip-to-content: visible on focus with body-text contrast (per Decision #47 / R6-08) */
.skip-link {
  position: absolute; left: -9999px; top: 0;
  padding: 0.5rem 1rem;
  background: var(--bg);
  color: var(--body);              /* body-text contrast, NOT secondary, when focused */
  font-weight: 600;
  text-decoration: underline;
}
.skip-link:focus { left: 0; top: 0; z-index: 1000; }

.byline {
  color: var(--secondary);
  font-size: 0.95rem;
  margin: 0 0 1.25rem;
}

/* Snapshot framing banner — desktop only per Decision #42 + R6-18 */
.snapshot-banner {
  background: var(--card);
  color: var(--secondary);
  padding: 0.5rem 1rem;
  border-left: 3px solid var(--rakvia-gold);
  margin: 1rem auto;
  max-width: 720px;
  font-size: 0.92rem;
}
@media (max-width: 767px) { .snapshot-banner { display: none; } }

.errata-box {
  border: 1px solid var(--rule);
  padding: 0.75rem 1rem;
  margin: 1rem auto;
  max-width: 720px;
  background: #fffbea;
  font-size: 0.95rem;
}
.errata-box h3 { margin-top: 0; color: var(--body); }

/* TOC — minimal cognitive a11y per Decision #47 */
.toc {
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  padding: 0.75rem 1rem;
  margin: 1rem auto;
  max-width: 720px;
  color: var(--secondary);
  font-size: 0.92rem;
}
.toc h3 {
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin: 0.25rem 0 0.5rem;
  color: var(--secondary);
}
.toc ol { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; }

.toc-siblings {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin-top: 0.75rem;
}
@media (max-width: 560px) { .toc-siblings { grid-template-columns: 1fr; } }

.toc-card {
  display: block;
  padding: 0.75rem 0.9rem;
  background: var(--card);
  border: 1px solid var(--rule);
  border-radius: 4px;
  color: var(--body);
  text-decoration: none;
  font-size: 0.92rem;
}
.toc-card:hover, .toc-card:focus-visible { background: var(--section-tint-cream); border-color: var(--rakvia-gold); }
.toc-card strong { color: var(--accent); display: block; margin-bottom: 0.15rem; }

.caption { color: var(--secondary); font-size: 0.92rem; line-height: 1.4; }

.takeaway {
  font-size: 0.98rem;
  border-left: 3px solid var(--rakvia-gold);
  padding: 0.25rem 0 0.25rem 0.75rem;
  color: var(--body);
  margin: 0.75rem 0 1rem;
}

/* Map inline disclaimer — soft career framing per R6-10 */
.map-disclaimer {
  color: var(--secondary);
  font-style: italic;
  font-size: 0.9em;
  margin: 0.5rem 0 0.25rem;
}

.data-link { font-size: 0.92rem; color: var(--secondary); }

table { border-collapse: collapse; width: 100%; margin: 1rem 0; font-size: 0.95rem; }
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
th, td { text-align: left; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--rule); }
th { font-weight: 600; background: var(--section-tint-cream); }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }

/* Wage caveat — preserved from v1.0 (mandatory placement per Q3 / Decision #36) */
.wage-caveat {
  font-size: 0.95rem;
  color: var(--body);
  background: #fff4e6;
  border-left: 3px solid #c07e00;
  padding: 0.75rem 1rem;
  margin: 1rem 0;
}

/* Generic callout (carry-over from v1.0) */
.callout {
  background: var(--card);
  border: 1px solid var(--rule);
  border-radius: 4px;
  padding: 1rem 1.1rem;
  margin: 1.25rem 0;
}
.callout h3 { margin-top: 0; color: var(--body); }
.callout ul { margin: 0.5rem 0 0.25rem; padding-left: 1.25rem; }
.callout-footer { font-size: 0.88rem; color: var(--secondary); margin-top: 0.5rem; }

/* ==========================================================================
   v2.0 NEW component classes (PLAN.md Block 4 spec)
   ========================================================================== */

/* "What you'd gain" — Rakvia Gold border + cream bg + deep-gold micro-type label */
.callout-gain {
  background: var(--gain-bg);
  border: 1px solid var(--gain-border);
  border-left-width: 4px;
  border-radius: 4px;
  padding: 1rem 1.1rem;
  margin: 1rem 0;
}
.callout-gain::before {
  content: "WHAT YOU'D GAIN";
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rakvia-gold-deep);
  margin-bottom: 0.5rem;
}

/* "What you'd give up" — Warm Gray card + deep-gold micro-type label */
.callout-loss {
  background: var(--loss-bg);
  border: 1px solid var(--loss-border);
  border-left-width: 4px;
  border-radius: 4px;
  padding: 1rem 1.1rem;
  margin: 1rem 0;
}
.callout-loss::before {
  content: "WHAT YOU'D GIVE UP";
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rakvia-gold-deep);
  margin-bottom: 0.5rem;
}

/* "What we cannot show" — Cream card + Deep Gold rule + label (existing v1.0 visual pattern) */
.callout-cannot-show {
  background: var(--cannot-show-bg);
  border: 1px solid var(--rule);
  border-top: 3px solid var(--cannot-show-border);
  border-radius: 4px;
  padding: 1rem 1.1rem;
  margin: 1rem 0;
}
.callout-cannot-show::before {
  content: "WHAT WE CANNOT SHOW";
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rakvia-gold-deep);
  margin-bottom: 0.5rem;
}

/* Per-section background tints for visual zoning */
.section-tint-cream {
  background: var(--section-tint-cream);
  padding: 1.25rem 1.1rem;
  border-radius: 4px;
  margin: 1.5rem 0;
}
.section-tint-warm-gray {
  background: var(--section-tint-warm-gray);
  padding: 1.25rem 1.1rem;
  border-radius: 4px;
  margin: 1.5rem 0;
}

/* Values picker — 18-chip menu, max-3 enforced client-side (Block 8 + Block 6 wires JS) */
.values-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 1rem 0;
}
.values-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;            /* WCAG 2.2 tap target */
  min-width: 44px;
  padding: 0.5rem 0.9rem;
  background: var(--card);
  border: 1.5px solid var(--rule);
  border-radius: 22px;
  color: var(--body);
  font-size: 0.92rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  user-select: none;
}
.values-chip:hover, .values-chip:focus-visible {
  border-color: var(--rakvia-gold);
  background: var(--section-tint-cream);
}
.values-chip--selected {
  background: var(--section-tint-cream);
  border-color: var(--rakvia-gold);
  border-width: 2px;
  font-weight: 600;
  color: var(--rakvia-gold-deep);
}
.values-chip--selected::after {
  content: " ✓";
  margin-left: 0.4rem;
  color: var(--rakvia-gold-deep);
}
.values-chip--custom-input {
  flex-grow: 1;
  min-width: 180px;
  padding: 0.5rem 0.9rem;
  border: 1.5px dashed var(--rakvia-gold);
  background: var(--card);
  font-family: inherit;
  font-size: 0.92rem;
  border-radius: 22px;
}
.values-picker-limit-notice {
  font-size: 0.88rem;
  color: var(--rakvia-gold-deep);
  margin-top: 0.5rem;
  font-style: italic;
}

/* Last-refreshed disclosure — small footer + methodology stamp */
.last-refreshed {
  font-size: 0.85rem;
  color: var(--secondary);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  letter-spacing: 0.02em;
  margin: 0.75rem 0;
}

/* Switch-lens link — small text-link near top of path page (lens-regret mitigation, Block 7 + Block 9) */
.switch-lens-link {
  display: inline-block;
  font-size: 0.88rem;
  color: var(--accent);
  text-decoration: underline;
  margin: 0.5rem 0 1rem;
}
.switch-lens-link::before {
  content: "← ";
  text-decoration: none;
}

/* ==========================================================================
   Carry-over from v1.0 (preserved verbatim with palette swap)
   ========================================================================== */

details {
  border: 1px solid var(--rule);
  border-radius: 4px;
  padding: 0.5rem 0.9rem;
  margin: 1rem 0;
  background: var(--card);
}
details summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--accent);
  padding: 0.4rem 0.6rem;
  min-height: 44px;
  display: flex;
  align-items: center;
  background: var(--section-tint-cream);
  border-radius: 3px;
  list-style: none;
  gap: 0.4rem;
}
details summary::-webkit-details-marker { display: none; }
/* Alt-text syntax ("/ ''") keeps generated content out of the accessible name
   (UX persona 2026-06-11: SR was reading "click to expand" into every summary). */
details summary::before { content: "▶" / ""; font-size: 0.7em; flex-shrink: 0; }
details[open] summary::before { content: "▼" / ""; }
details summary::after { content: " \00B7 tap to expand" / ""; font-size: 0.82em; font-weight: 400; color: var(--secondary); }
details[open] summary::after { content: " \00B7 tap to collapse" / ""; font-size: 0.82em; font-weight: 400; color: var(--secondary); }
details[open] summary { margin-bottom: 0.75rem; border-radius: 3px 3px 0 0; }

.credibility-ribbon {
  background: var(--section-tint-cream);
  border-top: 1px solid var(--rakvia-gold);
  border-bottom: 1px solid var(--rakvia-gold);
  padding: 0.75rem 1rem;
  margin: 2rem 0 1rem;
  font-size: 0.92rem;
  color: var(--body);
}

.survey-frame {
  width: 100%;
  max-width: 640px;
  height: 900px;
  border: 1px solid var(--rule);
  border-radius: 4px;
  display: block;
  margin: 1rem 0;
}
@media (max-width: 640px) { .survey-frame { height: 1000px; } }

.cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 1rem 0;
}
.cta-btn {
  display: inline-block;
  padding: 0.6rem 1rem;
  border: 1.5px solid var(--accent);
  border-radius: 4px;
  color: var(--accent);
  text-decoration: none;
  font-size: 0.95rem;
  min-height: 44px;
  line-height: 1.5;
}
.cta-btn:hover, .cta-btn:focus-visible {
  background: var(--accent);
  color: var(--rakvia-cream);
}
.cta-btn-primary {
  background: var(--accent);
  color: var(--rakvia-cream);
}
.cta-btn-primary:hover, .cta-btn-primary:focus-visible {
  background: var(--rakvia-warm-black);
  border-color: var(--rakvia-warm-black);
}

.footer-meta {
  border-top: 1px solid var(--rule);
  margin-top: 3rem;
  padding-top: 1.5rem;
  color: var(--secondary);
  font-size: 0.9rem;
}
.footer-meta p { margin: 0.5rem 0; }
.back-to-top { color: var(--secondary); font-size: 0.9rem; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .cta-btn, .values-chip { transition: none; }
}

.map-frame { width: 100%; height: 520px; border: 1px solid var(--rule); }
@media (max-width: 767px) { .map-frame { height: 420px; } }

.static-fallback { display: none; margin: 1rem 0; }
.no-js .plotly-chart { display: none; }
.no-js .static-fallback { display: block; }

/* ════════════════════════════════════════════════════════════════════
   v2.0 multi-path components (Block 6, 2026-06-11).
   Folds in _preview/router-preview.html helper styles per its build note,
   plus path-page components. Source of truth: assets/story.css (T4.1);
   the build copies this file to _deploy and asserts byte-identity.
   ════════════════════════════════════════════════════════════════════ */

.hero-sub { font-size: 1.12rem; }

/* Router path grid */
.path-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.85rem; margin: 1.25rem 0; }
@media (max-width: 760px) { .path-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .path-grid { grid-template-columns: 1fr; } }
.path-card {
  display: flex; flex-direction: column; gap: 0.3rem;
  padding: 1rem 1.05rem; min-height: 116px;
  background: var(--card); border: 1.5px solid var(--rule); border-radius: 6px;
  color: var(--body); text-decoration: none; transition: border-color .15s, box-shadow .15s;
}
.path-card:hover, .path-card:focus-visible { border-color: var(--rakvia-gold); box-shadow: 0 2px 10px rgba(138,117,68,.12); }
.path-card .pc-title { font-weight: 600; font-size: 1.04rem; color: var(--rakvia-gold-deep); }
.path-card .pc-sub { font-size: 0.9rem; color: var(--secondary); line-height: 1.35; }

/* Status pills (UX-11: visually distinct from tappable controls) */
.pill { align-self: flex-start; margin-top: auto; font-size: 0.68rem; font-weight: 700; letter-spacing: .07em;
  padding: 0.12rem 0.5rem; border-radius: 20px; text-transform: uppercase; }
.pill-full { background: var(--rakvia-gold-deep); color: var(--rakvia-cream); }
.pill-preview { background: var(--rakvia-light-gray); color: var(--rakvia-neutral-gray); }

.between-paths { color: var(--secondary); font-size: 0.95rem; margin: 0.25rem 0 0.5rem; }

/* Chip rows + Yes/No (44px targets, non-color selected cue per C2) */
.focus-chips, .yn-row, .rank-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.75rem 0; }
.yn-label { font-weight: 600; align-self: center; }
.yn-btn, .focus-chip { min-height: 44px; padding: 0.5rem 1rem; border-radius: 22px; border: 1.5px solid var(--rule);
  background: var(--card); color: var(--body); font: inherit; font-weight: 500; cursor: pointer; }
.yn-btn[aria-pressed=true], .focus-chip[aria-pressed=true] {
  border-color: var(--rakvia-gold); border-width: 2px; background: var(--section-tint-cream); color: var(--rakvia-gold-deep); font-weight: 600; }
.yn-btn[aria-pressed=true]::after, .focus-chip[aria-pressed=true]::after { content: " ✓"; }
.rank-chip[aria-pressed=true] { border-color: var(--rakvia-gold); border-width: 2px; font-weight: 600; }

/* Tailor expander + form fields */
.tailor { margin: 1.25rem 0; }
.tailor > summary { font-weight: 600; min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.privacy-anchor { font-size: 0.85rem; color: var(--rakvia-gold-deep); font-style: italic; margin: 0.4rem 0 0.75rem; }
.field-row { margin: 1rem 0; }
.field-row label { display: block; font-weight: 600; margin-bottom: 0.3rem; }
.field-row input[type=text], .field-row input[type=number], .field-row input[type=email] {
  padding: 0.5rem 0.7rem; border: 1.5px solid var(--rule); border-radius: 6px; font: inherit; min-height: 44px; width: 100%; max-width: 320px; }

/* Commitment-weighted ask stack (E2) */
.ask-stack { margin-top: 1rem; }
.ask-stack .ask-primary { font-size: 1.05rem; font-weight: 600; }
.ask-stack .ask-tip { font-size: 0.9rem; color: var(--secondary); }
.why-ask { font-size: 0.85rem; color: var(--secondary); font-style: italic; }

/* Path-page header pieces */
.focus-anchor { font-size: 0.98rem; color: var(--rakvia-gold-deep); }
.linklike { background: none; border: none; padding: 0; font: inherit; color: var(--rakvia-gold-deep);
  text-decoration: underline; cursor: pointer; min-height: 44px; }
.framing { font-size: 1.05rem; color: var(--body); border-left: 3px solid var(--rakvia-gold); padding-left: 0.9rem; }

/* In-page mini-nav (C5) */
.mini-nav { display: flex; flex-wrap: wrap; gap: 0.35rem 1rem; margin: 1rem 0 1.5rem; padding: 0.6rem 0;
  border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); font-size: 0.92rem; }
.mini-nav a { color: var(--rakvia-gold-deep); text-decoration: none; min-height: 44px; display: inline-flex; align-items: center; }
.mini-nav a:hover, .mini-nav a:focus-visible { text-decoration: underline; }

/* Trade-off tables (mobile reflow per C4) */
.tradeoff-group { margin: 0.75rem 0; }
.tradeoff-group > summary { font-weight: 600; min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.tradeoff-table { width: 100%; }
.tradeoff-row--yours th, .tradeoff-row--yours td { background: var(--section-tint-cream); }
.tradeoff-row--yours th { border-left: 3px solid var(--rakvia-gold); }
/* Non-color "your pick" cue, visible at every width + readable to assistive tech
   (UX persona 2026-06-11: gold highlight was color-only and invisible on mobile). */
.your-pick-tag { display: inline-block; margin-left: 0.5rem; padding: 0 0.35rem; font-size: 0.68rem;
  font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--rakvia-gold-deep); border: 1px solid var(--rakvia-gold); border-radius: 3px; }
@media (max-width: 480px) {
  .tradeoff-table thead { position: absolute; left: -9999px; }
  .tradeoff-table tr { display: block; margin-bottom: 0.9rem; border: 1px solid var(--rule); border-radius: 6px; padding: 0.5rem 0.7rem; }
  .tradeoff-table tr.tradeoff-row--yours { border-left: 4px solid var(--rakvia-gold); }
  .tradeoff-table th[scope=row], .tradeoff-table td { display: block; border: none; padding: 0.25rem 0; }
  .tradeoff-table td::before { content: attr(data-label); font-weight: 600; display: block; font-size: 0.85rem; color: var(--secondary); }
}

/* Stay-or-go table: horizontal scroll + sticky first column (C4) */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.stay-or-go-table th[scope=row] { position: sticky; left: 0; background: var(--bg); }
/* Wage table reuses the sticky-first-column pattern so mobile readers keep the
   industry label while swiping across the wage columns (UX persona 2026-06-11). */
.wage-table th[scope=row] { position: sticky; left: 0; background: var(--bg); text-align: left; }

/* Horizontal-scroll affordance (P2 fix 2026-06-15). a1-state.js adds .is-scrollable
   only when a wide table actually overflows its container, so the cue never misleads
   when the table already fits, and .scrolled-end once the reader reaches the last
   column. The cue is purely visual (aria-hidden in markup); screen readers navigate
   the table by its column headers. */
.scroll-hint { display: none; font-size: 0.85rem; font-style: italic; color: var(--secondary); margin: 0.15rem 0 0.5rem; }
.table-scroll.is-scrollable + .scroll-hint { display: block; }
.table-scroll.is-scrollable.scrolled-end + .scroll-hint { display: none; }

/* Evidence callouts */
.evidence-callouts { padding-left: 1.1rem; }
.evidence-callouts > li { margin: 1.1rem 0; }
.evidence-callouts h3 { margin: 0 0 0.25rem; }
.cite { font-size: 0.85rem; color: var(--secondary); }
.not-advice { font-size: 0.88rem; font-style: italic; color: var(--secondary); margin-top: 0.3rem; }

/* Time-window conditional callout (Principle 4: default invisible) */
.time-window { border-left: 3px solid var(--rakvia-gold); padding: 0.2rem 0 0.2rem 1rem; margin: 1.4rem 0; }
.time-window h3 { margin-top: 0; }

/* "More research" collapsible + women-veterans exhibit annotation (Block 7) */
.more-research { margin-top: 1.5rem; }
.more-research > summary { font-weight: 600; min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.research-note { font-size: 0.9rem; border-left: 3px solid var(--rakvia-gold); padding-left: 1rem; }

.cross-link { margin-top: 1.25rem; }
.values-picker-limit-notice { color: var(--rakvia-gold-deep); font-weight: 600; }

/* Exhibit toggles (Block 7c). Selected state is never color-only (C2):
   checkmark glyph + border weight + bold. Hidden entirely without JS. */
.exhibit-toggles { margin: 0.75rem 0 1.25rem; }
.toggle-group { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0.4rem 0; }
.toggle-label { font-size: 0.85rem; color: var(--secondary); min-width: 3.6rem; }
.ex-toggle { min-height: 44px; min-width: 44px; padding: 0.35rem 0.85rem; border: 1px solid var(--rule);
  border-radius: 999px; background: var(--bg); cursor: pointer; font: inherit; font-size: 0.9rem; }
.ex-toggle[aria-pressed="true"] { border: 2px solid var(--rakvia-gold-deep); font-weight: 600; }
.ex-toggle[aria-pressed="true"]::before { content: "\2713\00A0" / ""; color: var(--rakvia-gold-deep); }
.exhibit-unsupported { margin: 0.6rem 0; }
.no-js .js-only { display: none; }
.js .no-js-fallback { display: none; }

/* Screen-reader-only text (e.g., "Not yet pulled" behind a dash data cell —
   aria-label on <td> is unreliable across screen readers, UX persona 2026-06-11). */
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* O*NET skills-overlap bridge (Career-changer path, 2026-06-14). Cards over a wide table so
   the military-to-civilian mapping reflows to one column on narrow screens (Rule 9 mobile). */
.skills-bridge { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  margin: 1.25rem 0; padding-left: 0; list-style: none; }
.bridge-card { border: 1px solid var(--rule); border-radius: 8px; padding: 1rem 1.1rem; background: var(--card); }
.bridge-card .mil { font-size: 0.85rem; color: var(--secondary); margin: 0; }
.bridge-card .civ { font-size: 1.08rem; font-weight: 600; margin: 0.15rem 0 0.1rem; line-height: 1.25; }
.bridge-arrow { color: var(--rakvia-gold-deep); }
.bright-badge { display: inline-block; font: inherit; font-size: 0.7rem; font-weight: 600;
  color: var(--rakvia-gold-deep); background: transparent; border: 1px solid var(--rakvia-gold);
  border-radius: 999px; padding: 0.05rem 0.5rem; margin-left: 0.35rem; vertical-align: middle;
  white-space: nowrap; cursor: help; }
.bright-badge:focus-visible { outline: 2px solid var(--rakvia-gold-deep); outline-offset: 2px; }
/* Tap/focus/hover tooltip. Replaces the title= attribute, which never fires on touch
   devices (the dead-on-touch P2 fix). The badge is a real <button> so a tap reliably
   focuses it and reveals the tip; the button's aria-label carries the same text for
   screen readers, so the visible tip is aria-hidden. The tip is anchored to the card's
   .civ line (not the badge) and spans its full width, so it never clips off the screen
   edge when the badge sits at the end of a long civilian title. */
.bridge-card .civ { position: relative; }
.bright-badge-tip { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 6;
  width: auto; white-space: normal; text-align: left;
  font-size: 0.78rem; font-weight: 400; line-height: 1.35; color: #fff;
  background: var(--rakvia-warm-black); border-radius: 6px; padding: 0.4rem 0.55rem;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.22); pointer-events: none;
  opacity: 0; visibility: hidden; transition: opacity 0.12s ease; }
.bright-badge:hover .bright-badge-tip,
.bright-badge:focus .bright-badge-tip,
.bright-badge:focus-within .bright-badge-tip { opacity: 1; visibility: visible; }

/* Generic inline stats-term explainer badge (added 2026-07-02, plain-English audit).
   Same tap/focus/hover mechanics as .bright-badge above (real <button>, aria-label carries
   the text for screen readers, no title= attribute since that never fires on touch), but
   self-contained via its own wrapping span instead of depending on an ancestor class for
   positioning context -- safe to drop inline into any sentence, caption, or table header
   anywhere on the site. Use for a term whose plain meaning could be misread (e.g. "90th
   percentile" read as "90% of people"), placed right after the first use of the term on a
   page. The short "?" label stays visually tiny and out of the way; the popup carries the
   full explanation. Reader-facing rule: the surrounding SENTENCE must already state the
   plain-English meaning without needing this badge -- the badge is the optional deeper/
   more precise layer for readers who want it, never the only place the meaning is stated
   (hover/tap is easy to miss, especially on mobile). */
.term-tip-wrap { position: relative; display: inline-block; }
.term-tip { display: inline-block; font: inherit; font-size: 0.68rem; font-weight: 700;
  color: var(--rakvia-gold-deep); background: transparent; border: 1px solid var(--rakvia-gold);
  border-radius: 999px; width: 1.15em; height: 1.15em; line-height: calc(1.15em - 2px);
  text-align: center; padding: 0; margin-left: 0.3em; vertical-align: middle; cursor: help; }
.term-tip:focus-visible { outline: 2px solid var(--rakvia-gold-deep); outline-offset: 2px; }
.term-tip-pop { position: absolute; left: 0; top: calc(100% + 6px); z-index: 20;
  width: 240px; max-width: min(240px, calc(100vw - 16px)); white-space: normal; text-align: left;
  font-size: 0.78rem; font-weight: 400; line-height: 1.4; color: #fff;
  background: var(--rakvia-warm-black); border-radius: 6px; padding: 0.45rem 0.6rem;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.22); pointer-events: none;
  opacity: 0; visibility: hidden; transition: opacity 0.12s ease; }
.term-tip:hover + .term-tip-pop,
.term-tip:focus + .term-tip-pop,
.term-tip-wrap:focus-within .term-tip-pop { opacity: 1; visibility: visible; }
/* Viewport clamp (JS, assets/a1-state.js): the badge can land anywhere along wrapped
   text, so a fixed left:0 anchor can push the popup past either screen edge (confirmed
   via Playwright at 390px, 2026-07-02: a badge near the left edge of a wrapped line sent
   the popup to a negative left offset, clipping it). No pure-CSS anchor solves "stay
   inside the viewport from an arbitrary inline position" -- the JS shifts .term-tip-pop
   back on-screen via an inline left offset, same math as this project's existing .ib
   info-bubble clamp pattern. */

.bridge-pay { font-size: 1.25rem; font-weight: 600; color: var(--rakvia-warm-black); margin: 0.5rem 0 0; }
.bridge-pay small { font-size: 0.8rem; font-weight: 400; color: var(--secondary); }
.bridge-prep { font-size: 0.88rem; color: var(--secondary); margin: 0.35rem 0 0.6rem; }
.bridge-prep strong { color: var(--rakvia-warm-black); font-weight: 600; }
.skill-chips-label { font-size: 0.8rem; color: var(--secondary); margin: 0.55rem 0 0.2rem; }
.skill-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; padding-left: 0; margin: 0; list-style: none; }
.skill-chips li { font-size: 0.8rem; background: var(--section-tint-cream); border: 1px solid var(--rule);
  border-radius: 999px; padding: 0.15rem 0.6rem; }

/* Stay-or-go: state wage table (Illinois column emphasized as the reader's anchor) + remote bars.
   Compact font + nowrap wage cells so all five states fit the content column without the rightmost
   (Washington) clipping; the row label still wraps. .table-scroll is the narrow-screen fallback. */
.sog-table { font-size: 0.85rem; }
.sog-table th, .sog-table td { padding: 0.4rem 0.5rem; white-space: nowrap; text-align: right; }
.sog-table th[scope=col]:first-child, .sog-table th[scope=row] { text-align: left; white-space: normal; }
.sog-table th.sog-il, .sog-table td.sog-il { background: var(--section-tint-cream); font-weight: 600; }
.remote-bars { list-style: none; padding-left: 0; margin: 1rem 0; }
.remote-bars li { display: grid; grid-template-columns: 6.5rem 1fr 3rem; align-items: center; gap: 0.6rem; margin: 0.4rem 0; }
.remote-state { font-size: 0.9rem; }
.remote-track { background: var(--section-tint-warm-gray); border-radius: 999px; height: 0.85rem; overflow: hidden; }
.remote-bar { display: block; height: 100%; background: var(--rakvia-gold-deep); border-radius: 999px; }
.remote-pct { font-size: 0.88rem; font-weight: 600; text-align: right; }
.remote-bars li.sog-il-row .remote-state, .remote-bars li.sog-il-row .remote-pct { font-weight: 700; color: var(--rakvia-gold-deep); }

/* The hidden attribute must always win over component display rules
   (display:flex on a class silently defeats [hidden] otherwise). */
[hidden] { display: none !important; }
