:root{--bg: rgba(20, 24, 30, .92);--bg-raise: rgba(28, 32, 38, .98);--bg-input: #23282f;--text: #e8ecf1;--text-dim: #9aa3ad;--text-faint: #79828c;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .25);--accent: #ffd54f;--info: #8fd3ff;--danger: #e08c8c;--ok: #3f7d52;--ok-hover: #4a9462;--neutral: #4a525c;--neutral-hover: #5a626c;--danger-action: #c34f4c;--danger-action-hover: #d4605c;--info-btn: #3d6ea5;--info-btn-hover: #4a7fb8;--radius: 6px;--radius-lg: 10px;--shadow: 0 4px 18px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:#20242a;color:var(--text)}.app{position:relative;width:100vw;height:100vh}.map{position:absolute;inset:0}.panel{position:absolute;top:12px;left:12px;z-index:10;width:290px;max-height:calc(100vh - 24px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent;padding:14px 16px;border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow)}.panel::-webkit-scrollbar{width:8px}.panel::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:4px}.panel::-webkit-scrollbar-track{background:transparent}.panel h1{margin:0 0 2px;font-size:15px;letter-spacing:.3px}.panel h2{margin:14px 0 6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-dim);border-bottom:1px solid var(--line);padding-bottom:4px}.hint{margin:2px 0 0;font-size:12px;color:#8b939d}.layer-row{display:flex;align-items:center;gap:8px;padding:4px 6px;margin:0 -2px;border-radius:var(--radius);font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .12s}.layer-row:hover{background:#ffffff0d}.layer-row input{accent-color:var(--accent)}.opacity-row{display:flex;align-items:center;gap:8px;padding:0 0 4px 24px;font-size:11px;color:#9aa3ad}.opacity-row input[type=range]{flex:1;accent-color:var(--info)}.live{margin-left:auto;font-size:10px;font-style:normal;color:#ff8a7a;border:1px solid #ff8a7a;border-radius:4px;padding:0 4px}.status{font-size:12px;color:#9aa3ad}.auth{display:flex;flex-direction:column;gap:8px}.auth input{background:#2a313a;color:#e8ecf1;border:1px solid #3a424c;border-radius:6px;padding:6px 8px;font-size:13px}.auth button{background:var(--info-btn);color:#fff;border:0;border-radius:var(--radius);padding:6px 10px;font-size:13px;cursor:pointer}.auth button:hover{background:var(--info-btn-hover)}.error{color:var(--danger);font-size:12px;margin:0}.session{font-size:12px;color:#9aa3ad}.session a{color:var(--info)}.r2-meteo{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:6px 0}.r2-meteo label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#9aa3ad}.r2-meteo input{background:#2a313a;color:#e8ecf1;border:1px solid #3a424c;border-radius:6px;padding:5px 8px;font-size:13px;width:100%}.r2-run{background:var(--danger-action);color:#fff;border:0;border-radius:var(--radius);padding:6px 10px;font-size:13px;cursor:pointer;width:100%}.r2-run:hover:not(:disabled){background:var(--danger-action-hover)}.r2-run:disabled{opacity:.5;cursor:default}.r2-result{font-size:12px;margin:8px 0 0}.r2-result p{margin:2px 0}.wow-replay{margin-top:6px;background:var(--info-btn)}.wow-replay:hover{background:var(--info-btn-hover)}.r2-cons{margin-top:10px}.r2-cons .cons-line{font-size:12px;margin:4px 0;color:#e8e6e1}.r2-cons details{margin-top:4px}.r2-cons summary{font-size:12px;color:var(--info);cursor:pointer}.r2-cons .cons-lists{font-size:11.5px;color:#b9c0c9}.r2-cons .cons-lists p{margin:6px 0 2px;color:#9aa3ad}.r2-cons .cons-lists ul{margin:0;padding-left:16px}select{background:#2a313a;color:#e8ecf1;border:1px solid #3a424c;border-radius:6px;padding:5px 8px;font-size:13px;max-width:180px}.maplibregl-popup-content{color:#20242a;font-size:12.5px;line-height:1.45;padding:10px 12px}.maplibregl-popup-content strong{color:#16191d}.obj-card{position:absolute;top:12px;right:60px;z-index:10;width:265px;max-height:calc(100vh - 172px);overflow-y:auto;padding:12px 14px;border-radius:10px;background:#1c2026eb;box-shadow:0 4px 18px #00000059;font-size:12.5px}.obj-card h3{margin:0 20px 6px;font-size:13.5px}.obj-close{position:absolute;top:4px;right:6px;background:none;border:0;color:#9aa3ad;font-size:18px;line-height:1;cursor:pointer;padding:2px 4px}.obj-close:hover{color:#e8ecf1}.obj-rows{margin:6px 0}.obj-row{display:flex;justify-content:space-between;gap:10px;margin:3px 0}.obj-row b{color:#9aa3ad;font-weight:500;flex:none}.obj-row span{text-align:right}.obj-error{color:#e08c8c;font-size:12px}.obj-actions{display:flex;gap:6px;margin-top:8px}.obj-actions button{flex:1;background:var(--info-btn);color:#fff;border:0;border-radius:6px;padding:6px 8px;font-size:12.5px;cursor:pointer}.obj-actions .obj-zoom:hover{background:var(--info-btn-hover)}.obj-actions button:disabled{background:#3a424c;color:#79828c;cursor:default}.legend{margin-top:10px}.legend summary{cursor:pointer;color:var(--info);text-transform:uppercase;font-size:11px;font-weight:600;letter-spacing:.8px}.legend-list{margin-top:6px}.legend-row{display:flex;align-items:center;gap:7px;margin:4px 0;font-size:11.5px;color:#c6ccd4}.legend-row i{width:14px;height:10px;border-radius:2px;flex:none;border:1px solid rgba(255,255,255,.25)}.legend-row.legend-off{opacity:.45}.legend-raster{background:repeating-linear-gradient(45deg,#6a7280 0 3px,#b9c0c9 3px 6px)}.obj-groups{margin:8px 0 4px}.obj-group{border:1px solid #3a424c;border-radius:8px;margin:0 0 8px;padding:6px 8px 8px}.obj-group legend{padding:0 4px;color:#9aa3ad;font-size:11.5px}.obj-field{margin:6px 0}.obj-field label{display:block;color:#9aa3ad;font-size:11.5px;margin-bottom:2px}.obj-field input[type=text],.obj-field input[type=number],.obj-field select{width:100%;box-sizing:border-box;padding:4px 6px;border:1px solid #3a424c;border-radius:6px;background:#23282f;color:#e8ecf1;font-size:12.5px}.obj-field input:focus,.obj-field select:focus{outline:1px solid var(--info)}.obj-field.has-error input,.obj-field.has-error select{border-color:#e08c8c}.obj-field-error{display:block;color:#e08c8c;font-size:11px;margin-top:2px}.obj-check{display:flex;align-items:center;gap:6px;color:#e8ecf1}.obj-form-actions{margin-top:10px}.obj-actions .obj-save{background:var(--ok)}.obj-actions .obj-save:hover{background:var(--ok-hover)}.obj-actions .obj-cancel{background:var(--neutral)}.obj-actions .obj-cancel:hover{background:var(--neutral-hover)}.obj-version{color:#79828c;font-size:11px;margin:8px 0 0}.layer-group{margin:1px 0}.layer-group-head{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.07)}.layer-group-toggle{flex:1;display:flex;align-items:center;gap:5px;background:none;border:0;padding:0;color:#cfd6dd;font-size:12.5px;font-weight:600;text-align:left;cursor:pointer}.layer-group-toggle:hover{color:#fff}.layer-group-toggle .chev{display:inline-block;color:#9aa3ad;transition:transform .15s}.layer-group-toggle[aria-expanded=true] .chev{transform:rotate(90deg)}.layer-count{color:#79828c;font-size:11px;white-space:nowrap}.weather-timeline{position:absolute;left:314px;right:12px;bottom:34px;z-index:5;padding:6px 10px 8px;border-radius:10px;background:#14181ee0;box-shadow:0 4px 18px #0006;color:#e8ecf1}.wt-head{display:flex;align-items:baseline;gap:8px;margin-bottom:2px}.wt-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:#9aa3ad}.wt-active{font-size:12px;color:#ffd54f}.wt-track{display:flex;gap:2px;overflow-x:auto;scrollbar-width:thin}.wt-slot{flex:0 0 auto;min-width:46px;display:flex;flex-direction:column;align-items:center;gap:0;padding:2px 4px;background:none;border:1px solid transparent;border-radius:6px;color:#cfd6dd;cursor:pointer;font-size:10px;line-height:1.25}.wt-slot:hover{background:#ffffff14}.wt-slot.wt-active-slot{border-color:#ffd54f;color:#fff;background:#ffd54f1f}.wt-slot:disabled{cursor:wait;opacity:.6}.wt-cell{display:flex;flex-direction:column;align-items:stretch;flex:0 0 auto}.wt-day{font-size:9.5px;color:#ffd54f;text-align:center;border-bottom:1px solid rgba(255,213,79,.35);margin-bottom:1px}.wt-slot.wt-past{opacity:.45}.wt-slot.wt-now .wt-time{color:#7ddb7d;font-weight:600}.wt-nowbtn{padding:1px 8px;margin-left:auto;cursor:pointer;border:1px solid rgba(255,255,255,.25);border-radius:4px;background:#2f6b46;color:#fff;font-size:11px}.wt-nowbtn:hover{background:var(--ok-hover)}.wt-playbtn{padding:1px 8px;cursor:pointer;border:1px solid var(--line-strong);border-radius:4px;background:transparent;color:var(--info);font-size:11px;white-space:nowrap}.wt-playbtn:hover{background:#ffffff14}.wt-playbtn.wt-playing{background:var(--accent);color:#20242a;border-color:var(--accent)}.wt-playbtn:disabled{cursor:wait;opacity:.6}.wt-run{font-size:11px;color:#79828c}.wt-point{font-size:10.5px;color:#8fd3ff;white-space:nowrap}.wt-pickbtn{margin-left:auto;padding:1px 8px;cursor:pointer;border:1px solid var(--line-strong);border-radius:4px;background:transparent;color:var(--info);font-size:11px;white-space:nowrap}.wt-pickbtn:hover{background:#ffffff14}.wt-pickbtn.wt-picking{background:var(--accent);color:#20242a;border-color:var(--accent)}.wt-plus{color:#9aa3ad}.wt-active-slot .wt-plus{color:#ffd54f}.wt-speed{color:#8fd3ff;font-size:10.5px}.wt-time{color:#79828c}.wt-nodata{color:#55606a}.obj-reload{background:none;border:0;padding:0;color:#9cc0e8;text-decoration:underline;cursor:pointer;font-size:12px}.terra-bar-actions{display:flex;gap:6px;margin-top:6px}.terra-bar-actions button{flex:1;padding:6px 0;cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius);color:#fff;font-size:12.5px;background:var(--ok)}.terra-bar-actions .obj-contour-done:hover{background:var(--ok-hover)}.terra-bar-actions .obj-contour-cancel{background:var(--neutral)}.terra-bar-actions .obj-contour-cancel:hover{background:var(--neutral-hover)}.modal-backdrop{position:fixed;inset:0;z-index:60;background:#0a0c0f8c;display:flex;align-items:center;justify-content:center}.modal{width:340px;padding:16px 18px;border-radius:10px;background:var(--bg-raise);box-shadow:0 8px 30px #00000080;font-size:12.5px;color:#e8ecf1}.modal h3{margin:0 0 8px;font-size:13.5px}.modal p{margin:0 0 10px;color:#c3cad2}.obj-actions .obj-delete{background:var(--danger-action)}.obj-actions .obj-delete:hover{background:var(--danger-action-hover)}.obj-create{margin-left:auto;background:var(--info-btn);color:#fff;border:0;border-radius:5px;min-width:20px;height:20px;line-height:1;font-size:14px;cursor:pointer;padding:0 4px}.obj-create:hover{background:#4a7fb8}.obj-create:disabled{background:#3a424c;color:#79828c;cursor:default}.create-row{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 6px 22px}.obj-create-type{background:var(--info-btn);color:#fff;border:0;border-radius:5px;padding:3px 7px;font-size:11.5px;cursor:pointer}.obj-create-type:hover{background:#4a7fb8}.obj-create-type:disabled{background:#3a424c;color:#79828c;cursor:default}.console-compass{position:absolute;top:12px;right:12px;z-index:5;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow);cursor:pointer;-webkit-user-select:none;user-select:none}.console-compass:hover{background:#1c2128f2}.cc-deg{position:absolute;top:294px;right:12px;width:40px;z-index:5;font-size:9.5px;color:var(--text-dim);text-align:center;white-space:nowrap}.maplibregl-ctrl-top-right{top:60px;right:12px}.fs-badge{top:150px;font-size:17px}.measure-distance{top:198px}.measure-area{top:246px}.maplibregl-ctrl{margin:0!important}.maplibregl-ctrl-group{background:var(--bg)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow)!important;width:40px!important}.maplibregl-ctrl-group button{background-color:transparent!important;border-radius:0!important;width:40px!important;height:40px!important}.maplibregl-ctrl-group button:hover{background-color:#ffffff14!important}.maplibregl-ctrl-group button+button{border-top:1px solid var(--line)!important}.maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert(1) opacity(.85)}.dock-btn{position:absolute;right:12px;z-index:5;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow);color:var(--text-dim);cursor:pointer}.dock-btn:hover{background:#1c2128f2;color:var(--text)}.dock-btn.active{background:var(--accent);color:#20242a}.search-card{margin:0 0 8px;position:relative}.search-input{width:100%;padding:6px 8px;border:1px solid #3a424c;border-radius:var(--radius);background:var(--bg-input);color:var(--text);font-size:13px}.search-input:focus{outline:1px solid var(--info)}.search-input::placeholder{color:var(--text-faint)}.search-results{position:absolute;left:0;right:0;top:100%;z-index:20;margin-top:2px;border-radius:var(--radius);background:var(--bg-raise);box-shadow:var(--shadow);overflow:hidden}.search-row{display:flex;align-items:baseline;gap:6px;width:100%;padding:6px 8px;background:none;border:0;color:var(--text);font-size:12.5px;cursor:pointer;text-align:left}.search-row:hover{background:#ffffff12}.search-type{flex:0 0 auto;font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:.5px}.search-title{flex:1}.search-sub{color:var(--text-faint);font-size:11px}.search-empty{padding:6px 8px;font-size:12px;color:var(--text-faint)}.map-badge{position:absolute;z-index:5;border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow);color:var(--text)}.measure-result{top:206px;right:52px;max-width:240px;padding:6px 10px;font-size:12.5px;white-space:nowrap}.map-status{left:314px;bottom:8px;padding:3px 10px;font-size:11.5px;color:var(--text-dim);font-variant-numeric:tabular-nums}.wt-collapse{margin-left:auto;width:22px;height:22px;border:0;border-radius:var(--radius);background:none;color:var(--text-dim);cursor:pointer;font-size:13px;line-height:1}.wt-collapse:hover{background:#ffffff14;color:#fff}.weather-timeline.wt-min{right:auto;min-width:0;padding:6px 10px}.weather-timeline.wt-min .wt-head{margin:0}.weather-timeline.wt-min .wt-track{display:none}.ops-legend{font-size:12px}.ops-row{display:flex;align-items:center;gap:8px;padding:2px 0;color:var(--text)}.ops-flag{width:34px;text-align:center;color:var(--info);font-size:14px}.ops-res{margin-top:2px;padding-left:8px;border-left:2px solid var(--line)}.ops-legend .legend-note{margin-top:4px}.pdk2-status,.equipment-panel{margin:12px 0;padding:12px;border:1px solid #326674;border-radius:6px;background:#0c2b34cc;color:#e1eff2}.pdk2-status p,.equipment-panel p{margin:8px 0;font-size:12px;line-height:1.45}.pdk2-status a{color:#7ce0ed}.pdk2-status small{display:block;margin-top:5px;color:#b6cbd1}.equipment-panel label{display:flex;gap:8px;align-items:center;font-weight:600}.equipment-list{display:flex;gap:6px;flex-wrap:wrap}.equipment-list button{font-size:12px;padding:6px 9px;cursor:pointer}.mobile-panel-toggle,.mobile-research-badge{display:none}@media(max-width:700px){.app{height:100dvh;overflow:hidden}.mobile-panel-toggle{display:block;position:absolute;z-index:30;top:12px;left:12px;height:40px;min-width:80px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg-raise);color:var(--text);font-size:13px;cursor:pointer}.mobile-research-badge{display:block;position:absolute;z-index:5;top:12px;left:102px;right:62px;padding:5px 7px;border-radius:var(--radius);background:var(--bg);color:var(--text-dim);font-size:10px;line-height:1.4;pointer-events:none}.app:not(.mobile-panel-open) .panel{display:none}.panel{top:64px;left:12px;width:calc(100% - 24px);max-width:390px;max-height:calc(100dvh - 76px);z-index:25;overscroll-behavior:contain;background:var(--bg-raise)}.weather-timeline,.weather-timeline.wt-min{left:12px;right:12px;width:calc(100% - 24px);min-width:0;bottom:36px;padding:8px}.wt-head{flex-wrap:wrap;gap:5px 7px}.wt-track{max-width:100%}.wt-slot{min-width:46px;min-height:42px}.wt-collapse{margin-left:auto;min-width:28px;min-height:28px}.mobile-panel-open .weather-timeline{visibility:hidden;pointer-events:none}.map-status{left:12px;right:62px;bottom:8px;padding:3px 6px;font-size:10px}.obj-card{top:64px;right:60px;width:calc(100% - 72px);max-width:300px;max-height:calc(100dvh - 250px);z-index:20}.obj-close{min-width:32px;min-height:32px}}
