/* Revision 2 — editorial reading system, casebook and maritime forces.
   Loaded after style.css. Map controls and map legends are maintained separately. */
:root {
  --cn:#933848; --tw:#6f59a1; --ph:#245d8c; --vn:#236c58;
  --my:#5d6e28; --bn:#806017; --id:#9b5428;
  --muted:#52676d;
  --reading-width:76ch;
  --surface-border:#ccd5cd;
}
html { scroll-padding-top:120px; }
body { font-size:16px; line-height:1.9; }
main, .page, .container, .page > *, .prose, .case-detail-layout > *,
.case-opening > *, .forces-page > *, .country-metrics > *, .force-comparison-grid > * { min-width:0; }
main { overflow-x:clip; }
p, li, dd { overflow-wrap:break-word; }
a { text-underline-offset:.22em; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible { outline:3px solid var(--copper); outline-offset:4px; }
button, input, select { min-height:44px; }
button { touch-action:manipulation; }
.eyebrow { font-size:14px; line-height:1.6; letter-spacing:.11em; color:var(--teal-dark); }
.small-note, .source-meta, .source-detail .fact-list dd, .metric-note, .metric-source,
.metric-conversion, .event-source, .event-meta, .event-date, .event-preview-date,
.event-date > span, .event-preview-date > span, .topic-number, .count,
.breadcrumb, .footer-grid a, .filter-label, .metric-label { font-size:14px; line-height:1.85; color:var(--muted); }
.toast { font-size:14px; line-height:1.85; color:var(--paper); }
.small-note a, .source-meta a, .event-source a { color:var(--teal-dark); }
.page-head { padding-top:46px; padding-bottom:34px; }
.page-title { max-width:26em; font-size:clamp(30px,3.2vw,46px); line-height:1.55; letter-spacing:.025em; }
.page-intro { max-width:var(--reading-width); font-size:17px; line-height:1.95; }
.section { padding-top:56px; }
.section-heading { gap:20px; margin-bottom:28px; }
.section-heading.compact { margin-bottom:20px; }
.section-heading h2, .section-title { font-size:clamp(24px,2.4vw,32px); line-height:1.65; }
.section-desc, .topic-card p, .event-preview-body p, .source-summary, .event-summary,
.callout, .callout p, .empty-state p, .phase-card p, .institution-card p { font-size:16px; line-height:1.95; }
.prose { font-size:17px; line-height:2; }
.prose > section { scroll-margin-top:124px; padding-top:34px; margin-top:34px; border-top:1px solid var(--line); }
.prose > section:first-child { margin-top:0; padding-top:0; border-top:0; }
.prose h2 { margin:0 0 22px; font-size:clamp(25px,2.5vw,33px); line-height:1.65; }
.prose h3 { font-size:21px; line-height:1.7; }
.prose p { margin-bottom:1.2em; }
.prose p:last-child { margin-bottom:0; }
.callout { border-left:3px solid var(--teal); padding:25px 28px; }
.callout h2, .callout h3 { font-size:22px; line-height:1.7; }
.callout .text-link + .text-link, .resource-strip .text-link + .text-link { margin-left:20px; }
.text-link, .button, .chip, .country-key, .country-dot, .filter-chips, .sources-panel a { font-size:14px; }
.text-link { line-height:1.8; }
.button { min-height:46px; padding:11px 19px; border-radius:2px; }
.button.primary { background:var(--teal-dark); border-color:var(--teal-dark); color:#fff; }
.button.secondary:hover { background:var(--teal-pale); border-color:var(--teal); }
.badge { min-height:28px; padding:3px 9px; border-radius:2px; font-size:14px; line-height:1.55; letter-spacing:0; }
.badge.stage { border-color:#859d9b; background:#eaf0ec; color:#234b50; }
.badge[class*="mean-"] { background:#f1f0e8; border-color:#c4c9bb; color:#43544b; }
.badge.mean-armed, .badge.mean-boarding { background:#f3e9e8; border-color:#cca3a2; color:#813f42; }
.badge.mean-water-cannon, .badge.mean-laser, .badge.mean-air-interference { background:#e8eff3; border-color:#a9bbc9; color:#2b5672; }
.badge.mean-structures, .badge.mean-massing { background:#eeeddf; border-color:#c1bd9d; color:#645f2e; }
.country-tags, .case-means { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.country-key { line-height:1.6; }
.country-key i, .country-dot { flex-shrink:0; }
.country-legend { line-height:1.8; }
.form-select, .search-input { min-width:0; width:100%; min-height:48px; padding:10px 12px; border:1px solid var(--line-strong); border-radius:2px; background:var(--white); font-size:16px; line-height:1.5; }
.search-input::placeholder { color:var(--muted); opacity:1; }
.fact-list { grid-template-columns:minmax(110px,150px) minmax(0,1fr); font-size:16px; }
.fact-list dt, .fact-list dd { padding-block:12px; line-height:1.85; }
.fact-list dt { color:var(--muted); font-size:14px; }
.fact-list dd { margin-left:0; overflow-wrap:anywhere; }
.fact-list dd p { margin:6px 0 0; }
.table-wrap { max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; border:1px solid var(--line); background:var(--white); }
.data-table { min-width:690px; width:100%; font-size:16px; line-height:1.85; border-collapse:collapse; }
.data-table th, .data-table td { padding:19px 20px; vertical-align:top; overflow-wrap:break-word; }
.data-table thead th { border-bottom:2px solid var(--line-strong); background:#e8ede6; color:var(--ink); font-size:14px; font-weight:600; }
.data-table tbody th { font-weight:500; }
.data-table tr + tr > * { border-top:1px solid var(--line); }
.data-table tbody tr:nth-child(even) { background:#f7f8f2; }
.data-table p { margin:8px 0 0; }
.source-detail, .event-detail { max-width:1120px; }
.source-detail h1 { font-size:clamp(27px,3vw,39px); line-height:1.7; }
.event-positions > div, .event-positions > p { font-size:16px; line-height:1.9; }
.timeline-filters h2, .timeline-filters h3 { font-size:18px; }
.source-card, .legal-card, .institution-card { padding-block:30px; }
.source-title { font-size:23px; line-height:1.7; }
.resource-strip { display:flex; flex-wrap:wrap; gap:12px 24px; margin-top:48px; padding-block:24px; border-top:1px solid var(--line-strong); }
.resource-strip .text-link + .text-link { margin-left:0; }
.footer { margin-top:36px; }
.footer-grid p { line-height:1.9; }

/* Masthead: six destinations, with a separate home link in the brand. */
.site-header { background:rgba(247,246,241,.98); border-bottom:1px solid var(--line-strong); }
.header-inner { min-height:100px; padding-block:12px; gap:22px; flex-wrap:nowrap; }
.brand { gap:12px; margin:0; }
.brand-mark { width:43px; height:48px; font-size:26px; }
.brand-name { font-size:19px; line-height:1.5; letter-spacing:.035em; }
.brand-sub { margin-top:2px; font-size:12px; line-height:1.5; letter-spacing:.07em; color:var(--muted); }
.nav { display:flex; flex:1 1 auto; justify-content:flex-end; align-self:stretch; gap:clamp(14px,1.7vw,26px); order:initial; padding:0; overflow:visible; }
.nav-link { min-height:48px; padding:6px 0; font-size:14px; line-height:1.6; color:var(--ink-soft); }
.nav-link.active, .nav-link[aria-current="page"] { color:var(--teal-dark); font-weight:600; }
.nav-link.active::after { bottom:-13px; height:3px; }
.menu-button { display:none; font-size:14px; }
.edition { display:none; }

/* Casebook filters, matrix and cards. */
.case-filter-panel { display:grid; grid-template-columns:1.55fr repeat(4,minmax(110px,1fr)); gap:20px 18px; align-items:end; margin:4px 0 36px; padding:26px; border-top:3px solid var(--teal); border-bottom:1px solid var(--line-strong); background:#eef0e8; }
.case-filter-panel > * { min-width:0; }
.case-filter-panel label { display:block; margin-bottom:8px; color:var(--ink); font-size:14px; font-weight:600; line-height:1.7; }
.case-years { grid-column:1 / 3; }
.case-years > div { display:flex; align-items:center; gap:12px; }
.case-years input { width:100%; min-width:0; padding:10px 12px; border:1px solid var(--line-strong); background:var(--white); font-size:16px; line-height:1.5; }
.case-filter-panel > .button { justify-self:start; align-self:end; }
.case-heat-section { padding:28px 0 30px; border-block:1px solid var(--line); }
.heatmap-scroll, .lane-scroll, .silhouette-scroll { width:100%; max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch; scrollbar-color:#839c94 #e6eae1; scrollbar-width:thin; }
.heatmap-scroll { padding-bottom:12px; margin-bottom:12px; }
.case-heatmap { display:grid; grid-template-columns:164px repeat(var(--heat-cols,53),minmax(28px,1fr)); gap:3px; min-width:calc(164px + var(--heat-cols,53)*31px); width:100%; font-variant-numeric:tabular-nums; }
.heat-corner, .heat-year, .heat-row-label { display:flex; align-items:center; min-height:36px; color:var(--ink-soft); font-size:14px; line-height:1.4; }
.heat-corner, .heat-row-label { position:sticky; left:0; z-index:2; padding:6px 12px 6px 0; background:var(--paper); }
.heat-corner { color:var(--muted); font-weight:500; }
.heat-row-label { min-height:38px; color:var(--ink); }
.heat-year { justify-content:center; font-size:14px; }
.heat-cell { position:relative; isolation:isolate; min-width:28px; min-height:38px; padding:2px; border:1px solid transparent; border-radius:1px; background:#e7ebe3; color:#213e43; font-size:14px; font-weight:600; line-height:1; }
.heat-cell::before { content:""; position:absolute; inset:0; z-index:-1; background:#276f78; opacity:var(--heat-opacity,0); }
.heat-cell.has-records { color:#fff; text-shadow:0 1px 1px #173b42; }
.heat-cell.has-records::before { background:#19545e; opacity:max(.75,var(--heat-opacity,0)); }
.heat-cell:disabled { opacity:1; color:#7a8981; cursor:default; }
.heat-cell.has-records:hover, .heat-cell.selected { border-color:var(--ink); outline:2px solid var(--copper); outline-offset:1px; z-index:3; }
.case-results-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:16px 24px; margin:30px 0 24px; }
.case-results-toolbar p { margin:0 auto 0 0; font-size:16px; font-weight:600; font-variant-numeric:tabular-nums; }
.segmented { display:inline-flex; padding:3px; border:1px solid var(--line-strong); border-radius:3px; background:#e9eee6; }
.segmented button { min-height:42px; padding:8px 18px; border:0; border-radius:1px; background:transparent; font-size:14px; line-height:1.5; color:var(--ink-soft); }
.segmented button[aria-pressed="true"] { background:var(--teal-dark); color:#fff; }
.case-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.case-card { display:flex; flex-direction:column; gap:15px; min-width:0; padding:25px 25px 22px; border:1px solid var(--surface-border); border-top:3px solid var(--teal); background:var(--white); }
.case-card-top { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:10px; }
.record-date { color:var(--ink-soft); font-family:var(--sans); font-size:14px; font-weight:500; line-height:1.7; font-variant-numeric:tabular-nums; }
.case-card h3 { margin:0; font-family:var(--serif); font-size:24px; font-weight:500; line-height:1.65; }
.case-card h3 a { color:var(--ink); text-decoration:none; }
.case-card h3 a:hover { color:var(--teal-dark); text-decoration:underline; }
.case-card h3 a span { color:var(--teal); font-family:var(--sans); font-size:19px; }
.case-card > p { margin:0; color:var(--ink-soft); font-size:16px; line-height:1.95; }
.case-card > p.small-note { color:var(--muted); font-size:14px; }
.case-card .case-means { margin-top:auto; padding-top:5px; }
.case-card-foot { display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; padding-top:18px; border-top:1px solid var(--line); font-size:14px; line-height:1.8; }
.case-card-foot > span { color:var(--muted); }
.case-card-foot a { font-weight:500; }
.case-lane-chart { display:block; width:100%; min-width:1100px; max-width:none; height:auto; padding:18px 0; background:var(--white); font-family:var(--sans); font-size:15px; fill:var(--ink); }
.case-lane-chart a:hover circle { stroke:var(--copper); stroke-width:4px; }
.lane-grid { stroke:#d3ded5; stroke-width:1; stroke-dasharray:3 5; fill:none; }
.lane-base { stroke:#d0d9cf; stroke-width:1; fill:none; }
.axis-title { font-size:14px; fill:var(--muted); }

/* Individual case: evidence sequence and two parallel official accounts. */
.case-detail .page-head { padding-top:12px; }
.case-detail .page-head .country-tags { margin:18px 0; }
.case-detail .page-head .case-means { margin-top:23px; }
.case-detail .page-head > .small-note { margin-top:15px; }
.case-opening { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr); gap:38px; align-items:start; margin:12px 0 52px; padding-top:30px; border-top:2px solid var(--ink); }
.case-opening h2 { font-family:var(--serif); font-size:26px; font-weight:500; line-height:1.65; }
.participants-list { display:grid; gap:0; margin-top:22px; }
.participants-list article { padding:19px 0; border-top:1px solid var(--line); }
.participants-list h3 { margin:0 0 8px; font-size:18px; line-height:1.7; }
.participants-list p { margin:6px 0; font-size:16px; line-height:1.9; }
.participants-list .event-source { font-size:14px; }
.small-map { width:100%; height:340px; border:1px solid var(--line-strong); background:#e6eee8; }
.case-location .small-note { margin:13px 0; }
.case-detail-layout { display:grid; grid-template-columns:minmax(0,1fr) 210px; gap:56px; align-items:start; }
.case-detail-layout > .prose { max-width:var(--reading-width); }
.case-toc { position:sticky; top:126px; padding:22px 20px; border-top:2px solid var(--ink); background:#edf0e7; }
.case-toc .eyebrow { margin-bottom:12px; }
.case-toc a { display:block; min-height:44px; padding:8px 0; color:var(--ink-soft); font-size:14px; line-height:1.8; text-decoration:none; }
.case-toc a:hover { color:var(--teal-dark); text-decoration:underline; }
.case-toc hr { margin:16px 0; border:0; border-top:1px solid var(--line-strong); }
.case-sequence { margin:0; padding:0; list-style:none; }
.case-sequence li { position:relative; padding:0 0 31px 32px; border-left:1px solid var(--line-strong); }
.case-sequence li::before { content:""; position:absolute; top:8px; left:-5px; width:9px; height:9px; border:2px solid var(--paper); background:var(--teal); border-radius:50%; box-shadow:0 0 0 1px var(--teal); }
.case-sequence li:last-child { padding-bottom:0; }
.sequence-date { margin-bottom:10px; font-size:15px; font-weight:600; line-height:1.8; font-variant-numeric:tabular-nums; }
.case-sequence li > p { margin:12px 0; }
.case-sequence .small-note { font-size:14px; }
.effect-grid, .official-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin-top:24px; }
.effect-grid > div { padding:23px; border:1px solid var(--line); background:var(--white); }
.effect-grid h3 { margin:0 0 15px; font-size:20px; }
.official-account { min-width:0; padding:22px; border-top:4px solid var(--actor-color,var(--teal)); background:var(--white); box-shadow:inset 0 0 0 1px var(--line); }
.official-account h3 { margin:0 0 12px; font-size:23px; }
.official-account > p { margin:15px 0; }
.official-account .small-note { font-size:14px; }
.reaction { padding:24px 0; border-bottom:1px solid var(--line); }
.reaction h3 { margin:0 0 12px; }
#case-sources > a { display:block; margin-top:13px; overflow-wrap:anywhere; }

/* Maritime organizations and comparisons. */
.country-tabs { display:flex; align-items:stretch; flex-wrap:wrap; gap:10px; margin-bottom:20px; }
.country-tabs > a { display:flex; align-items:center; justify-content:center; min-height:48px; padding:10px 18px; border:1px solid var(--line-strong); background:var(--white); color:var(--ink-soft); font-size:15px; text-decoration:none; }
.country-tabs > a[aria-current="page"] { border-color:var(--teal-dark); background:var(--teal-dark); color:#fff; }
.country-tabs > a[aria-current="page"] .country-key { color:#fff; }
.force-subnav { display:flex; align-items:stretch; flex-wrap:wrap; gap:0 28px; margin-bottom:34px; border-bottom:1px solid var(--line-strong); }
.force-subnav a { display:flex; align-items:center; min-height:54px; padding:12px 0; border-bottom:3px solid transparent; color:var(--ink-soft); font-size:15px; text-decoration:none; }
.force-subnav a[aria-current="page"] { color:var(--teal-dark); border-bottom-color:var(--teal); font-weight:600; }
.forces-page > section > h2, .silhouette-figure h2 { font-family:var(--serif); font-size:clamp(25px,2.5vw,33px); font-weight:500; line-height:1.65; }
.force-comparison-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:26px; }
.force-bar-figure { min-width:0; margin:0; padding:26px; border-top:3px solid var(--teal); background:var(--white); box-shadow:inset 0 0 0 1px var(--line); }
.force-bar-figure h3 { margin:0; font-size:22px; font-weight:500; line-height:1.7; }
.force-bar-figure > p { color:var(--ink-soft); font-size:16px; line-height:1.9; }
.force-bars { display:grid; gap:20px; margin:27px 0 24px; }
.force-bar-row { display:grid; grid-template-columns:100px minmax(0,1fr) 105px; align-items:center; gap:13px; min-height:44px; }
.force-bar-row > span { min-width:0; }
.force-bar-row > strong { color:var(--ink); font-size:18px; font-weight:600; line-height:1.6; text-align:right; font-variant-numeric:tabular-nums; }
.force-bar-row strong small { font-size:14px; font-weight:400; }
.force-bar-track { position:relative; height:16px; background:#e8ede5; }
.force-bar, .force-bar-range { position:absolute; top:0; height:100%; }
.force-bar { left:0; }
.force-bar-range { opacity:.55; background-image:repeating-linear-gradient(135deg,transparent,transparent 3px,#fff 3px,#fff 5px) !important; }
.force-bar-figure figcaption { padding-top:18px; border-top:1px solid var(--line); font-size:14px; line-height:1.85; color:var(--muted); }
.force-bar-figure figcaption > .small-note { display:block; margin-top:12px; }
.country-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px; align-items:start; }
.country-metric-block { min-width:0; padding:24px; border-top:3px solid var(--ink); background:#eef0e8; }
.country-metric-block > h3 { margin:0 0 20px; font-size:20px; }
.country-metric-block > h3 .country-key { font-size:18px; }
.force-metric { padding:22px 0; border-top:1px solid var(--line-strong); }
.force-metric h4 { margin:0 0 14px; font-size:18px; font-weight:500; line-height:1.8; }
.force-metric p { margin:13px 0; font-size:16px; line-height:1.95; }
.force-metric p.small-note { font-size:14px; }
.force-metric p.force-number { margin:15px 0; color:var(--teal-dark); font-family:var(--english); font-size:42px; line-height:1.25; font-weight:400; font-variant-numeric:tabular-nums; }
.force-number > span { font-family:var(--sans); font-size:16px; }
.silhouette-figure { margin:0 0 26px; }
.silhouette-scroll { margin:24px 0 16px; border:1px solid var(--line); background:var(--white); }
.ship-comparison { width:100%; min-width:900px; max-width:none; height:auto; font-family:var(--sans); font-size:15px; fill:var(--ink); }
.silhouette-figure > figcaption { max-width:var(--reading-width); font-size:14px; }
.vessel-table { min-width:1050px; }
.vessel-table th:first-child { width:21%; }
.vessel-table td { width:20%; }
.vessel-table td:last-child { width:19%; }
.vessel-table .event-source { margin-top:0; }
.country-organizations { margin-top:48px; padding-top:28px; border-top:2px solid var(--ink); }
.country-organizations > p { max-width:var(--reading-width); }
.organization-flow { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:15px; margin:30px 0; }
.organization-node { display:flex; flex-direction:column; gap:10px; padding:20px; border:1px solid var(--line-strong); border-top:4px solid var(--actor-color,var(--teal)); background:var(--white); color:var(--ink); text-decoration:none; }
.organization-node span { color:var(--muted); font-size:14px; line-height:1.7; }
.organization-node strong { font-size:17px; font-weight:500; line-height:1.8; }
.organization-node:hover { border-color:var(--teal); background:#edf2eb; }
.organization-record { max-width:1000px; margin-top:34px; padding:29px 30px; border:1px solid var(--line); background:var(--white); scroll-margin-top:126px; }
.organization-record > h3 { margin:0 0 10px; font-family:var(--serif); font-size:28px; font-weight:500; line-height:1.65; }
.organization-record h4 { margin:27px 0 14px; font-size:19px; }
.legal-basis { padding:18px 0; border-top:1px solid var(--line); }
.legal-basis strong { font-size:16px; font-weight:500; line-height:1.9; }
.legal-basis p { margin:10px 0; }
.deployment-map { width:100%; height:500px; margin:28px 0 14px; border:1px solid var(--line-strong); background:#e6eee8; }
.deployment-grid, .tactics-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin-top:30px; }
.deployment-card, .tactic-card { min-width:0; padding:25px; border:1px solid var(--line); border-top:3px solid var(--teal); background:var(--white); }
.deployment-card > div { display:flex; align-items:center; flex-wrap:wrap; gap:9px; }
.deployment-card h3, .tactic-card h3 { margin:17px 0 14px; font-size:23px; line-height:1.7; }
.deployment-card h3 a { color:var(--ink); text-decoration:none; }
.deployment-card h3 a:hover { color:var(--teal-dark); text-decoration:underline; }
.deployment-card p, .tactic-card p { font-size:16px; line-height:1.95; }
.deployment-card p.small-note, .deployment-card p.record-date { font-size:14px; }
.tactics-grid + .text-link, .tactics-grid ~ .text-link { display:inline-flex; min-height:44px; align-items:center; margin:18px 24px 0 0; }

/* Responsive behavior: only figures and tables scroll horizontally. */
@media (max-width:1180px) and (min-width:801px) {
  .header-inner { flex-wrap:wrap; gap:8px 24px; padding-top:15px; padding-bottom:0; }
  .brand { margin-bottom:5px; }
  .nav { flex:1 1 100%; order:3; justify-content:space-between; gap:18px; }
  .nav-link { min-height:52px; }
  .nav-link.active::after { bottom:0; }
  html { scroll-padding-top:160px; }
  .case-toc { top:163px; }
}
@media (max-width:1100px) {
  .case-grid, .deployment-grid, .tactics-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .case-filter-panel { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .case-filter-panel > div:first-child { grid-column:1 / 3; }
  .case-years { grid-column:auto; }
  .case-detail-layout { grid-template-columns:minmax(0,1fr) 175px; gap:30px; }
  .case-opening { gap:28px; }
  .force-comparison-grid { grid-template-columns:minmax(0,1fr); }
  .force-bar-row { grid-template-columns:115px minmax(0,1fr) 120px; }
  .country-metrics { gap:16px; }
  .country-metric-block { padding:20px; }
}
@media (max-width:800px) {
  html { scroll-padding-top:103px; }
  .container { width:calc(100% - 40px); }
  .header-inner { flex-wrap:wrap; min-height:86px; padding-block:14px; gap:0 12px; }
  .brand { gap:10px; margin:0; }
  .brand-mark { width:35px; height:41px; font-size:22px; }
  .brand-name { font-size:17px; }
  .brand-sub { font-size:11px; letter-spacing:.05em; }
  .menu-button { display:inline-flex; margin-left:auto; padding:9px 12px; }
  .nav { display:none; flex:1 1 100%; order:3; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 20px; margin-top:15px; padding-top:10px; border-top:1px solid var(--line); overflow:visible; }
  .nav.open, .nav.is-open, .nav[aria-expanded="true"] { display:grid; }
  .nav-link { min-width:0; min-height:48px; white-space:normal; padding:11px 0; font-size:14px; }
  .nav-link.active::after { bottom:0; height:2px; }
  .page-head { padding-top:32px; padding-bottom:28px; }
  .page-title { font-size:34px; line-height:1.6; }
  .page-intro { font-size:16px; }
  .eyebrow, .small-note, .source-meta, .metric-note, .metric-source, .metric-conversion, .event-meta, .event-source, .event-preview-date, .event-preview-date > span, .topic-number, .breadcrumb, .filter-label { font-size:14px; }
  .section { padding-top:42px; }
  .section-heading { align-items:flex-start; flex-wrap:wrap; gap:12px; }
  .section-heading h2, .section-title { font-size:27px; }
  .prose { font-size:16px; line-height:1.95; }
  .prose > section { scroll-margin-top:106px; margin-top:29px; padding-top:28px; }
  .prose h2 { font-size:27px; }
  .prose h3 { font-size:21px; }
  .callout { padding:22px; }
  .callout .text-link + .text-link { margin-left:0; margin-top:12px; }
  .case-filter-panel { grid-template-columns:repeat(2,minmax(0,1fr)); gap:19px 16px; padding:22px 20px; }
  .case-filter-panel > div:first-child { grid-column:1 / -1; }
  .case-years { grid-column:1 / -1; }
  .case-filter-panel > .button { grid-column:1 / -1; }
  .case-heat-section { padding-top:23px; }
  .case-heatmap { grid-template-columns:145px repeat(var(--heat-cols,53),30px); min-width:calc(145px + var(--heat-cols,53)*33px); }
  .heat-row-label, .heat-corner { font-size:14px; }
  .case-results-toolbar { gap:15px; margin-top:24px; }
  .case-results-toolbar > p { flex-basis:100%; }
  .case-grid { gap:20px; }
  .case-card { padding:22px 20px; }
  .case-card h3 { font-size:22px; }
  .case-opening { grid-template-columns:minmax(0,1fr); gap:28px; margin-bottom:38px; }
  .small-map { height:330px; }
  .case-detail-layout { grid-template-columns:minmax(0,1fr); gap:27px; }
  .case-toc { position:static; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px 15px; order:-1; padding:18px 20px; }
  .case-toc .eyebrow { grid-column:1 / -1; margin:0; }
  .case-toc hr { display:none; }
  .case-toc a { min-height:42px; padding:7px 0; }
  .official-grid, .effect-grid { gap:17px; }
  .official-account, .effect-grid > div { padding:20px; }
  .case-sequence li { padding-left:26px; }
  .country-tabs { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
  .country-tabs > a { padding:9px; font-size:14px; }
  .country-tabs .country-key { font-size:14px; }
  .force-subnav { gap:0 22px; }
  .force-subnav a { font-size:14px; }
  .country-metrics { grid-template-columns:minmax(0,1fr); gap:24px; }
  .country-metric-block { padding:24px; }
  .force-metric { padding-block:21px; }
  .force-bar-figure { padding:23px; }
  .force-bar-row { grid-template-columns:100px minmax(0,1fr) 105px; gap:10px; }
  .organization-flow { grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; }
  .organization-record { padding:24px; scroll-margin-top:106px; }
  .organization-record > h3 { font-size:25px; }
  .deployment-map { height:380px; }
  .deployment-grid, .tactics-grid { gap:20px; }
  .deployment-card, .tactic-card { padding:22px; }
  .fact-list { grid-template-columns:110px minmax(0,1fr); gap:0 16px; }
  .table-wrap { margin-inline:0; }
  .data-table th, .data-table td { padding:16px; }
  .source-title { font-size:22px; }
  .resource-strip { margin-top:35px; gap:12px 22px; }
}
@media (max-width:560px) {
  .container { width:calc(100% - 32px); }
  .brand-name { font-size:16px; }
  .brand-sub { font-size:10px; }
  .menu-button { font-size:14px; padding-inline:10px; }
  .page-title { font-size:30px; }
  .case-grid, .deployment-grid, .tactics-grid { grid-template-columns:minmax(0,1fr); }
  .case-filter-panel { padding:20px 16px; gap:18px 12px; }
  .case-card { padding:23px 21px; }
  .case-card h3 { font-size:24px; }
  .case-card-foot { gap:12px; }
  .segmented { width:100%; }
  .segmented button { flex:1; padding-inline:12px; }
  .case-toc { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .effect-grid, .official-grid { grid-template-columns:minmax(0,1fr); }
  .case-opening h2 { font-size:25px; }
  .small-map { height:300px; }
  .country-tabs { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .force-subnav { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; }
  .force-subnav a { line-height:1.7; }
  .force-bar-figure { padding:22px 17px; }
  .force-bar-row { grid-template-columns:85px minmax(0,1fr) 78px; gap:8px; }
  .force-bar-row > strong { font-size:16px; }
  .force-bar-row strong small { font-size:14px; }
  .force-bar-row .country-key { font-size:14px; }
  .organization-flow { grid-template-columns:minmax(0,1fr); }
  .organization-node { padding:19px; }
  .organization-record { padding:22px 19px; }
  .organization-record .fact-list { grid-template-columns:minmax(0,1fr); gap:0; }
  .organization-record .fact-list dt { padding-bottom:0; border-bottom:0; font-weight:600; }
  .organization-record .fact-list dd { padding-top:5px; }
  .force-metric p.force-number { font-size:40px; }
  .deployment-map { height:340px; }
  .fact-list, .source-detail .fact-list { grid-template-columns:95px minmax(0,1fr); gap:0 12px; }
  .fact-list dd, .source-detail .fact-list dd { font-size:16px; }
  .event-preview { grid-template-columns:85px minmax(0,1fr); gap:14px; }
  .event-preview-body h3 { font-size:20px; }
  .event-card { padding-left:20px; }
  .event-title { font-size:22px; }
  .event-source { font-size:14px; }
  .topic-card p, .source-summary, .period-summary, .event-summary { font-size:16px; }
  .timeline-filters { grid-template-columns:minmax(0,1fr); }
  .resource-strip { display:grid; grid-template-columns:minmax(0,1fr); }
  .resource-strip .text-link { margin:0; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation:none !important; transition:none !important; }
}
@media print {
  body { font-size:11pt; color:#000; }
  .site-header { position:static; }
  .case-filter-panel, .case-results-toolbar, .case-toc, .force-subnav, .country-tabs { display:none !important; }
  .case-grid, .case-opening, .case-detail-layout, .force-comparison-grid, .country-metrics, .deployment-grid, .tactics-grid { display:block; }
  .case-card, .force-bar-figure, .force-metric, .organization-record, .deployment-card, .tactic-card { break-inside:avoid; margin-bottom:20px; }
  .heatmap-scroll, .lane-scroll, .silhouette-scroll, .table-wrap { overflow:visible; }
  .case-lane-chart, .ship-comparison, .data-table { min-width:0; }
  .small-map, .deployment-map { height:300px; }
  .case-detail-layout > .prose { max-width:none; }
}
/* Keep the casebook's reading guide distinct from the data views. */
.cases-page > .callout.section { margin-top:38px; padding-top:25px; padding-bottom:25px; }
