/* Snapshot resources inside the icon map; no timed cooldown simulation. */
.map-resource-button.nexus .map-resource-glyph{width:22px;height:24px;border-radius:5px}
.tactical-board .board-surface[data-icon-map]{display:flex;flex-direction:column;min-height:0}
.map-viewport{position:relative;flex:1;min-height:0;overflow:hidden;isolation:isolate;touch-action:pan-y}
.map-context-bar{position:relative;z-index:6;flex:none;display:grid;gap:3px;padding:5px 9px;border-bottom:1px solid var(--color-rule);background:var(--color-paper-2);color:var(--color-muted);font-size:12px;line-height:1.35;min-width:0}
.map-context-objectives,.map-context-spells{display:flex;align-items:center;gap:5px 10px;flex-wrap:wrap;min-width:0}
.map-context-objective{white-space:nowrap;color:var(--color-ink);font-weight:600}.map-context-objective b{color:var(--color-accent);font-weight:650;margin-left:3px}
.map-wave-readout,.map-unknown-readout{font-size:11px;color:var(--color-muted)}
.map-context-spells:empty{display:none}.map-core-spell{display:inline-flex;align-items:center;gap:4px;font-size:12px;white-space:nowrap;color:var(--color-ink)}
.map-core-spell img{width:12px;height:12px;border-radius:2px;flex:none}.map-core-spell b{font-family:var(--font-mono);font-size:12px;color:var(--color-accent)}.map-core-spell.cooldown b{color:var(--color-error)}.map-core-spell.unknown b,.map-core-spell.dead b{color:var(--color-muted)}.map-core-spell small{font-size:11px;margin-left:3px;color:var(--color-muted)}
.marker-spell-strip{position:absolute;left:50%;top:46px;transform:translateX(-50%);display:flex;gap:1px;z-index:5;pointer-events:none;line-height:1;white-space:nowrap}
.map-spell-token{position:relative;display:grid;place-items:center;width:14px;height:14px;border:1px solid var(--color-faint);border-radius:2px;background:var(--color-paper);box-shadow:0 1px 2px var(--color-black)}
.map-spell-token img{display:block;width:12px;height:12px;object-fit:cover;border-radius:1px}.map-spell-token b{font:9px var(--font-mono);color:var(--color-muted)}.map-spell-token.ready{border-color:var(--color-accent)}.map-spell-token.cooldown img,.map-spell-token.unknown img,.map-spell-token.dead img{filter:grayscale(.9);opacity:.45}.map-spell-token small{position:absolute;inset:0;display:grid;place-items:center;font:9px var(--font-mono);font-weight:800;color:var(--color-ink)}
.map-wave{position:absolute;left:0;top:0;z-index:3;display:grid;place-items:center;width:24px;height:24px;pointer-events:none;color:var(--color-blue)}.map-wave.red{color:var(--color-red)}.map-wave.unknown{color:var(--color-muted)}.map-wave>svg{width:18px;height:18px;fill:currentColor;filter:drop-shadow(0 1px 2px var(--color-black))}.map-wave>span{position:absolute;left:23px;top:2px;width:max-content;max-width:110px;padding:2px 4px;border-radius:3px;background:var(--color-paper);color:var(--color-ink);font-size:11px;line-height:1.4;white-space:normal}.map-wave.unknown>svg{opacity:.6}
.tactical-board .icon-objective{display:flex;align-items:center;gap:3px;min-width:22px;min-height:22px;border:1px solid var(--color-rule);background:var(--color-paper);padding:2px 4px;pointer-events:none;z-index:3}.icon-objective .objective-glyph{width:15px;height:15px;flex:none;fill:var(--color-accent)}.objective-map-label{font-size:11px;color:var(--color-ink);white-space:nowrap}
@media(max-width:480px){.map-context-bar{padding:4px 7px;gap:2px;font-size:11px}.map-context-objectives,.map-context-spells{gap:3px 6px}.map-core-spell{font-size:11px;gap:3px}.map-core-spell b{font-size:11px}.map-core-spell img{width:10px;height:10px}.map-wave-readout,.map-unknown-readout{font-size:11px}.map-wave>span{max-width:90px;font-size:11px}.marker-spell-strip{top:44px}.map-spell-token{width:12px;height:12px}.map-spell-token img{width:10px;height:10px}.objective-map-label{font-size:11px}}
@media(prefers-reduced-motion:reduce){.marker-spell-strip,.map-wave{animation:none;transition:none}}

.map-wave.large>svg{width:21px;height:21px;filter:drop-shadow(0 0 1px currentColor) drop-shadow(0 1px 2px var(--color-black))}.map-wave.large>span{font-weight:700;border:1px solid var(--color-red)}

.map-game-clock{font-family:var(--font-mono);font-size:12px;font-weight:700;color:var(--color-ink);padding-right:3px}.map-spell-token small{text-shadow:0 1px 2px var(--color-black)}
@media(max-width:480px){.map-game-clock{font-size:11px}}

