.tactical-replay{border:1px solid var(--line);background:var(--panel);margin:32px 0;color:var(--ink)}
.replay-evidence{border-block:1px solid var(--line);margin:16px 0;min-width:0}.tactical-replay>.replay-evidence{margin:0;padding:0 24px}.replay-evidence summary,.replay-citations summary{cursor:pointer;padding:12px 0;min-height:44px;font-size:.875rem;line-height:1.5;color:var(--gold)}.replay-evidence-body{padding:0 0 16px;font-size:.875rem;line-height:1.7;overflow-wrap:anywhere}.replay-source-list p{display:flex;flex-direction:column;gap:5px;margin:12px 0;font-size:.875rem;line-height:1.6;overflow-wrap:anywhere}.replay-source-link{color:var(--gold);text-decoration:underline;text-underline-offset:3px}.replay-citations{margin-top:10px;min-width:0;overflow-wrap:anywhere}.replay-citations summary{font-size:.8125rem}.replay-source-missing{color:var(--muted);font-size:.8125rem}.replay-written-sections pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;border-left:2px solid var(--line);padding:12px}.replay-timing-issues{border-left:2px solid var(--gold);padding-left:14px}.replay-evidence :focus-visible,.replay-citations :focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media(max-width:600px){.tactical-replay>.replay-evidence{padding:0 16px}}
.tactical-replay [hidden]{display:none!important}.tr-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px 26px;border-bottom:1px solid var(--line)}.tr-heading .eyebrow{margin:0 0 7px}.tr-heading h2{font-size:34px;margin:0}.tr-status:empty{display:none}.tr-status .metadata-strip{margin:0;padding:18px 24px;border-top:0;background:#141a13}.tr-status dd{font-size:13px}
.tr-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,340px);grid-template-areas:"map phase" "map staff" "controls controls" "timeline timeline" "log log" "aar aar"}.tr-map-area{grid-area:map;min-width:0;display:flex;flex-direction:column;background:#141a14;border-right:1px solid var(--line)}.tr-map-label{display:flex;justify-content:space-between;gap:20px;padding:14px 18px;border-bottom:1px solid var(--line);font:10px/1.5 Consolas,monospace;letter-spacing:.09em;color:var(--muted)}
.tr-map{min-height:400px;flex:1;position:relative;overflow:hidden}.tactical-map-svg{display:block;width:100%;height:100%;min-height:400px;max-height:570px}.tr-map-unavailable{min-height:320px;padding:70px 28px;text-align:center;background:radial-gradient(ellipse at center,#24302033,transparent 70%)}.tr-map-unavailable>span{display:block;color:var(--gold);font:42px Consolas,monospace;margin-bottom:28px}.tr-map-unavailable h3{font-size:26px}.tr-map-unavailable p{color:var(--muted);max-width:380px;margin:auto;font-size:14px;line-height:1.8}
.tr-map-controls{display:flex;align-items:center;gap:7px;flex-wrap:wrap;border-top:1px solid var(--line);padding:12px 16px}.tactical-replay button:not(.button),.tactical-replay select{border:1px solid var(--line);background:#192119;color:var(--ink);font:12px/1.5 Inter,Arial,sans-serif;padding:10px 14px;min-height:42px;cursor:pointer}.tactical-replay button:not(.button):hover,.tactical-replay select:hover{border-color:var(--gold);color:var(--gold)}.tactical-replay button:focus-visible,.tactical-replay select:focus-visible,.tactical-replay input:focus-visible,.tr-map:focus-visible,.tactical-replay summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}.tr-map-controls details{position:relative;margin-left:auto}.tr-map-controls summary{cursor:pointer;font-size:12px;padding:12px}.tr-layers{position:absolute;z-index:5;right:0;bottom:100%;width:240px;padding:14px;background:#1b231a;border:1px solid var(--gold);box-shadow:0 15px 40px #0009;display:grid;gap:12px}.tr-layers label{font-size:13px;display:flex;align-items:center;gap:8px}.tr-layers input{accent-color:var(--gold);width:18px;height:18px}
.tr-legend{display:flex;gap:9px 16px;flex-wrap:wrap;padding:10px 18px;color:var(--muted);font:11px/1.6 Consolas,monospace}.tr-friendly{color:#93bec0}.tr-enemy{color:#d39587}.tr-footnote{font-size:11px;line-height:1.8;color:var(--muted);margin:0;padding:10px 18px 16px}.tr-phase{grid-area:phase;padding:24px;border-bottom:1px solid var(--line)}.tr-phase .eyebrow{font-size:10px;margin:0 0 14px}.tr-phase h3{font-size:28px;line-height:1.15;margin:0 0 12px}.tr-phase>p:not(.eyebrow){font-size:14px;line-height:1.8;color:var(--muted);margin:0}.tr-phase .metadata-strip{padding:12px 0;margin:16px 0 0;grid-template-columns:1fr 1fr}
.tr-staff{grid-area:staff;padding:0 24px 18px;min-width:0}.tr-staff h3,.tr-log h3{font-size:20px;margin:20px 0 12px}.tr-staff section+section{border-top:1px solid var(--line);margin-top:20px}.tr-state-list{list-style:none;padding:0;margin:0}.tr-state-list li{display:flex;flex-direction:column;gap:4px;font-size:13px;line-height:1.6;padding:7px 0}.tr-state-list li span{font:11px/1.6 Consolas,monospace;color:var(--muted)}.tr-muted{font-size:13px;line-height:1.7;color:var(--muted)}.tr-entities{margin-top:18px;font-size:12px}.tr-entities summary{cursor:pointer;color:var(--gold);padding:10px 0}
.tr-controls{grid-area:controls;padding:20px 24px 0;border-top:1px solid var(--line);background:#161c15}.tr-playback{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tr-playback .button{min-height:44px;padding:12px 22px;font-size:12px}.tr-playback label,.tr-log-heading label{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted)}.tr-playback output{margin-left:auto;color:var(--gold);font:13px Consolas,monospace;white-space:nowrap}.tr-timeline-label{display:block;font:10px Consolas,monospace;letter-spacing:.1em;color:var(--muted);margin:22px 0 7px}.tr-scrubber{width:100%;accent-color:var(--gold);cursor:pointer;height:24px;margin:0}.tr-event-ticks{height:28px;position:relative;margin:0 8px}.tr-event-ticks button{position:absolute;top:0;min-height:26px!important;width:20px;padding:0!important;border:0!important;background:transparent!important;transform:translateX(-50%)}.tr-event-ticks span{display:block;margin:auto;width:2px;height:9px;background:var(--gold)}.tr-controls .tr-footnote{padding:5px 0 15px}
.tr-phases{grid-area:timeline;display:flex;gap:0;overflow-x:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);scrollbar-color:var(--gold) var(--panel);padding:4px}.tr-phases button{flex:0 0 180px;text-align:left;padding:14px!important;border:0!important;border-right:1px solid var(--line)!important;background:transparent!important;position:relative}.tr-phases button span{font:10px Consolas,monospace;color:var(--muted);display:block;margin-bottom:10px}.tr-phases button strong{display:block;font:600 17px/1.2 Barlow,Arial,sans-serif;letter-spacing:.02em;text-transform:uppercase}.tr-phases button small{display:block;margin-top:8px;font-size:10px;color:var(--muted)}.tr-phases button[aria-current=step]{background:#c6b17a12!important;box-shadow:inset 0 -2px var(--gold);color:var(--gold)}
.tr-log{grid-area:log;padding:20px 24px;border-bottom:1px solid var(--line)}.tr-log-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.tr-log-heading h3{margin:0}.tr-log ol{list-style:none;padding:0;margin:18px 0 0;max-height:300px;overflow:auto}.tr-log li{display:grid;grid-template-columns:58px 1fr;gap:15px;padding:12px 0;border-top:1px solid #343b2f88}.tr-log li.tr-muted{display:block}.tr-log-time{color:var(--gold);font:12px/1.8 Consolas,monospace}.tr-log li small{display:block;text-transform:uppercase;color:var(--muted);font:9px/1.5 Consolas,monospace;letter-spacing:.08em}.tr-log li strong{font-size:13px;display:block;margin:4px 0}.tr-log li p{color:var(--muted);font-size:12px;line-height:1.6;margin:5px 0 0}
.tr-aar{grid-area:aar;padding:24px;background:#c6b17a07;border-left:2px solid var(--gold)}.tr-aar .eyebrow{margin:0 0 10px}.tr-aar h3{font-size:28px;margin:0 0 18px}.tr-aar p{font-size:14px;color:var(--muted);line-height:1.7;margin:0}.tr-aar .metadata-strip{margin:0;border:0;padding:0}.tr-notice{font-size:11px;line-height:1.8;color:var(--muted);padding:20px 24px;border-top:1px solid var(--line);margin:0}.tr-notice strong{color:var(--gold);font:10px Consolas,monospace;margin-right:8px}
.tactical-map-svg .map-ground{fill:#273328}.tactical-map-svg .layer-terrain path,.tactical-map-svg .layer-terrain polygon{fill:#53604733;stroke:#5b6a4e;stroke-width:1}.tactical-map-svg .layer-contours>*{fill:none;stroke:#7d8c6a;stroke-opacity:.3;stroke-width:1}.tactical-map-svg .layer-hydrology>*{fill:#405d5b66;stroke:#78958d;stroke-width:2}.tactical-map-svg .layer-roads>*{fill:none;stroke:#b5b198;stroke-width:3;stroke-opacity:.6}.tactical-map-svg .layer-structures>*{fill:#817c6255;stroke:#b5ad87;stroke-width:1}.tactical-map-svg .layer-grid path{stroke:#b6c39d;opacity:.09;stroke-width:1;fill:none}.tactical-map-svg .layer-grid text{fill:#c2cab3;opacity:.6;font:10px Consolas,monospace}.tactical-map-svg .layer-controlMeasures>*{fill:none;stroke:#b8aa72;stroke-width:1.5;stroke-dasharray:8 6}.tactical-map-svg .layer-labels>*{fill:#d9ddcd;font:12px Consolas,monospace;paint-order:stroke;stroke:#1c281c;stroke-width:4;stroke-linejoin:round}.tactical-symbol{color:#bdc5b7}.tactical-symbol[data-affiliation=friendly]{color:#a1cbd0}.tactical-symbol[data-affiliation=enemy]{color:#df9e8b}.symbol-frame{fill:#14201d;stroke:currentColor;stroke-width:2}.symbol-ink{fill:none;stroke:currentColor;stroke-width:1.5}.symbol-ink text{fill:currentColor;stroke:none;font:11px Consolas,monospace}.symbol-label{fill:#f0edde;font:12px Consolas,monospace;paint-order:stroke;stroke:#152017;stroke-width:4;stroke-linejoin:round}.symbol-state{fill:currentColor;font:9px Consolas,monospace;paint-order:stroke;stroke:#152017;stroke-width:3}.symbol-loss{display:none;stroke:#ccd0c5;stroke-width:2}.tactical-symbol:is([data-state=destroyed],[data-state=lost],[data-state="air loss recorded"]){color:#9a9e92}.tactical-symbol:is([data-state=destroyed],[data-state=lost],[data-state="air loss recorded"]) .symbol-loss{display:block}.tactical-route{fill:none;stroke:#aac3b0;stroke-width:2;stroke-linecap:round}.route-planned{stroke-dasharray:8 7}.route-approximate{stroke-dasharray:2 7}.route-air{stroke:#b6b582;stroke-dasharray:10 5}.route-enemy-axis{stroke:#c3907c;stroke-width:7;opacity:.45}.route-friendly-axis{stroke:#83adb2;stroke-width:7;opacity:.5}.map-objective{color:#c9b784;fill:none;stroke:currentColor;stroke-width:1.5}.map-objective>text{fill:currentColor;stroke:none;font:10px Consolas,monospace}.control-zone{fill:#8d96692a;stroke:#a4ad7e;stroke-width:1;stroke-dasharray:5 6}.control-zone[data-state=secured],.control-zone[data-state="friendly held"]{fill:#7ca1852a;stroke:#94b09b}.map-effect{fill:none;stroke:#d0bc87;stroke-width:1.5}.map-effect text{fill:#a9ad9f;stroke:none;font:10px Consolas,monospace}
@media(max-width:1050px){.tr-layout{grid-template-columns:1fr;grid-template-areas:"map" "phase" "controls" "timeline" "staff" "log" "aar"}.tr-map-area{border-right:0}.tr-map{min-height:420px}.tr-staff{display:grid;grid-template-columns:1fr 1fr;gap:0 30px;padding-top:4px}.tr-staff section+section{border:0;margin:0}.tr-entities{grid-column:1/-1}.tr-phase{border-top:1px solid var(--line)}}
@media(max-width:600px){.tr-heading{padding:20px 16px;align-items:flex-start}.tr-heading h2{font-size:28px}.tr-heading .status-badge{font-size:9px}.tr-layout .metadata-strip{grid-template-columns:1fr 1fr}.tr-map-label{font-size:9px;padding:12px}.tr-map,.tactical-map-svg{min-height:310px}.tr-map-area .tr-footnote{font-size:10px}.tr-map-controls{padding:10px;gap:5px}.tr-map-controls button{font-size:10px!important;padding:10px!important}.tr-map-controls details{margin-left:0}.tr-layers{left:0;right:auto;width:210px}.tr-phase,.tr-log,.tr-aar{padding:20px 16px}.tr-controls{padding:18px 16px 0}.tr-staff{display:block;padding:0 16px 20px}.tr-staff section+section{border-top:1px solid var(--line);margin-top:20px}.tr-playback{gap:8px}.tr-playback .button{flex:1;padding:12px 14px}.tr-playback output{width:100%;text-align:right;margin-top:4px}.tr-phases button{flex-basis:155px}.tr-log-heading{align-items:flex-start}.tr-log-heading label{font-size:0}.tr-log-heading select{max-width:140px;font-size:12px}.tr-notice{padding:18px 16px}.tr-legend{font-size:10px;padding:10px 12px}}
@media(prefers-reduced-motion:reduce){.tactical-replay *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.tr-log-heading label{white-space:nowrap;flex-shrink:0}.tr-log-heading select{width:auto}.route-emphasis{stroke:#d0bc87;stroke-width:4;opacity:.6}

.tr-playback label{white-space:nowrap}.tr-playback select{width:auto;min-width:65px}

/* Readable controls and body copy at all viewport sizes. */
.tr-phase>p:not(.eyebrow),.tr-aar>p,.tr-map-unavailable p{font-size:1rem}
.tactical-replay button:not(.button),.tactical-replay select,.tr-playback .button{font-size:.875rem;min-height:44px}
.tr-phase .eyebrow,.tr-heading .eyebrow,.tr-map-label,.tr-timeline-label,.tr-phases button span,.tr-footnote,.tr-notice,.tr-legend,.tr-log li small,.tr-state-list li span{font-size:.75rem}
.tr-state-list li,.tr-log li strong,.tr-log li p,.tr-muted,.tr-entities,.tr-playback label,.tr-log-heading label{font-size:.875rem}
@media(max-width:600px){.tr-map-controls button{font-size:.75rem!important}.tr-map-area .tr-footnote,.tr-legend{font-size:.75rem}.tr-log-heading label{font-size:0}.tr-map-label{font-size:.75rem;flex-wrap:wrap}}
