:root{color-scheme:dark;font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;--bg-page: #0a1018;--bg-panel: #121b25;--bg-panel-strong: #182534;--bg-card: #1a2735;--bg-card-hover: #223344;--border: rgba(151, 169, 187, .16);--border-strong: rgba(151, 169, 187, .32);--text: #edf3f8;--text-secondary: #9dabb8;--text-muted: #687787;--accent: #1687f8;--success: #50ca7b;--warning: #ff9d3c;--danger: #ff6b6b;background:var(--bg-page);color:var(--text);font-synthesis:none}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button,input{font:inherit}button{color:inherit}.workspace{display:grid;grid-template-rows:60px minmax(0,1fr);width:100%;height:100%;min-width:1120px;background:var(--bg-page)}.topbar{position:relative;z-index:30;display:flex;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--border);background:#0e161ffa;box-shadow:0 2px 14px #0000003d}.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand>span{display:grid;place-items:center;width:36px;height:30px;border:1px solid rgba(22,135,248,.7);border-radius:3px;color:#61b2ff;font-weight:800;letter-spacing:1px}.brand strong{font-size:15px;letter-spacing:.5px}.case-selector select{width:clamp(170px,17vw,250px);min-height:30px;border:1px solid var(--border-strong);border-radius:3px;padding:4px 26px 4px 8px;background:#111c27;color:var(--text);font-size:11px}.solution-status{display:inline-flex;align-items:center;gap:7px;margin-left:2px;color:var(--text-secondary);font-size:11px;white-space:nowrap}.solution-status i{width:7px;height:7px;border-radius:50%;background:var(--text-muted)}.solution-status.valid{color:var(--success)}.solution-status.valid i{background:var(--success);box-shadow:0 0 8px #50ca7b8c}.solution-status.warning{color:var(--warning)}.solution-status.warning i{background:var(--warning);box-shadow:0 0 8px #ff9d3c6b}.solution-status.error{color:var(--danger)}.solution-status.error i{background:var(--danger)}.debug-badge{padding:4px 7px;border:1px solid rgba(22,135,248,.4);color:#6db8ff;font-size:10px}.top-actions{display:flex;align-items:center;gap:4px;margin-left:auto}.height-controls{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:3px;background:#070d1485}.top-actions .height-controls button{min-width:31px;min-height:26px;padding:3px 6px;border-color:transparent}.top-actions button,.error-state button{min-height:32px;border:1px solid var(--border-strong);border-radius:3px;padding:6px 10px;background:#172331;color:var(--text-secondary);font-size:11px;cursor:pointer}.top-actions button:hover,.top-actions button.active,.error-state button:hover{border-color:#1687f8c7;background:#1b2e42;color:var(--text)}.top-actions button:disabled{cursor:not-allowed;opacity:.42}.workspace-body{display:flex;min-width:0;min-height:0}.sidebar-shell{position:relative;z-index:20;flex:0 0 auto;height:100%;border-right:1px solid var(--border);background:#101923f7;box-shadow:8px 0 22px #0003;transition:width .16s ease}.sidebar-shell>aside[aria-label=图层]{height:100%;overflow:hidden;background:transparent}.sidebar-shell>aside[aria-label=图层][data-collapsed=true]{display:flex;justify-content:center;padding-top:12px}.sidebar-shell>aside[aria-label=图层][data-collapsed=true] button{width:32px;height:32px;border:1px solid var(--border);border-radius:4px;background:#172433;color:var(--text-secondary);cursor:pointer}.sidebar-shell>aside[aria-label=图层]>header{display:flex;align-items:center;justify-content:space-between;flex:0 0 48px;padding:0 12px 0 16px;border-bottom:1px solid var(--border)}.sidebar-shell>aside[aria-label=图层]>header h2{margin:0;font-size:14px;letter-spacing:.8px}.sidebar-shell>aside[aria-label=图层]>header>div{display:flex;align-items:center;gap:2px}.sidebar-shell>aside[aria-label=图层]>header button{width:28px;height:28px;border:0;border-radius:3px;background:transparent;color:var(--text-muted);cursor:pointer}.sidebar-shell>aside[aria-label=图层]>header button:hover{background:var(--bg-card);color:var(--text)}.sidebar-shell ul{margin:0;padding:0;list-style:none}.sidebar-shell>aside[aria-label=图层]>ul{flex:1 1 auto;min-height:0;padding:10px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#3b4b5a transparent}.sidebar-shell>aside[aria-label=图层]>ul>li{margin-bottom:6px;border:1px solid transparent;border-radius:4px;background:#1d2a38d1;overflow:hidden}.sidebar-shell>aside[aria-label=图层]>ul>li:has(button[aria-expanded=true]){border-color:#1687f885;background:#1d3044}.sidebar-shell>aside[aria-label=图层]>ul>li>div:first-child{display:grid;grid-template-columns:16px minmax(0,1fr) 34px;align-items:center;min-height:43px}.layer-legend-swatch{width:4px;height:25px;margin-left:7px;border-radius:2px;box-shadow:0 0 5px #ffffff1f}.sidebar-shell>aside[aria-label=图层]>ul>li>div:first-child button{height:100%;border:0;background:transparent;color:var(--text-secondary);cursor:pointer}.sidebar-shell>aside[aria-label=图层]>ul>li>div:first-child button:first-child{padding:0 10px;text-align:left;font-size:12px}.sidebar-shell>aside[aria-label=图层]>ul>li>div:first-child button:last-child{color:#b8c4ce;font-size:15px}.sidebar-shell>aside[aria-label=图层]>ul>li>div:first-child button[aria-pressed=false]{color:#586777}.sidebar-shell>aside[aria-label=图层]>ul>li>section{padding:0 12px 12px;border-top:1px solid rgba(151,169,187,.1)}.sidebar-shell fieldset{margin:10px 0 0;padding:0;border:0}.sidebar-shell legend{width:100%;margin-bottom:8px;color:var(--text-muted);font-size:10px}.sidebar-shell label{display:grid;grid-template-columns:minmax(0,1fr) 112px;align-items:center;gap:8px;min-height:30px;color:var(--text-secondary);font-size:10px}.sidebar-shell input[type=color]{width:100%;height:23px;padding:0;border:1px solid var(--border);border-radius:3px;background:#111b25}.sidebar-shell input[type=range]{width:112px;accent-color:var(--accent)}.layer-range-input{display:grid;grid-template-columns:minmax(0,1fr) 36px;align-items:center;gap:5px;width:112px}.sidebar-shell .layer-range-input input[type=range]{width:100%;min-width:0}.layer-range-input output{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.sidebar-shell input[type=number]{width:112px;border:1px solid var(--border);border-radius:3px;padding:4px 6px;background:#111b25;color:var(--text)}.sidebar-shell label:has(input[type=checkbox]){grid-template-columns:18px minmax(0,1fr)}.sidebar-shell input[type=checkbox]{accent-color:var(--accent)}.sidebar-shell>aside[aria-label=图层]>ul>li>section>button{width:100%;margin-top:10px;border:1px solid var(--border);border-radius:3px;padding:6px;background:#172433;color:var(--text-secondary);font-size:10px;cursor:pointer}.layer-advanced>button{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:8px;border:0;border-top:1px solid rgba(151,169,187,.12);padding:8px 0 2px;background:transparent;color:var(--text-muted);font-size:10px;cursor:pointer}.sidebar-shell section[aria-label=无人机任务]{flex:0 0 auto;max-height:43%;margin-top:auto!important;padding:10px;border-top:1px solid var(--border);background:#09101861;overflow-y:auto;scrollbar-width:thin}.sidebar-shell section[aria-label=无人机任务]:before{content:"无人机与架次";display:block;margin:0 4px 8px;color:var(--text-secondary);font-size:11px;font-weight:650}.sidebar-shell section[aria-label=无人机任务]>ul>li+li{margin-top:6px}.sidebar-shell section[aria-label=无人机任务] button{display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:7px;width:100%;min-height:35px;border:1px solid transparent;border-radius:3px;padding:0 9px;background:var(--bg-card);color:var(--text-secondary);font-size:10px;cursor:pointer}.sidebar-shell section[aria-label=无人机任务] button[aria-pressed=true],.sidebar-shell section[aria-label=无人机任务] button:hover{border-color:var(--border-strong);background:var(--bg-card-hover)}.sidebar-shell section[aria-label=无人机任务] button span:nth-of-type(1){color:var(--text);text-align:left}.sidebar-shell section[aria-label=无人机任务] button span:nth-of-type(2){color:var(--success)}.sidebar-shell section[aria-label=无人机任务] ul ul{margin:3px 0 0 18px;border-left:1px solid var(--border);padding-left:5px}.sidebar-shell section[aria-label=无人机任务] ul ul button{grid-template-columns:minmax(0,1fr) auto;min-height:27px;padding:0 7px;background:#17233194;font-size:9px}.sidebar-state{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background:#0d151e61;cursor:wait}.sidebar-shell.error .sidebar-state{cursor:not-allowed}.map-panel{position:relative;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden;background:#05090e}.wrj-map-container{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.map-measuring{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a1119}.state-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:14;display:flex;align-items:center;justify-content:center;gap:12px;background:#050a0fc2;color:var(--text-secondary)}.spinner{width:18px;height:18px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-state{flex-direction:column;text-align:center}.error-state strong{color:var(--danger);font-size:16px}.error-state p{max-width:560px;margin:0;color:var(--text-secondary);font-size:12px}.map-tag{position:absolute;top:12px;left:12px;z-index:8;display:flex;flex-direction:column;gap:2px;padding:7px 10px;max-width:min(620px,calc(100% - 24px));border:1px solid rgba(151,169,187,.24);border-radius:3px;background:#0a1119d4;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none}.map-tag b{font-size:10px}.map-tag span{color:var(--text-secondary);font-size:9px}.mission-timeline{bottom:34px!important;box-shadow:0 8px 24px #00000057;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.mission-timeline button{border:1px solid var(--border-strong);border-radius:3px;padding:4px 7px;background:#172331;color:var(--text-secondary);cursor:pointer}.mission-timeline button[aria-pressed=true]{border-color:#1687f8c7;color:var(--text)}.mission-timeline input[type=range]{accent-color:var(--accent)}.mission-timeline output,.mission-timeline span{font-size:10px;white-space:nowrap}.map-panel>aside[role=dialog]{position:absolute;z-index:18;top:12px;right:12px;bottom:94px;width:320px;overflow-y:auto;border:1px solid rgba(151,169,187,.25);border-radius:5px;background:#101923f5;box-shadow:0 18px 45px #00000061;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.map-panel>aside[role=dialog]>header{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 14px;border-bottom:1px solid var(--border);background:#121b25fa}.map-panel>aside[role=dialog] h2{margin:0;font-size:14px}.map-panel>aside[role=dialog] header button{border:0;background:transparent;color:var(--text-secondary);font-size:22px;cursor:pointer}.map-panel>aside[role=dialog] dl{margin:0;padding:8px 14px}.map-panel>aside[role=dialog] dl div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid rgba(151,169,187,.1)}.map-panel>aside[role=dialog] dt{color:var(--text-secondary);font-size:10px}.map-panel>aside[role=dialog] dd{margin:0;color:var(--text);font-size:11px}.map-panel>aside[role=dialog] section{padding:5px 14px 12px}.map-panel>aside[role=dialog] section p{margin:8px 0;color:var(--text);font-size:10px;line-height:1.55}.map-panel>aside[role=dialog] section strong{display:block;margin-bottom:2px;color:var(--text-secondary)}.map-panel>aside[role=dialog] footer{margin-top:auto;padding:12px 14px;border-top:1px solid var(--border);background:#ff9d3c09}.map-panel>aside[role=dialog] footer p{margin:0 0 7px;color:var(--warning);font-size:9px;line-height:1.5}.map-panel>aside[role=dialog] footer p:last-child{margin:0;color:var(--text-muted)}.import-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:24px;background:#02070cb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.import-case-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(620px,100%);max-height:min(760px,calc(100vh - 48px));overflow:hidden;border:1px solid var(--border-strong);border-radius:6px;background:#111b26;box-shadow:0 24px 80px #0000008c}.import-case-dialog>header,.import-case-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:#172331}.import-case-dialog>footer{justify-content:flex-end;border-top:1px solid var(--border);border-bottom:0}.import-case-dialog h2{margin:2px 0 0;font-size:17px}.import-case-dialog small{color:var(--text-muted);font-size:9px;letter-spacing:1px}.import-case-dialog button,.import-drop-zone label{border:1px solid var(--border-strong);border-radius:3px;padding:7px 11px;background:#1a2a3a;color:var(--text-secondary);font-size:11px;cursor:pointer}.import-case-dialog button.primary,.import-drop-zone label{border-color:#1687f89e;background:#126fc9;color:#fff}.import-case-dialog button:disabled{cursor:not-allowed;opacity:.46}.import-dialog-content{padding:16px;overflow-y:auto}.import-drop-zone{display:grid;justify-items:center;gap:8px;border:1px dashed var(--border-strong);border-radius:5px;padding:26px 16px;background:#1687f809;color:var(--text-secondary);text-align:center}.import-drop-zone.dragging{border-color:var(--accent);background:#1687f81a}.import-drop-zone input{position:absolute;width:1px;height:1px;opacity:0}.import-progress,.import-preview,.import-error,.import-fallback-warning{margin-top:12px}.import-progress>div,.import-preview>header{display:flex;justify-content:space-between;gap:12px}.import-progress progress{width:100%;margin-top:7px;accent-color:var(--accent)}.import-preview{border:1px solid var(--border);border-radius:4px;padding:12px;background:#182534b8}.import-preview dl{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:12px 0}.import-preview dl div{padding:8px;background:#070d1480}.import-preview dt{color:var(--text-muted);font-size:9px}.import-preview dd{margin:3px 0 0;font-size:11px}.import-coordinate-notice,.import-fallback-warning{color:var(--text-secondary);font-size:10px;line-height:1.5}.import-error{color:var(--danger);font-size:11px}.basemap-setup-page{display:grid;place-items:center;width:100%;height:100%;padding:24px;background:radial-gradient(circle at 50% 35%,#172b3e,var(--bg-page) 58%)}.basemap-setup-card{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(560px,100%);padding:34px;border:1px solid var(--border-strong);background:#121b25f5;box-shadow:0 24px 70px #00000047}.basemap-setup-card h1{align-self:stretch;margin:0;font-size:27px}.basemap-setup-card p{align-self:stretch;margin:0;color:var(--text-secondary);font-size:13px;line-height:1.7}.basemap-setup-card button{align-self:flex-start;border:1px solid var(--border-strong);padding:8px 10px;background:var(--bg-panel-strong);color:var(--text);cursor:pointer}@media (max-width: 1500px),(max-height: 820px){.topbar{gap:6px;padding:0 8px}.brand strong{font-size:13px}.brand>span{width:31px;height:27px;font-size:11px}.case-selector select{width:168px}.top-actions button{min-height:28px;padding:4px 6px;font-size:10px}.top-actions .height-controls button{min-width:27px;padding:3px 4px}.sidebar-shell>aside[aria-label=图层]>header{flex-basis:43px}.sidebar-shell>aside[aria-label=图层]>ul{padding:7px}.sidebar-shell>aside[aria-label=图层]>ul>li{margin-bottom:4px}.sidebar-shell>aside[aria-label=图层]>ul>li>div:first-child{min-height:37px}.sidebar-shell label{min-height:26px}.sidebar-shell section[aria-label=无人机任务]{padding:7px}.sidebar-shell section[aria-label=无人机任务]>ul>li>button{min-height:31px}.mission-timeline{right:10px!important;bottom:30px!important;left:10px!important;gap:6px!important;padding:6px 8px!important}.map-panel>aside[role=dialog]{width:300px;top:8px;right:8px;bottom:84px}}