/* Full icon-card geometry shares its sizes with actorFootprint(). */
.tactical-board[data-renderer="icons"] .board-marker.icon-marker{width:var(--map-hit,44px);height:var(--map-hit,44px);padding:0;overflow:visible}
.tactical-board[data-renderer="icons"] .board-marker.icon-marker>.champion-portrait{left:calc((var(--map-hit,44px) - var(--map-portrait,36px))/2);top:calc((var(--map-hit,44px) - var(--map-portrait,36px))/2);width:var(--map-portrait,36px);height:var(--map-portrait,36px)}
.tactical-board[data-renderer="icons"] .icon-marker .marker-hp{left:calc((var(--map-hit,44px) - var(--map-hp-width,34px))/2);top:var(--map-hp-top,40px);width:var(--map-hp-width,34px);height:4px;bottom:auto}
.tactical-board[data-renderer="icons"] .icon-marker .marker-spell-strip{top:var(--map-spell-top,46px)}
.tactical-board[data-renderer="icons"] .icon-marker .map-spell-token{width:var(--map-spell-size,14px);height:var(--map-spell-size,14px)}
.tactical-board[data-renderer="icons"] .icon-marker .map-spell-token img{width:calc(var(--map-spell-size,14px) - 2px);height:calc(var(--map-spell-size,14px) - 2px)}
.tactical-board[data-renderer="icons"] .board-marker.icon-marker .marker-role{display:none}
.tactical-board[data-renderer="icons"] .board-marker.icon-marker.perspective{z-index:12;border:0;background:none}
.tactical-board[data-renderer="icons"] .icon-marker.perspective>.champion-portrait{border:3px solid var(--color-accent);box-shadow:0 0 0 2px var(--color-paper),0 0 0 4px var(--color-accent)}
.tactical-board[data-renderer="icons"] .icon-marker.perspective .marker-perspective{display:block;left:50%;right:auto;top:var(--map-badge-top,-11px);transform:translateX(-50%);min-width:28px;text-align:center;padding:1px 6px;border:2px solid var(--color-paper);border-radius:5px;background:var(--color-accent);color:var(--color-accent-ink);font-size:13px;font-weight:850;line-height:18px;white-space:nowrap}
.tactical-board[data-renderer="icons"] .icon-marker.perspective.selected>.champion-portrait{box-shadow:0 0 0 2px var(--color-paper),0 0 0 4px var(--color-accent)}
.tactical-board[data-renderer="icons"] .map-viewport .board-map-credit{display:none}
.map-wave{display:flex;align-items:center;justify-content:center;gap:4px;width:max-content;height:26px;padding:2px 4px;border:1px solid var(--color-rule);border-radius:4px;background:var(--color-paper)}
.map-wave>svg{width:18px;height:18px;flex:none}.map-wave>span{position:static;display:block;width:auto;max-width:none;padding:0;border:0;background:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;line-height:16px}
.map-wave.compact>span,.icon-objective.compact .objective-map-label{display:none}
.tactical-board .icon-objective{height:26px;justify-content:center;box-sizing:border-box}.objective-map-label{min-width:0;overflow:hidden;text-overflow:ellipsis}
.map-resource-leader{stroke:var(--color-muted);opacity:.65}.map-resource-anchor{fill:var(--color-accent)}
@media(max-width:480px){.tactical-board[data-renderer="icons"] .icon-marker.perspective .marker-perspective{font-size:12px;line-height:17px}.map-wave>span{max-width:none;font-size:11px}}
@media(orientation:landscape) and (max-height:400px){.map-context-spells{display:none}.map-context-bar{padding:4px 7px;display:block;max-height:32px;overflow:hidden}.map-context-objectives{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;line-height:22px}.map-wave-readout,.map-unknown-readout{display:none}}
/* The compact replay toolbar overlays the scene's bottom row. Reserve its
   real 44px controls plus 4px clearance in layout, not only in painting. */
.tactical-board .board-surface[data-icon-map] .map-viewport{margin-bottom:48px}

