:root{--bg: #f5f7fa;--panel: #ffffff;--border: #dcdfe6;--accent: #409eff;--green: #67c23a;--red: #f56c6c;--t1: #303133;--t2: #606266;--t3: #909399;--blur: none;--r: 8px;--shadow: 0 2px 12px rgba(0, 0, 0, .08)}html,body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}#map,.leaflet-container{background:#edf2f7}.topbar{height:60px;padding:0 22px;gap:14px;background:#fff;border-bottom:1px solid #e4e7ed;box-shadow:0 2px 8px #1f2d3d0a}.topbar-logo{font-size:15px;color:var(--t1)}.topbar-brand-mark{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:6px;background:var(--accent);color:#fff;font-size:20px;line-height:1}.map-tabs{align-self:stretch;align-items:center;gap:4px}.map-tab{padding:9px 14px;border-radius:4px;font-size:13px;font-weight:500;color:var(--t2);transition:background .15s,color .15s}.map-tab:hover{color:var(--accent);background:#ecf5ff}.map-tab.active{color:var(--accent);background:#ecf5ff;box-shadow:none}.topbar-sep{background:#e4e7ed}.topbar-pill,.demo-leave{min-height:34px;padding:7px 12px;border:1px solid var(--border);border-radius:4px;background:#fff;box-shadow:none;color:var(--t2);font-size:12px;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.topbar-pill:hover,.demo-leave:hover{color:var(--accent);border-color:#c6e2ff;background:#ecf5ff;transform:none;box-shadow:none}.topbar-pill.active{color:var(--accent);border-color:#b3d8ff;background:#ecf5ff;box-shadow:none}.demo-leave[hidden]{display:none}.conn-dot{width:7px;height:7px}.conn-dot.ok{box-shadow:none}.sidebar{top:78px;left:20px;width:298px;max-height:calc(100vh - 98px);padding:0;border:1px solid #e4e7ed;border-radius:8px;background:#fff;box-shadow:var(--shadow);backdrop-filter:none}.sidebar.collapsed{transform:translate(calc(-100% - 20px))}.sidebar-toggle{top:88px;left:330px;width:30px;height:30px;border-radius:4px;background:#fff;border-color:#e4e7ed;box-shadow:var(--shadow);color:#606266;font-weight:400}.sidebar-toggle:hover{color:var(--accent);background:#ecf5ff;transform:none}.sidebar-toggle.collapsed{left:20px;transform:rotate(180deg)}.panel{padding:20px}.panel+.panel{padding-top:20px;margin-top:0;border-top:1px solid #ebeef5}.panel-title{margin-bottom:16px;font-size:14px;font-weight:600;color:var(--t1)}.panel-title:before{width:3px;height:15px;border-radius:2px;background:var(--accent)}.stats-grid{gap:8px}.stat-row{min-height:62px;padding:10px;border:1px solid #ebeef5;border-radius:6px;background:#fafbfc;gap:8px}.stat-row:hover{border-color:#c6e2ff;background:#f5faff;transform:none;box-shadow:none}.stat-val{font-size:18px;font-weight:600}.stat-lbl{font-size:11px;font-weight:400}.stat-dot,.ldot{width:7px;height:7px;box-shadow:none!important}.layer-grid{gap:8px}.player-info-title{margin-top:18px}.player-info-option{display:flex;align-items:center;gap:8px;min-height:36px;padding:4px 8px;border:1px solid #e4e7ed;border-radius:4px;cursor:pointer;color:var(--t1);font-size:13px}.player-info-option:hover{background:#ecf5ff;border-color:#b3d8ff}.player-info-option input{width:16px;height:16px;margin:0;accent-color:#409eff}.layer-row{min-height:44px;padding:8px 10px;border:1px solid #ebeef5;border-radius:6px;background:#fff}.layer-row:hover{border-color:#c6e2ff;background:#f5faff;box-shadow:none}.layer-lbl{gap:7px;font-size:12px;font-weight:500}.ltog{width:36px;height:20px;border-radius:12px;background:#dcdfe6;box-shadow:none}.ltog:after{top:2px;left:2px;width:16px;height:16px;box-shadow:0 1px 2px #0000001f}.ltog.on{background:var(--accent)}.ltog.on:after{transform:translate(16px)}.scale-row{margin-top:11px;padding:5px 0;gap:10px;border:0;border-radius:0;background:transparent}.cfg-lbl{color:var(--t2);font-size:12px;font-weight:500}.scale-slider{height:5px;background:#e4e7ed;border-radius:4px}.scale-slider::-webkit-slider-thumb{width:15px;height:15px;border:2px solid var(--accent);background:#fff;box-shadow:0 1px 3px #0000001f}.scale-val,.scale-val-input{color:var(--t2);font-size:12px;font-weight:400;background:#fff;border:1px solid #dcdfe6!important;border-radius:4px}.scale-val-input{width:50px!important;min-width:50px;max-width:50px;padding:4px!important}.scale-val-input:focus{border-color:var(--accent)!important;color:var(--t1);background:#fff;box-shadow:0 0 0 2px #d9ecff}.player-counter.show{position:static;transform:none;border:1px solid #e4e7ed;border-radius:4px;padding:4px 8px;background:#fff;box-shadow:none}.pc-item{padding:0 8px;gap:5px}.pc-val{font-size:14px;font-weight:600}.pc-lbl{font-size:11px;font-weight:400}.pc-sep{height:20px;background:#e4e7ed}.spectate-bar,.team-float,.float-stats{background:#fff;border:1px solid #e4e7ed;border-radius:8px;box-shadow:var(--shadow);backdrop-filter:none}.spectate-bar{padding:10px 12px}.spectate-btn{border-radius:4px;background:var(--accent)}.spectate-btn:hover{background:#66b1ff;box-shadow:none}#toast{background:#f0f9eb;color:#67c23a;border:1px solid #e1f3d8;border-radius:4px;box-shadow:var(--shadow);backdrop-filter:none}.box-cfg-btn:hover,.box-chk-row:hover{color:var(--accent);background:#ecf5ff}.box-cfg-pop{background:#fff;border-color:#e4e7ed;box-shadow:var(--shadow);backdrop-filter:none}.demo-entry{width:100%;height:40px;margin-top:8px;border:1px solid #b3d8ff;border-radius:4px;color:var(--accent);background:#ecf5ff;font-family:inherit;font-size:14px;font-weight:500;cursor:pointer}.landing-btn{margin-top:22px}#landingError:empty{display:none}#landingError[style*="opacity: 0"],#landingError[style*="opacity:0"]{display:none}.demo-entry:hover{background:#d9ecff;border-color:#a0cfff}.demo-entry[hidden],.demo-map[hidden]{display:none}.demo-map{position:fixed;inset:60px 0 0;z-index:1;overflow:hidden;pointer-events:none;background:transparent}.demo-map-marker .demo-marker{position:relative;transform:translate(-50%,-50%);display:grid;place-items:center;width:calc(23px * var(--marker-scale, 1));height:calc(23px * var(--marker-scale, 1));border:2px solid #fff;border-radius:50%;color:#fff;font-size:calc(11px * var(--map-font-scale, 1));font-weight:700;box-shadow:0 2px 8px #00000059;white-space:nowrap}.marker-self{background:#409eff}.marker-player-a,.marker-player-b{background:#f56c6c}.marker-ai{background:#909399}.marker-item{background:#e6a23c}.marker-box{background:#c8a060}.map-region-name span{font-size:calc(11px * var(--map-font-scale, 1))!important}.demo-map-note{position:absolute;right:24px;bottom:24px;display:flex;flex-direction:column;gap:4px;padding:12px 15px;background:#fffffff0;border:1px solid #e4e7ed;border-radius:6px;box-shadow:var(--shadow);color:var(--t2);font-size:12px}.demo-map-note strong{color:var(--t1);font-size:14px}@media(max-width:700px){.topbar{height:calc(96px + env(safe-area-inset-top));padding:calc(6px + env(safe-area-inset-top)) 10px 6px;flex-wrap:wrap;align-content:center;gap:4px 6px}.topbar-logo{display:flex;flex:1 1 auto;min-width:0;font-size:13px}.topbar-sep{display:none}.map-tabs{order:2;flex:0 0 100%;min-width:0;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch}.map-tab{padding:8px 10px;font-size:12px}.topbar-pill,.demo-leave{min-height:36px;padding:6px 9px}#btnFullscreen{margin-left:0!important}.player-counter.show{display:none}.sidebar{left:10px;top:calc(104px + env(safe-area-inset-top));width:min(320px,calc(100vw - 56px));max-height:calc(100dvh - 116px - env(safe-area-inset-top))}.sidebar-toggle{left:min(340px,calc(100vw - 46px));top:calc(108px + env(safe-area-inset-top));width:40px;height:40px}.sidebar-toggle.collapsed{left:10px}.panel{padding:16px}.spectate-bar.show{bottom:max(12px,env(safe-area-inset-bottom));width:calc(100vw - 24px);max-width:440px;padding:8px;gap:8px}.spectate-label{display:none}.spectate-bar select{flex:1 1 auto;min-width:0;max-width:none;height:38px}.spectate-btn{min-height:38px;padding:6px 10px}.demo-map{inset:calc(96px + env(safe-area-inset-top)) 0 0}.demo-map-note{right:10px;bottom:max(70px,calc(env(safe-area-inset-bottom) + 58px));max-width:calc(100vw - 20px)}#toast{max-width:calc(100vw - 24px);text-align:center}}@media(max-height:500px)and (orientation:landscape){.sidebar{max-height:calc(100dvh - 76px)}.landing-overlay{overflow-y:auto}}@media(max-width:380px){.topbar-logo{display:none}.topbar-pill,.demo-leave{font-size:11px;padding-inline:8px}.map-tab{padding-inline:8px}}
