.map-page{background:radial-gradient(circle at 80% -10%,#183324 0,transparent 34%),#080d0b}
.map-header,.map-main,.map-page footer{max-width:1540px}
.map-main{padding:36px 28px 55px}
.map-intro{display:flex;align-items:end;justify-content:space-between;gap:35px;margin:5px 0 30px}
.map-intro h1{font-size:clamp(44px,5vw,74px);margin:12px 0 12px}
.map-intro p{color:var(--muted);max-width:590px;margin:0;font-size:16px}
.map-summary{display:flex;align-items:center;border:1px solid #38513c;border-radius:16px;background:linear-gradient(135deg,#14271b,#0d1813);box-shadow:0 12px 50px #0006;flex-shrink:0}
.map-summary div{padding:16px 25px;border-right:1px solid #2c4533;min-width:124px}
.map-summary div:last-child{border:0}
.map-summary strong{display:block;color:var(--green);font:500 29px/1.1 ui-monospace,monospace;letter-spacing:-1px}
.map-summary span{font-size:11px;color:#a4b9a4;text-transform:uppercase;letter-spacing:1.2px}
.map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:13px}
.map-search{display:flex;gap:7px;flex:1;max-width:520px}
.map-search input{flex:1;background:#101b15}
.map-tools{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.map-tools button{padding:9px 13px;border-radius:8px;font-size:13px;background:#142019}
.map-tools .active{background:#274329;border-color:#83af53;color:var(--green)}
.history-panel{margin:0 0 16px;padding:22px;border:1px solid #557956;border-radius:18px;background:radial-gradient(circle at 100% 0,#284a2a70,transparent 42%),linear-gradient(130deg,#172d20,#0c1913);box-shadow:0 18px 50px #0007}
.history-panel.hidden{display:none}
.map-canvas-wrap>.history-panel{position:absolute;z-index:5;top:60px;left:16px;bottom:auto;width:min(410px,calc(100% - 32px));max-height:calc(100% - 76px);margin:0;overflow:visible;backdrop-filter:blur(14px)}
.map-canvas-wrap>.history-panel .history-controls{grid-template-columns:1fr;gap:12px}
.map-workspace.history-view{grid-template-columns:1fr;min-height:560px}
.map-workspace.history-view .map-canvas-wrap{min-height:560px}
.map-workspace.history-view .map-aside,.map-workspace.history-view .map-canvas-bottom{display:none}
.history-head,.history-actions,.history-track,.history-player-top,.history-transport{display:flex;align-items:center;gap:12px}
.history-head{justify-content:space-between;margin-bottom:20px}
.history-eyebrow{display:block;color:#adcd99;font:11px ui-monospace,monospace;letter-spacing:2px;margin-bottom:5px}
.history-head strong{display:block;color:#e8ffcd;font-size:25px;line-height:1.2}
.history-head #history-scope{display:block;color:#aac9a8;font-size:14px;margin-top:6px}
.history-head button{align-self:flex-start;padding:8px 12px;font-size:16px;border-radius:9px}
.history-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,340px);gap:18px;align-items:end;margin-bottom:18px}
.history-actions{flex-wrap:wrap;gap:8px}
.history-actions button{padding:10px 14px;font-size:13px;border-radius:9px}
.history-actions button.active{border-color:#baf27c;color:#baf27c;background:#263d28}
.history-focus-form{position:relative;z-index:12}
.history-focus-form label{display:block;color:#adcd99;font-size:12px;margin-bottom:6px}
.history-focus-form>div{display:flex;gap:7px}
.history-focus-form input{min-width:0;flex:1;background:#0b1b12;border-color:#48694a;font-size:14px}
.history-focus-form button{white-space:nowrap;border-color:#8aaf65;color:#e5f9cc;font-size:13px}
.history-player{padding:16px 18px;border:1px solid #385b3b;border-radius:13px;background:#08160fb8}
.history-player-top{justify-content:space-between;align-items:start;margin-bottom:15px}
.history-event{min-height:28px;color:#eaf7b5;font-size:17px;font-weight:600;line-height:1.4}
#history-step{flex:none;color:#a7c89c;font:12px ui-monospace,monospace;padding-top:5px}
.history-transport{margin-bottom:12px}
.history-transport button{padding:8px 13px;border-radius:8px}
#history-current{margin-left:auto;color:#c6ddb8;font:13px ui-monospace,monospace}
.history-track input{flex:1;min-width:60px;accent-color:#c8f480;cursor:pointer}
.history-track span,.history-meta{font:12px ui-monospace,monospace;color:#bdd4b6}
.history-meta{margin-top:10px;color:#a9c4a6}
.map-workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;min-height:660px;border:1px solid #36503b;border-radius:18px;overflow:hidden;background:#0c1510;box-shadow:0 30px 100px #0008}
.map-canvas-wrap{position:relative;min-width:0;min-height:660px;overflow:hidden;background:radial-gradient(circle at 50% 48%,#1c3828 0,#101e17 37%,#09130e 75%)}
.map-canvas-wrap:before{content:"";position:absolute;inset:0;background-image:radial-gradient(#4a72523d .8px,transparent .8px);background-size:24px 24px;pointer-events:none;opacity:.45}
.map-canvas-wrap:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 110px 40px #07110b91;pointer-events:none}
#network{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:none}
#network:active{cursor:grabbing}
.map-hover{position:absolute;z-index:3;display:none;padding:7px 10px;border:1px solid #719956;border-radius:7px;background:#15291ddd;color:#edffe2;font:12px ui-monospace,monospace;pointer-events:none;white-space:nowrap;box-shadow:0 8px 25px #0008}
.map-hover.show{display:block}
.map-canvas-top,.map-canvas-bottom{position:absolute;left:22px;right:22px;display:flex;justify-content:space-between;align-items:center;gap:12px;pointer-events:none;z-index:1;font:11px ui-monospace,monospace;letter-spacing:1px;color:#9fba9f}
.map-canvas-top{top:19px}
.map-canvas-bottom{bottom:18px;text-shadow:0 1px 4px #000}
.map-live{display:inline-flex;gap:8px;align-items:center;color:#c5fa82}
.map-live i{width:7px;height:7px;background:#baf36f;box-shadow:0 0 11px #baf36f;border-radius:50%;animation:pulse 2.5s infinite}
@keyframes pulse{50%{opacity:.45;box-shadow:0 0 20px #baf36f}}
.map-aside{padding:26px 23px;display:flex;flex-direction:column;border-left:1px solid #304938;background:linear-gradient(150deg,#14241a,#0d1812 70%)}
.map-aside-head{border-bottom:1px solid #304536;padding-bottom:18px}
.map-aside-head h2{font-size:23px;margin:8px 0 8px;overflow-wrap:anywhere}
.map-aside-head p{font-size:13px;line-height:1.5;color:#9bb09d;margin:0}
.node-detail{min-height:180px;padding:12px 0}
.node-data{display:grid;grid-template-columns:1fr auto;align-items:start;gap:8px 10px;padding:8px 0;border-bottom:1px solid #26382b;font-size:13px}
.node-data span{color:#91a993}
.node-data strong{font-weight:500;color:#eaf8e2;text-align:right;overflow-wrap:anywhere;max-width:172px}
.node-parent{color:var(--green)!important;cursor:pointer;text-decoration:underline;text-underline-offset:3px;border:0;background:none;padding:0;justify-self:end;text-align:right}
.node-actions{display:flex;gap:7px;flex-wrap:wrap;margin:16px 0}
.node-actions button,.node-actions .button{font-size:12px;padding:7px 10px}
.node-lineage{margin:3px 0 22px;padding:14px 0;border-top:1px solid #304536;border-bottom:1px solid #304536}
.node-lineage:empty{display:none}
.node-lineage h3{margin:0 0 10px;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#c9e7a0}
.lineage-list{display:flex;align-items:center;flex-wrap:wrap;gap:5px;max-height:160px;overflow:auto}
.lineage-list button{padding:4px 7px;border:1px solid #456947;border-radius:7px;background:#1b3422;color:#d2f5a9;font:11px ui-monospace,monospace}
.lineage-list button.current{background:#baf27c;color:#122012;border-color:#baf27c}
.lineage-arrow{display:inline-block;width:11px;height:1px;background:#83a989}
.lineage-caption{margin:9px 0 0;color:#8da88c;font-size:12px}
.map-legend{margin-top:auto;padding-top:20px;border-top:1px solid #304536}
.map-legend h3{font-size:13px;letter-spacing:1px;text-transform:uppercase;color:#bdcfb8;margin:0 0 12px}
.map-legend p{font-size:12px;color:#9ab09a;margin:8px 0;display:flex;align-items:center;gap:10px}
.legend-dot{display:inline-block;flex:none;width:10px;height:10px;border-radius:50%}
.legend-dot.root{background:#ffe978;box-shadow:0 0 12px #ffe978}
.legend-dot.carrier{background:#bbf078;box-shadow:0 0 9px #9cd85c}
.legend-dot.infected{background:#5ba79e;box-shadow:0 0 9px #63a49b}
.legend-dot.mutation{background:transparent;border:2px solid #ffb5e5;box-shadow:0 0 9px #f278d2}
.legend-line{width:18px;height:2px;background:#6e9877;display:inline-block}
.legend-line.mutation{background:transparent;border-top:2px dashed #e885c7;height:0}
.map-side-actions{display:grid;gap:8px;margin-top:24px}
.map-side-actions button,.map-side-actions .button{font-size:12px;padding:9px 10px}
.map-notice{min-height:23px;margin-top:12px;color:#b5d393;font-size:13px}
.map-more{margin:4px auto 0;display:flex}
.map-privacy{font-size:12px;color:#849c87;margin-top:18px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1180px){.map-intro{align-items:start;flex-direction:column}.map-summary{width:100%}.map-summary div{flex:1}.map-workspace{grid-template-columns:minmax(0,1fr) 270px}}
@media(max-width:800px){.map-main{padding:24px 16px 40px}.map-toolbar{align-items:stretch;flex-direction:column}.map-search{max-width:none}.map-tools{justify-content:flex-start}.map-workspace{grid-template-columns:1fr}.map-canvas-wrap{min-height:520px}.map-workspace.history-view .map-canvas-wrap{min-height:760px}.map-canvas-wrap>.history-panel{top:auto;left:14px;right:14px;bottom:14px;width:auto;max-height:calc(100% - 240px);overflow:auto}.map-aside{border-left:0;border-top:1px solid #304938}.node-detail{min-height:0}.map-legend{margin-top:10px}.map-page footer{margin:0 16px}.map-summary div{min-width:0;padding:12px 14px}.history-controls{grid-template-columns:1fr}}
@media(max-width:530px){.map-header{padding:16px}.map-header nav .secondary{display:none}.map-intro h1{font-size:48px}.map-summary strong{font-size:23px}.map-summary span{font-size:10px}.map-canvas-wrap{min-height:440px}.map-canvas-top,.map-canvas-bottom{left:14px;right:14px;font-size:10px}.map-canvas-bottom span:first-child{max-width:190px}.map-tools button{font-size:12px;padding:8px 10px}}
@media(max-width:530px){.history-track{gap:5px}.history-track span{font-size:10px}.history-panel{padding:16px}.history-head strong{font-size:21px}.history-player{padding:13px}.history-player-top{display:block}.history-event{font-size:15px}#history-step{display:block;margin-top:4px}.history-focus-form>div{flex-wrap:wrap}.history-focus-form button{flex:1}.history-focus-form input{min-width:160px}}
@media(prefers-reduced-motion:reduce){.map-live i{animation:none}}