/* Resource glyphs are fixed world anchors; only their separate captions move. */
.tactical-board .map-resource-button{position:absolute;left:0;top:0;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;background:none;border-radius:4px;display:grid;place-items:center;z-index:4;cursor:pointer;touch-action:manipulation;color:var(--color-accent);box-shadow:none}
.map-resource-button .map-resource-glyph{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--color-paper);border:1px solid currentColor;box-shadow:0 1px 3px var(--color-black);pointer-events:none}
.map-resource-button .objective-glyph{display:block;width:18px;height:18px;fill:currentColor;overflow:visible}
.map-resource-button .glyph-cross{fill:none;stroke:var(--color-ink);stroke-width:3;stroke-linecap:round}.map-resource-button .glyph-cutout{fill:var(--color-paper)}
.map-resource-button.blue{color:var(--color-blue)}.map-resource-button.red{color:var(--color-red)}.map-resource-button.unknown{color:var(--color-muted)}
.map-resource-button.tower .map-resource-glyph,.map-resource-button.inhibitor .map-resource-glyph{width:14px;height:16px;border:0;border-radius:2px;background:var(--color-paper)}
.map-resource-button.tower .objective-glyph,.map-resource-button.inhibitor .objective-glyph{width:12px;height:14px}
.map-resource-button.destroyed .map-resource-glyph,.map-resource-button.defeated .map-resource-glyph{opacity:.48;filter:grayscale(.55)}
.map-resource-button.not_spawned .map-resource-glyph,.map-resource-button.unavailable .map-resource-glyph{opacity:.45;border-style:dashed}
.map-resource-button.spawning .map-resource-glyph{border-style:dashed}.map-resource-button.wave .map-resource-glyph{width:20px;height:20px;border-radius:4px}.map-resource-button.wave.large .map-resource-glyph{border-width:2px;width:23px;height:23px}
.map-resource-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;z-index:16}.map-resource-button:hover .map-resource-glyph{box-shadow:0 0 0 2px var(--color-paper),0 0 0 3px currentColor}
.map-resource-label{position:absolute;left:0;top:0;z-index:3;display:block;box-sizing:border-box;height:22px;padding:3px 5px;border:1px solid var(--color-rule);border-radius:4px;background:var(--color-paper);color:var(--color-ink);font-size:11px;line-height:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}
.map-resource-label[hidden],.map-resource-button[hidden]{display:none!important}
.map-resource-button.base .map-resource-glyph{width:24px;height:24px;border-radius:4px;position:relative}
.base-unit-status{position:absolute;left:16px;top:-5px;display:block;width:20px;height:20px;border:1px solid var(--color-paper);background:var(--color-paper);border-radius:3px}
.base-unit-status:nth-of-type(2){left:32px;top:5px}.base-unit-status:nth-of-type(3){left:16px;top:15px}.base-unit-status:nth-of-type(4){left:32px;top:25px}.base-unit-status .champion-portrait{position:static!important;width:18px!important;height:18px!important;border:0!important;border-radius:2px;display:block}
.base-unit-status.dead .champion-portrait{filter:grayscale(1);opacity:.65}.base-unit-status b{position:absolute;right:-3px;bottom:-4px;background:var(--color-paper);color:var(--color-ink);font:900 13px var(--font-mono);line-height:14px;text-shadow:0 1px 1px var(--color-black)}
.map-base-readout{font-size:11px;font-weight:700;color:var(--color-ink)}.map-structure-legend{display:inline-flex;gap:3px;align-items:center;font-size:10px;white-space:nowrap}.map-structure-legend i{font-style:normal;color:var(--color-blue)}.map-structure-legend .destroyed{opacity:.5;color:var(--color-muted)}
@media(max-width:480px){.map-resource-label{font-size:10px}.map-resource-button.tower .objective-glyph,.map-resource-button.inhibitor .objective-glyph{width:11px;height:13px}}
@media(orientation:landscape) and (max-height:400px){.map-structure-legend{display:none}.map-context-objectives .map-base-readout{font-size:10px}}

.map-resource-button.neutral,.map-resource-button.base{z-index:13}
.base-unit-status:nth-of-type(1){left:-11px;top:-11px}.base-unit-status:nth-of-type(2){left:11px;top:-11px}.base-unit-status:nth-of-type(3){left:-11px;top:11px}.base-unit-status:nth-of-type(4){left:11px;top:11px}

.map-resource-button .empty-pit-glyph{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* Authored physical conditions are fixed snapshots, not simulated casts. */
.board-effect{pointer-events:none;vector-effect:non-scaling-stroke;fill:none;stroke-width:3}
.board-effect.wall{stroke:var(--color-red);stroke-dasharray:5 2;fill:color-mix(in oklab,var(--color-red) 9%,transparent)}
.board-effect.teleport{stroke:var(--color-blue);stroke-width:2;stroke-dasharray:2 3;fill:color-mix(in oklab,var(--color-blue) 8%,transparent)}
.tactical-board .map-resource-button.wall,.tactical-board .map-resource-button.teleport{z-index:13}
.map-resource-button.wall{color:var(--color-red)}.map-resource-button.teleport{color:var(--color-blue)}
.map-resource-button .effect-glyph{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.map-context-effects{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:11px;line-height:1.35;font-weight:750;color:var(--color-ink)}
.map-effect-readout.wall{border-left:3px solid var(--color-red);padding-left:5px}.map-effect-readout.teleport{border-left:3px solid var(--color-blue);padding-left:5px}
@media(orientation:landscape) and (max-height:400px){.map-context-bar:has(.map-context-effects){display:grid;max-height:none}.map-context-effects{gap:1px 8px;font-size:11px;line-height:14px}}
