:root{--bg:#07101c;--panel:#0e1a29;--panel2:#122236;--line:#203550;--text:#f4f8fc;--muted:#8fa4bb;--blue:#49b3ff;--green:#44d29b;--amber:#ffbd59;--danger:#ff7184;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 15% 0,#102946 0,transparent 36%),var(--bg)}button,input,textarea{font:inherit}.login-view{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(430px,100%);padding:38px;border:1px solid var(--line);border-radius:24px;background:rgba(14,26,41,.94);box-shadow:0 24px 80px #0008}.login-brand{width:230px;max-width:76%;filter:drop-shadow(0 10px 24px #0008)}.login-brand img,.brand-logo img{display:block;width:100%;height:auto}.brand-logo{width:132px;filter:drop-shadow(0 6px 16px #0008)}.eyebrow{margin:22px 0 7px;color:var(--blue);font-size:12px;letter-spacing:.14em;font-weight:800}.login-card h1,.hero h1{margin:0 0 8px;font-size:clamp(28px,5vw,42px)}.muted{color:var(--muted)}label{display:grid;gap:8px;margin-top:18px;color:#c6d4e2;font-size:14px;font-weight:650}input{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:12px;background:#081522;color:var(--text);outline:none}input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #49b3ff22}button{border:0;border-radius:12px;padding:13px 18px;background:var(--blue);color:#03111e;font-weight:800;cursor:pointer}.login-card button{width:100%;margin-top:24px}.error{min-height:20px;color:var(--danger);font-size:14px}.topbar{height:70px;padding:0 max(22px,calc((100vw - 1280px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#08131fdd;backdrop-filter:blur(18px);position:sticky;top:0;z-index:5}.brand,.top-actions{display:flex;align-items:center;gap:12px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:2px;letter-spacing:.08em;text-transform:uppercase}.pill{padding:7px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px}.pill.online{color:var(--green);border-color:#44d29b55;background:#44d29b12}.pill.offline{color:var(--danger);border-color:#ff718455}.ghost,.icon-button{background:transparent;color:var(--muted);border:1px solid var(--line)}main{width:min(1280px,calc(100% - 40px));margin:0 auto 50px}.hero{padding:45px 0 28px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.hero .eyebrow{margin-top:0}.hero p{margin-bottom:0}.secondary{background:#142b42;color:#cfe8fb;border:1px solid #285173}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stats article{padding:20px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#102033,#0c1826)}.stats span{display:block;color:var(--muted);font-size:13px}.stats strong{display:block;font-size:28px;margin-top:8px}.ok-text{color:var(--green)}.grid{display:grid;grid-template-columns:minmax(330px,.85fr) minmax(460px,1.4fr);gap:16px}.panel{min-height:440px;padding:22px;border:1px solid var(--line);border-radius:18px;background:rgba(14,26,41,.94)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head .eyebrow{margin:0 0 5px}.panel h2{margin:0;font-size:21px}.icon-button{width:39px;height:39px;padding:0;font-size:22px}.empty{min-height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted);gap:7px}.empty strong{color:#dce8f3}.device-list{display:grid;gap:9px;margin-top:20px}.device{width:100%;padding:15px;text-align:left;color:var(--text);background:#0a1724;border:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:5px}.device:hover,.device.active{border-color:#3986bc;background:#10243a}.device small{color:var(--muted)}.status-dot{width:9px;height:9px;border-radius:50%;background:var(--danger);display:inline-block;margin-right:7px}.status-dot.online{background:var(--green);box-shadow:0 0 12px #44d29b99}.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:24px 0}.metrics div{padding:15px;border-radius:12px;background:#0a1724;border:1px solid #182d44}.metrics dt{color:var(--muted);font-size:12px}.metrics dd{margin:7px 0 0;font-weight:750}.chart-head{display:flex;justify-content:space-between;align-items:center;margin:24px 0 8px}.chart-head span{color:var(--muted);font-size:12px}#battery-chart{width:100%;height:auto;border-radius:12px;background:#091521;border:1px solid #182d44}.chart-grid{stroke:#1b3047;stroke-width:1}.chart-line{fill:none;stroke:var(--blue);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.chart-fill{fill:url(#chartGradient);opacity:.28}.toast{position:fixed;right:22px;bottom:22px;padding:14px 18px;border-radius:12px;background:#163450;border:1px solid #3475a7;box-shadow:0 15px 40px #0007}.toast.error-toast{background:#411b28;border-color:#8f3046}.app-view[hidden],.login-view[hidden],[hidden]{display:none!important}
@media(max-width:850px){.stats{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.hero{align-items:flex-start;flex-direction:column}.hero button{width:100%}}@media(max-width:520px){.dialog-actions{flex-direction:column-reverse}.dialog-actions button{width:100%}main{width:min(100% - 24px,1280px)}.topbar{padding:0 12px}.top-actions .pill{display:none}.stats{grid-template-columns:1fr 1fr;gap:8px}.stats article{padding:15px}.stats strong{font-size:22px}.panel{padding:16px}.metrics{grid-template-columns:1fr}.login-card{padding:26px}}

textarea{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:12px;background:#081522;color:var(--text);outline:none;resize:vertical}textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #49b3ff22}select{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:12px;background:#081522;color:var(--text);outline:none;font:inherit}select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #49b3ff22}.nav-button{padding:9px 12px}.nav-button.active{color:#fff;border-color:#3986bc;background:#153450}.admin-grid{display:grid;grid-template-columns:minmax(300px,.7fr) minmax(500px,1.3fr);gap:16px;margin-bottom:16px}.compact-panel{min-height:0}.stack-form{display:grid;gap:2px;margin-top:8px}.stack-form button{margin-top:18px}.form-help{margin:8px 0 0;color:var(--muted);font-size:12px}.admin-user-list,.audit-list,.session-list{display:grid;gap:10px;margin-top:18px}.admin-user{padding:15px;border:1px solid #1d344d;border-radius:13px;background:#0a1724;display:grid;grid-template-columns:1fr auto;gap:12px}.admin-user h3{margin:0 0 4px;font-size:16px}.admin-user p{margin:0;color:var(--muted);font-size:12px}.user-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:7px}.small-button{padding:8px 10px;font-size:12px}.danger-button{color:#ffd4db;border-color:#7d3040;background:#3b1d2a}.role-badge{display:inline-block;margin-top:8px;padding:4px 8px;border:1px solid var(--line);border-radius:999px;color:#bcd0e3;font-size:11px}.audit-event,.session-item{padding:12px 14px;border:1px solid #1d344d;border-radius:11px;background:#0a1724;display:flex;justify-content:space-between;gap:14px}.audit-event small,.session-item small{color:var(--muted)}.portal-dialog{width:min(520px,calc(100% - 32px));padding:28px;border:1px solid #2b4b6b;border-radius:18px;background:#0e1a29;color:var(--text);box-shadow:0 30px 100px #000b}.portal-dialog::backdrop{background:#020810d9;backdrop-filter:blur(4px)}.portal-dialog h2{margin-top:0}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.dialog-actions button{min-width:130px}.portal-dialog button:disabled{opacity:.55;cursor:wait}.temporary-password{display:block;margin-top:18px;padding:16px;border:1px solid #356184;border-radius:10px;background:#07111d;color:#a9ddff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}.audit-panel{margin-bottom:50px}
@media(max-width:1000px){.top-actions .nav-button{padding:8px}}
@media(max-width:850px){.admin-grid{grid-template-columns:1fr}.hero>button{width:100%}.topbar{height:auto;min-height:70px;padding-top:9px;padding-bottom:9px}.top-actions{flex-wrap:wrap;justify-content:flex-end}.top-actions .pill{display:none}}

.operations-layout{display:grid;grid-template-columns:minmax(300px,.65fr) minmax(520px,1.35fr);gap:16px;margin-bottom:16px}.operation-list{display:grid;gap:10px;margin-top:18px}.operation-card{width:100%;padding:15px;text-align:left;color:var(--text);background:#0a1724;border:1px solid #1d344d;display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center}.operation-card:hover,.operation-card.active{border-color:#3986bc;background:#10243a}.operation-card strong,.operation-card small{display:block}.operation-card small{margin-top:5px;color:var(--muted)}.operation-card-side{text-align:right;min-width:130px}.operation-card-side .pill{display:inline-block}.operation-detail-panel{min-height:0;margin-bottom:50px}.operation-actions{display:flex;align-items:center;gap:9px}.operation-metrics{grid-template-columns:repeat(4,1fr)}.track-head{display:flex;align-items:center;justify-content:space-between;margin:24px 0 10px}.map-link{color:#9cd7ff;text-decoration:none;font-size:13px}.map-link:hover{text-decoration:underline}#operation-track{width:100%;height:auto;border:1px solid #182d44;border-radius:13px;background:#091521}.track-background{fill:#091521}.track-line-shadow{fill:none;stroke:#07101c;stroke-width:10;stroke-linejoin:round;stroke-linecap:round}.track-line{fill:none;stroke:url(#trackGradient);stroke-width:5;stroke-linejoin:round;stroke-linecap:round}.track-start{fill:var(--green);stroke:#dffff2;stroke-width:2}.track-end{fill:var(--blue);stroke:#e5f6ff;stroke-width:2}.track-label{fill:#dce8f3;font-size:13px;font-weight:700}.operation-events{display:grid;gap:9px;margin-top:22px}.operation-events h3{margin:0 0 2px;font-size:15px}.compact-empty{min-height:220px}
@media(max-width:1000px){.operations-layout{grid-template-columns:1fr}.operation-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.operation-card{grid-template-columns:1fr}.operation-card-side{text-align:left}.operation-metrics{grid-template-columns:1fr 1fr}.operation-actions{align-items:flex-end;flex-direction:column}.track-head{align-items:flex-start;gap:8px;flex-direction:column}}


/* Shared operational map */
.map-sync-state{display:flex;align-items:center;gap:10px}.shared-map-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.55fr);gap:16px;margin-bottom:50px}.map-editor-panel{min-height:0;padding:0;overflow:hidden}.map-editor-toolbar{padding:16px 18px;border-bottom:1px solid var(--line);background:#0b1725;display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}.tool-group{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.map-tool.active{background:var(--green);color:#041710;border-color:var(--green)}.inline-field{display:grid;gap:5px;margin:0;color:var(--muted);font-size:11px}.inline-field input{width:180px;padding:8px 10px;border-radius:9px}.inline-field select{width:105px;padding:8px 10px;border-radius:9px}.file-button{display:inline-flex;align-items:center;min-height:34px;margin:0;padding:8px 11px;border:1px solid #285173;border-radius:10px;background:#142b42;color:#cfe8fb;font-size:12px;font-weight:800;cursor:pointer}.file-button:hover{border-color:var(--blue)}.shared-map{width:100%;height:clamp(460px,64vh,760px);background:#091521}.map-editor-help{min-height:45px;margin:0;padding:13px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}.shared-elements-panel{align-self:start;max-height:calc(64vh + 128px);overflow:auto}.map-element-list{display:grid;gap:9px;margin-top:18px}.map-element-card{padding:13px;border:1px solid #1d344d;border-radius:12px;background:#0a1724}.map-element-card:hover{border-color:#31597f}.map-element-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.map-element-focus{width:100%;padding:0;border:0;border-radius:0;background:transparent;color:var(--text);display:grid;grid-template-columns:auto 1fr;gap:10px;text-align:left}.map-element-focus span:last-child{min-width:0}.map-element-focus strong,.map-element-focus small{display:block;overflow:hidden;text-overflow:ellipsis}.map-element-focus strong{font-size:15px;white-space:nowrap}.map-element-focus small{margin-top:6px;color:var(--muted);font-size:11px;white-space:normal}.map-element-actions{display:flex;gap:6px;margin-top:11px}.map-element-actions button{flex:1}.map-color-dot{width:11px;height:11px;flex:0 0 auto;margin-top:3px;border-radius:50%;box-shadow:0 0 0 3px #ffffff12}.map-list-empty{padding:36px 12px;text-align:center;color:var(--muted);font-size:13px}.gm-style{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}

@media(max-width:980px){.shared-map-layout{grid-template-columns:1fr}.shared-elements-panel{max-height:none}.shared-map{height:58vh}}
@media(max-width:650px){.map-sync-state{width:100%;justify-content:space-between}.map-editor-toolbar{align-items:stretch}.tool-group{width:100%}.tool-group .map-tool{flex:1}.inline-field{flex:1}.inline-field input,.inline-field select{width:100%}.file-button{flex:1;justify-content:center}.shared-map{height:52vh;min-height:390px}}


/* DJI wayline library */
.wayline-library-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.wayline-library-head .eyebrow{margin:0 0 5px}.wayline-library-help{margin:10px 0 14px;color:var(--muted);font-size:12px;line-height:1.5}.wayline-list{display:grid;gap:9px}.wayline-card{padding:13px;border:1px solid #1d344d;border-radius:12px;background:#0a1724}.wayline-card strong,.wayline-card small{display:block}.wayline-card strong{font-size:14px}.wayline-card small{margin-top:5px;color:var(--muted);font-size:11px}.wayline-actions{display:flex;gap:6px;margin-top:11px}.wayline-actions button{flex:1}.wayline-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
@media(max-width:560px){.wayline-field-grid{grid-template-columns:1fr}.map-element-actions{flex-wrap:wrap}.map-element-actions button{min-width:calc(50% - 4px)}}
