.map-viewport{position:relative;min-width:0;min-height:0;overflow:hidden;background:#071018;touch-action:none;cursor:grab}.map-viewport.dragging{cursor:grabbing}.map-viewport.calibrating{cursor:crosshair}.camera-layer{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.world-map{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none;pointer-events:none}.marker-layer,.calibration-layer{position:absolute;inset:0;pointer-events:none}.player-marker{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;filter:drop-shadow(0 5px 8px rgba(0,0,0,.8))}.player-marker.selected{transform:translate(-50%,-50%) scale(1.16);filter:drop-shadow(0 0 14px rgba(103,217,255,.95))}.player-marker-name{max-width:180px;margin-bottom:5px;padding:4px 8px;border:1px solid var(--line2);border-radius:8px;background:rgba(3,10,15,.9);font-size:.76rem;font-weight:800;white-space:nowrap}.player-marker-dot{width:15px;height:15px;border-radius:50%;background:var(--cyan);border:3px solid white;box-shadow:0 0 0 5px rgba(103,217,255,.18)}.calibration-point{position:absolute;width:24px;height:24px;transform:translate(-50%,-50%);border:2px solid var(--amber);border-radius:50%;box-shadow:0 0 0 6px rgba(255,212,121,.14)}.map-toolbar{position:absolute;right:14px;bottom:14px;z-index:8;display:flex;gap:7px}.map-toolbar button{min-width:38px;height:38px;padding:0 10px;border:1px solid var(--line);border-radius:9px;background:rgba(5,14,21,.92);font-weight:800;cursor:pointer}.empty-state{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:grid;justify-items:center;gap:4px;padding:12px 18px;border:1px solid var(--line);border-radius:11px;background:rgba(5,14,21,.88);color:var(--muted);font-size:.8rem}.connection-banner,.calibration-hint{position:absolute;left:50%;top:18px;transform:translateX(-50%);z-index:9;display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid rgba(255,212,121,.3);border-radius:10px;background:rgba(28,22,10,.94);color:var(--amber)}.calibration-hint button{margin-left:auto;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.05);padding:7px 10px;cursor:pointer}