:root {
  color-scheme: dark;
  --bg: #0a0d0e;
  --panel: rgba(12, 17, 18, 0.90);
  --panel2: rgba(16, 22, 23, 0.78);
  --ink: #e5e1d3;
  --muted: #8d948f;
  --line: rgba(220, 224, 214, 0.13);
  --us: #7799ad;
  --ussr: #a0706d;
  --fia: #9a9469;
  --neutral: #747c79;
  --active: #c8b982;
}
* { box-sizing: border-box; }
html, body { margin: 0; width: 100%; height: 100%; overflow: hidden; background: var(--bg); color: var(--ink); font-family: "Roboto Condensed", "Noto Sans", system-ui, sans-serif; }
body::before { content: ""; position: fixed; inset: 0; pointer-events: none; opacity: .15; background-image: radial-gradient(circle at 20% 10%, rgba(210,220,210,.07), transparent 25%), radial-gradient(circle at 80% 80%, rgba(90,110,100,.07), transparent 30%); }
#app { display: grid; grid-template-rows: 82px 1fr 34px; height: 100vh; }
.topbar { z-index: 3; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 0 22px; border-bottom: 1px solid var(--line); background: rgba(8, 11, 12, .95); backdrop-filter: blur(12px); }
.eyebrow { font-size: 11px; letter-spacing: .18em; color: var(--muted); }
.war-line { margin-top: 5px; font-size: 20px; letter-spacing: .05em; font-weight: 650; }
.dot, .score-sep { margin: 0 9px; color: #69716e; }
.score { font-size: 19px; letter-spacing: .035em; white-space: nowrap; }
.score-us { color: var(--us); } .score-ussr { color: var(--ussr); } .score-fia { color: var(--fia); }
.meta { text-align: right; color: #b8bbb4; font-size: 12px; letter-spacing: .08em; line-height: 1.7; }
.link-state { margin-left: 14px; } .link-state.online { color: #8aa184; } .link-state.offline { color: #9e706e; }
.workspace { min-height: 0; position: relative; display: grid; grid-template-columns: 1fr minmax(340px, 420px); }
.map-shell { position: relative; overflow: hidden; background: #0b1010; }
#map { width: 100%; height: 100%; display: block; cursor: grab; user-select: none; touch-action: none; }
#map.dragging { cursor: grabbing; }
.map-bg { fill: #101615; }
#everon-basemap { opacity: .72; filter: saturate(.56) brightness(.53) contrast(1.04); transition: opacity .16s ease; }
#map.hires-ready #everon-basemap { opacity: 0; }
.basemap-hires { pointer-events: none; }
.basemap-hires image { opacity: .90; filter: saturate(.56) brightness(.53) contrast(1.04); }
.map-tone { fill: rgba(6, 15, 14, .18); pointer-events: none; }
.grid-layer { pointer-events: none; opacity: 1; transition: opacity .16s ease; }
.grid-layer.is-hidden { opacity: 0; }
.grid-minor { stroke: rgba(220, 227, 216, .035); stroke-width: 7; vector-effect: non-scaling-stroke; }
.grid-major { stroke: rgba(225, 231, 221, .085); stroke-width: 9; vector-effect: non-scaling-stroke; }
.base-marker { cursor: default; }
.base-marker .base-visual { transform-origin: 0 0; }
.base-marker .hit { fill: transparent; stroke: none; pointer-events: all; }
.base-marker .ring { fill: rgba(8,11,12,.76); stroke-width: 3.2; vector-effect: non-scaling-stroke; }
.base-marker .core { stroke: rgba(255,255,255,.52); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.base-marker text { fill: #eeeadd; font-size: 148px; font-weight: 650; letter-spacing: .012em; paint-order: stroke; stroke: rgba(5,8,8,.96); stroke-width: 31px; stroke-linejoin: round; pointer-events: none; transition: opacity .12s ease; }
.base-marker text.label-hidden { opacity: 0; }
.labels-off .base-marker text { opacity: 0 !important; }
.base-marker.owner-US .ring { stroke: var(--us); } .base-marker.owner-US .core { fill: var(--us); }
.base-marker.owner-USSR .ring { stroke: var(--ussr); } .base-marker.owner-USSR .core { fill: var(--ussr); }
.base-marker.owner-FIA .ring { stroke: var(--fia); } .base-marker.owner-FIA .core { fill: var(--fia); }
.base-marker.owner-NONE .ring, .base-marker.owner- .ring { stroke: var(--neutral); } .base-marker.owner-NONE .core, .base-marker.owner- .core { fill: var(--neutral); }
.base-marker:hover .ring { stroke-width: 5; }
.base-marker.flash .ring { animation: markerFlash 1.7s ease-out 2; }
.base-marker.owner-changed .ring { animation: ownerChanged 1.15s ease-out 3; }
@keyframes markerFlash { 0% { opacity: 1; } 45% { opacity: .42; } 100% { opacity: 1; } }
@keyframes ownerChanged { 0% { stroke-width: 4; opacity: 1; } 50% { stroke-width: 9; opacity: .44; } 100% { stroke-width: 4; opacity: 1; } }
.event-ping { fill: none; stroke: var(--active); stroke-width: 3.5; vector-effect: non-scaling-stroke; opacity: 0; animation: ping 2.6s ease-out forwards; filter: url(#event-glow); }
@keyframes ping { 0% { opacity: 0; r: 80px; } 12% { opacity: .9; } 100% { opacity: 0; r: 430px; } }
.map-corner { position: absolute; bottom: 12px; padding: 6px 9px; background: rgba(8,11,12,.78); border: 1px solid var(--line); color: #a3aaa4; font-size: 10px; letter-spacing: .11em; pointer-events: none; backdrop-filter: blur(5px); }
.map-name { left: 14px; display: flex; gap: 10px; }
.map-source { color: #6f7c76; }
.map-coord { left: 50%; transform: translateX(-50%); min-width: 214px; text-align: center; font-variant-numeric: tabular-nums; color: #b1b6ae; }
.map-help { right: 14px; }
.scale-bar { position: absolute; right: 14px; bottom: 46px; min-width: 70px; padding: 5px 8px 7px; background: rgba(8,11,12,.72); border: 1px solid var(--line); color: #9fa6a0; font-size: 9px; letter-spacing: .10em; pointer-events: none; backdrop-filter: blur(5px); text-align: center; }
.scale-bar span { display: block; margin-bottom: 4px; }
.scale-bar i { display: block; height: 7px; border-left: 1px solid #aeb5ae; border-right: 1px solid #aeb5ae; border-bottom: 1px solid #aeb5ae; margin: 0 auto; }
.empty-map { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); text-align: center; padding: 20px 26px; border: 1px solid var(--line); background: rgba(8,11,12,.82); color: #b7b7ad; letter-spacing: .08em; font-size: 12px; pointer-events: none; }
.empty-map strong { display: block; margin-bottom: 8px; color: #ddd8c9; } .empty-map span { color: var(--muted); }
.base-tooltip { position: fixed; z-index: 20; width: 238px; padding: 11px 13px 12px; border: 1px solid rgba(220,224,214,.18); background: rgba(6,10,10,.94); box-shadow: 0 12px 32px rgba(0,0,0,.34); pointer-events: none; backdrop-filter: blur(8px); }
.base-tooltip[hidden] { display: none; }
.tooltip-owner { font-size: 10px; letter-spacing: .14em; color: #a9aea8; }
.tooltip-name { margin-top: 5px; font-size: 15px; font-weight: 680; letter-spacing: .025em; color: #ece7d9; }
.tooltip-original { margin-top: 3px; font-size: 10px; color: #69736e; }
.tooltip-coord { margin-top: 9px; padding-top: 8px; border-top: 1px solid rgba(220,224,214,.09); font-size: 10px; letter-spacing: .08em; color: #aeb4ad; font-variant-numeric: tabular-nums; }
.event-panel { min-height: 0; border-left: 1px solid var(--line); background: var(--panel); backdrop-filter: blur(10px); display: grid; grid-template-rows: 42px 1fr; }
.event-head { display: flex; justify-content: space-between; align-items: center; padding: 0 15px; border-bottom: 1px solid var(--line); font-size: 11px; letter-spacing: .13em; color: #b8bbb3; }
.pulse-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 7px; background: #889b80; box-shadow: 0 0 9px rgba(140,165,125,.55); }
.events { overflow: hidden; display: flex; flex-direction: column; }
.event { position: relative; padding: 10px 15px 9px; border-bottom: 1px solid rgba(220,224,214,.075); animation: eventIn .28s ease-out; }
.event.is-locatable { cursor: pointer; padding-right: 35px; }
.event.is-locatable::after { content: "◎"; position: absolute; top: 12px; right: 13px; color: #727d77; font-size: 13px; opacity: .72; }
.event.is-locatable:hover { background: rgba(220,224,214,.035); }
.event.is-locatable:hover::after { color: #c6c0a7; opacity: 1; }
@keyframes eventIn { from { opacity: 0; transform: translateX(9px); } to { opacity: 1; transform: none; } }
.event .line1 { display: flex; gap: 10px; align-items: baseline; } .event .time { color: #727a76; font-variant-numeric: tabular-nums; font-size: 10px; }
.event .kind { font-size: 10px; letter-spacing: .09em; color: #ded9cb; font-weight: 700; }
.event .detail { margin-top: 4px; color: #a8ada7; font-size: 11px; line-height: 1.30; }
.event.type-territory .kind { color: #d0c28d; } .event.type-mortar .kind { color: #bd9d82; } .event.type-illumination .kind { color: #d6cfa7; } .event.type-assault .kind { color: #b8a17e; }
.footerbar { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) 1.4fr; align-items: center; padding: 0 16px; border-top: 1px solid var(--line); background: rgba(8,11,12,.96); font-size: 10px; letter-spacing: .1em; color: #8e9690; }
.footerbar span:last-child { text-align: right; }
@media (max-width: 1000px) { .workspace { grid-template-columns: 1fr 320px; } .topbar { grid-template-columns: 1fr 1fr; } .score { display: none; } .meta { text-align: right; } .map-coord { display: none; } .map-help { display: none; } }
