.world{padding-bottom:calc(76px + var(--safe-bottom))}.map-stage{height:min(57dvh,520px);min-height:385px;position:relative;overflow:hidden;background:radial-gradient(circle at 74% 18%,#173348 0,#0a1a24 30%,#07121a 70%);border-bottom:1px solid #1d3542}.map-svg{width:100%;height:100%;display:block;transform-origin:50% 50%;transition:transform .35s ease}.roads path{fill:none;stroke:#29424f;stroke-width:8;stroke-linecap:round}.roads.detail path{stroke:#1b3240;stroke-width:4}.map-labels text{fill:#607c8c;font-size:8px}.route{fill:none;stroke-linecap:round;stroke-linejoin:round}.route.past{stroke:#526e7c;stroke-width:6;opacity:.6;stroke-dasharray:1 0}.route.planned{stroke:url(#routeGlow);stroke-width:7;filter:url(#softGlow);stroke-dasharray:12 7;animation:routeFlow 4s linear infinite}.route.alternate{stroke:var(--yellow);stroke-width:5;opacity:0;stroke-dasharray:7 8;transition:opacity .35s}@keyframes routeFlow{to{stroke-dashoffset:-38}}.incident-zone{fill:#f05a6214;stroke:#f05a62;stroke-width:2;stroke-dasharray:5 6;opacity:0;transition:opacity .4s}.safe-zone{fill:#45d58a0e;stroke:#45d58a55;stroke-width:1;stroke-dasharray:4 7}.user-halo{fill:#64d1ff20;stroke:#64d1ff66;animation:userPulse 2.1s infinite}.user-core{fill:#f7fbff;stroke:#4ecbff;stroke-width:4}.heading-arrow{fill:#4ecbff}@keyframes userPulse{0%{r:14;opacity:.9}70%{r:25;opacity:.08}100%{r:14;opacity:.9}}.mission-objects text,.resource-layer text{font-size:8px;fill:#dcebf2}.resource-marker .ring{fill:#0c202a;stroke:#7ad8ff;stroke-width:2}.resource-marker.available .ring{stroke:#49d58a}.resource-marker.limited .ring{stroke:#f0ce56}.resource-marker.unavailable .ring{stroke:#f05a62}.resource-marker text.icon{font-size:12px;text-anchor:middle;dominant-baseline:central}.responder path,.tow path{stroke:#fff;fill:none}.moving-object{transition:transform 1s linear}.detail{transition:opacity .2s}.map-stage.zoom-1 .detail-l2{opacity:.2}.map-stage.zoom-2 .detail-l2{opacity:1}.map-stage.zoom-0 .detail-l2{opacity:0}.map-toolbar{position:absolute;right:10px;top:12px;display:flex;gap:5px}.map-toolbar button{border:1px solid #355263;background:#081923dc;color:#d8e7ee;border-radius:10px;padding:7px 10px;backdrop-filter:blur(12px);font-size:11px}.map-toolbar .tool-wide{padding-inline:12px}.signal-card{position:absolute;left:10px;top:12px;width:126px;border:1px solid #2f4d5d;background:#07151ee8;border-radius:16px;padding:8px;box-shadow:0 15px 40px #0005;backdrop-filter:blur(10px)}.signal-title{font-size:7px;letter-spacing:.12em;color:#8cb8c8;font-weight:800;margin:0 0 5px}.traffic-signal{display:grid;gap:3px}.signal-row{height:24px;display:grid;grid-template-columns:18px 1fr;align-items:center;gap:6px;border-radius:8px;padding:2px 5px;opacity:.36;transition:.25s}.signal-row i{width:13px;height:13px;border-radius:50%;background:#32434b;border:1px solid #61727a}.signal-row span{font-size:7.5px;font-weight:900;letter-spacing:.02em}.signal-row.normal i{background:var(--green)}.signal-row.attention i{background:var(--yellow)}.signal-row.notsafe i{background:var(--orange)}.signal-row.danger i{background:var(--red)}.signal-row.active{opacity:1;background:#102530}.signal-row.active i{box-shadow:0 0 0 4px #ffffff12,0 0 18px currentColor}.signal-row.attention.active{animation:breathe 2.3s infinite}.signal-row.notsafe.active{animation:breathe 1.8s infinite}.signal-row.danger.active{animation:breathe 1s infinite}@keyframes breathe{50%{transform:scale(1.02)}}.why-btn{margin-top:5px;width:100%;border:0;background:transparent;color:#8ec6dc;font-size:8px;text-align:right}.forecast-strip{position:absolute;left:10px;right:10px;bottom:10px;height:43px;border:1px solid #2d4c5d;background:#07151ee8;border-radius:14px;color:#d9e7ed;display:grid;grid-template-columns:repeat(4,1fr) 1.5fr;align-items:center;padding:4px 8px;backdrop-filter:blur(12px)}.forecast-strip span{display:flex;align-items:center;gap:4px;justify-content:center;font-size:6.5px}.forecast-strip b{font-size:7px}.f-dot{width:7px;height:7px;border-radius:50%}.f-normal{background:var(--green)}.f-attention{background:var(--yellow)}.forecast-more{color:#8fbed0;font-weight:700}
