@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/shell/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/shell/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/shell/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/shell/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/shell/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/shell/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/shell/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/shell/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--navy:#131c2c;--brand:#2f6fc4;--brand-dark:#245a9e;--brand-soft:#e8f0fb;--brand-cyan:#3d93eb;--brand-glow:#2f6fc42e;--bg:#eef2f7;--bg-accent:#dce8f6;--surface:#fff;--surface-2:#f5f7fb;--surface-3:#e8eef5;--border:#e0e6ef;--border-strong:#c5cedc;--text:#131c2c;--text-soft:#2a3445;--muted:#5f6b7c;--faint:#8b95a5;--ok:#15803d;--ok-soft:#e8f6ee;--warn:#b45309;--warn-soft:#fff4e3;--danger:#b91c1c;--danger-soft:#fdeaea;--info:#245a9e;--info-soft:#e8f0fb;--fg:#2ecc71;--cv:#f1c40f;--ov:#e67e22;--grb:#e74c3c;--flat:#ff4fd8;--radius-sm:8px;--radius:10px;--radius-card:12px;--radius-md:14px;--radius-panel:16px;--radius-pill:999px;--font-sans:"Plus Jakarta Sans Variable", "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;--shadow-sm:0 1px 2px #131c2c0a;--shadow-card:0 1px 2px #131c2c0a, 0 4px 12px #131c2c0a;--shadow-lift:0 8px 24px #131c2c14;--shadow-pop:0 16px 40px #131c2c1f;--focus-ring:0 0 0 3px var(--brand-glow);--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-fast:.12s;--dur:.18s;--dur-slow:.28s;--glass:color-mix(in srgb, var(--surface) 90%, transparent);--glass-border:color-mix(in srgb, var(--border) 85%, transparent);--profile-bg:var(--surface);--profile-grid:#131c2c12;--profile-label:#6a7586;--profile-flight:#0e8fb8;--profile-fg:#16a34a;--profile-cv:#c99a06;--profile-terrain-top:#b0926cc7;--profile-terrain-bottom:#80684d99;--profile-wp:#131c2c;--profile-marker:#d97706;--profile-hover:#131c2c73;--profile-tip-bg:#131c2ceb;--profile-tip-text:#f2f2f3;--profile-legend:#2a3445;font-family:var(--font-sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--navy:#0b121d;--brand:#4a9cf0;--brand-dark:#6aade8;--brand-soft:#1a2a40;--brand-cyan:#4a9cf0;--brand-glow:#4a9cf047;--bg:#0c121c;--bg-accent:#152238;--surface:#131c2c;--surface-2:#18222f;--surface-3:#1f2a3a;--border:#28344a;--border-strong:#3a4761;--text:#f2f2f3;--text-soft:#d3d8e0;--muted:#9aa6b8;--faint:#6a7280;--ok:#4ade80;--ok-soft:#14301f;--warn:#fbbf24;--warn-soft:#3a2c0c;--danger:#f87171;--danger-soft:#3a1414;--info:#4a9cf0;--info-soft:#1a2a40;--shadow-sm:0 1px 2px #00000059;--shadow-card:0 1px 2px #0000004d, 0 4px 16px #00000040;--shadow-lift:0 8px 28px #0006;--shadow-pop:0 16px 40px #00000080;--glass:color-mix(in srgb, var(--surface) 88%, transparent);--profile-grid:#ffffff0f;--profile-label:#8a97a6;--profile-flight:#00e5ff;--profile-fg:#2ecc71e6;--profile-cv:#f1c40fe6;--profile-terrain-top:#a0825fd9;--profile-terrain-bottom:#463a2dd9;--profile-wp:#fff;--profile-marker:#ffd400;--profile-hover:#fff9;--profile-tip-bg:#080d16e6;--profile-tip-text:#e8eef5;--profile-legend:#c9d3de;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#app{height:100%;margin:0;overflow:hidden}body{font-family:var(--font-sans);letter-spacing:-.01em;color:var(--text);background:radial-gradient(1200px 600px at 0% -10%, var(--bg-accent), transparent 55%), radial-gradient(900px 500px at 100% 0%, color-mix(in srgb, var(--brand) 10%, transparent), transparent 50%), var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:14px;line-height:1.5}button,input,select{font:inherit;color:inherit;letter-spacing:inherit}::selection{background:color-mix(in srgb, var(--brand) 24%, transparent)}:focus-visible{box-shadow:var(--focus-ring);outline:none}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--faint);background-clip:content-box}.boot-error{color:var(--text);padding:24px}.shell{grid-template-rows:minmax(0,1fr);grid-template-columns:372px minmax(0,1fr);height:100%;display:grid}.side{background:var(--surface);border-right:1px solid var(--border);overscroll-behavior:contain;height:100%;min-height:0;color:var(--text-soft);z-index:2;scrollbar-width:auto;scrollbar-color:var(--border-strong) var(--surface-2);font-size:13px;overflow:hidden auto}.side::-webkit-scrollbar{width:12px}.side::-webkit-scrollbar-track{background:var(--surface-2);border-left:1px solid var(--border)}.side::-webkit-scrollbar-thumb{border:3px solid var(--surface-2);background-clip:padding-box}.brand{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);z-index:3;align-items:center;gap:12px;padding:16px 14px 14px 16px;display:flex;position:sticky;top:0}.brand svg{flex:none}.brand .grow{flex:1;min-width:0}.brand h1{letter-spacing:.12em;text-transform:uppercase;color:var(--text);margin:0;font-size:16px;font-weight:700;line-height:1.1}.brand p{color:var(--muted);letter-spacing:.01em;margin:4px 0 0;font-size:10.5px;font-weight:500;line-height:1.35}.brand-actions{flex:none;align-items:center;gap:6px;display:flex}.brand-mark{border-radius:10px;display:block;box-shadow:0 4px 12px #131c2c2e}.sec{border-bottom:1px solid var(--border)}.sec>summary{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);-webkit-user-select:none;user-select:none;transition:color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);align-items:center;gap:8px;padding:13px 16px;font-size:11px;font-weight:700;list-style:none;display:flex}.sec>summary:hover{color:var(--text);background:var(--surface-2)}.sec>summary::-webkit-details-marker{display:none}.sec>summary:before{content:"";opacity:.7;width:12px;height:12px;transition:transform var(--dur) var(--ease-out);background:currentColor;flex:none;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E") 50%/contain no-repeat}.sec[open]>summary:before{transform:rotate(90deg)}.sec[open]>summary{color:var(--text)}.sec>summary .tag{text-transform:none;letter-spacing:0;margin-left:auto}.body{gap:10px;padding:2px 16px 16px;display:grid}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row>.grow{flex:1}.btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:34px;color:var(--text-soft);letter-spacing:-.01em;box-shadow:var(--shadow-sm);cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), transform var(--dur-fast) var(--ease-out);justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:13px;font-weight:600;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--border-strong);color:var(--text)}.btn:active:not(:disabled){transform:scale(.98)}.btn.primary{background:linear-gradient(180deg, color-mix(in srgb, var(--brand) 92%, #fff) 0%, var(--brand) 100%);color:#fff;box-shadow:var(--shadow-sm), 0 1px 0 #ffffff1f inset;border-color:#0000}.btn.primary:hover:not(:disabled){background:var(--brand-dark);color:#fff;box-shadow:var(--shadow-card);border-color:#0000}.btn.on{background:var(--brand-soft);border-color:color-mix(in srgb, var(--brand) 45%, var(--border));color:var(--brand-dark)}.btn.on:hover:not(:disabled){background:var(--brand-soft);border-color:var(--brand);color:var(--brand-dark)}.btn.icon{flex:none;width:34px;padding:0}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn .icon{flex:none}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;padding:3px;display:grid}.seg button{border-radius:var(--radius-pill);cursor:pointer;color:var(--muted);transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out);background:0 0;border:0;padding:5px 6px;font-size:12px;font-weight:600}.seg button:hover:not(:disabled){color:var(--text)}.seg button.on{background:var(--brand);color:#fff;box-shadow:var(--shadow-sm)}.seg button:disabled{opacity:.35;cursor:not-allowed}.grid2{grid-template-columns:1fr 1fr;gap:10px 12px;display:grid}.field{gap:5px;display:grid}.field>span{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:4px;font-size:11px;font-weight:500;display:flex}.field>span b{color:var(--text-soft);font-weight:600}.field input,.field select,input.inline,select.inline{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;height:34px;color:var(--text);font-variant-numeric:tabular-nums;transition:border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), background var(--dur) var(--ease-out);outline:none;padding:0 10px;font-size:13px}.field input:hover,.field select:hover,input.inline:hover,select.inline:hover{border-color:var(--border-strong)}.field input:focus,.field select:focus,input.inline:focus,select.inline:focus{border-color:var(--brand);box-shadow:var(--focus-ring)}.field input:disabled,input.inline:disabled{background:var(--surface-2);color:var(--muted);cursor:not-allowed}.field input::placeholder,input.inline::placeholder{color:var(--faint)}.field select,select.inline{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b95a5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:30px}.unit{color:var(--muted);font-weight:500}dl.kv{grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:12.5px;display:grid}dl.kv dt{color:var(--muted)}dl.kv dd{text-align:right;color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0}.hint{color:var(--muted);font-size:12px;line-height:1.5}.hint b{color:var(--text-soft)}.text-bad{color:var(--danger);font-weight:600}.note{background:var(--warn-soft);border:1px solid color-mix(in srgb, var(--warn) 26%, transparent);border-left:3px solid var(--warn);color:var(--text-soft);border-radius:var(--radius-sm);padding:9px 12px;font-size:12px;line-height:1.45}.note.bad{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 28%, transparent);border-left-color:var(--danger);color:var(--danger)}.note.info{background:var(--info-soft);border-color:color-mix(in srgb, var(--brand) 24%, transparent);border-left-color:var(--brand);color:var(--text-soft)}.note code{font-family:var(--font-mono);background:color-mix(in srgb, var(--surface) 70%, transparent);border-radius:5px;padding:1px 5px;font-size:11px}.hidden{display:none!important}.chip{border-radius:var(--radius-pill);background:var(--surface-3);color:var(--text-soft);white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:6px;padding:2px 9px;font-size:11px;font-weight:600;line-height:1.6;display:inline-flex}.chip i{background:var(--faint);border-radius:50%;flex:none;width:6px;height:6px;display:inline-block}.chip.ok{background:var(--ok-soft);color:var(--ok)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.bad{background:var(--danger-soft);color:var(--danger)}.chip.ok i,.chip.warn i,.chip.bad i{background:currentColor}.progress{background:var(--surface-3);border-radius:var(--radius-pill);height:5px;overflow:hidden}.progress>div{border-radius:inherit;background:linear-gradient(90deg, var(--brand), var(--brand-cyan));width:0;height:100%;transition:width .2s}.kpis{grid-template-columns:1fr 1fr;gap:8px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:9px 11px 10px 14px;position:relative;overflow:hidden}.kpi:before{content:"";background:linear-gradient(180deg, var(--brand-cyan), var(--brand));width:3px;position:absolute;top:0;bottom:0;left:0}.kpi small{color:var(--muted);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.kpi strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--text);font-size:20px;font-weight:600}.kpi strong em{font-family:var(--font-sans);color:var(--muted);letter-spacing:0;margin-left:4px;font-size:12px;font-style:normal;font-weight:500}.kpi .sub{color:var(--muted);margin-top:3px;font-size:11px;line-height:1.4}.kpi.grb{border-color:color-mix(in srgb, var(--grb) 38%, var(--border));background:linear-gradient(180deg, color-mix(in srgb, var(--grb) 9%, var(--surface)), var(--surface))}.kpi.grb:before{background:var(--grb)}.kpi.flat{border-color:color-mix(in srgb, var(--flat) 30%, var(--border))}.kpi.flat:before{background:var(--flat)}table.t{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12.5px}table.t td{border-bottom:1px dashed var(--border);vertical-align:top;padding:5px 0}table.t td:last-child{text-align:right;color:var(--text);font-family:var(--font-mono);padding-left:12px;font-size:12px}table.t td:last-child .hint{font-family:var(--font-sans)}table.t td:first-child{color:var(--muted)}.warnings{background:var(--warn-soft);border:1px solid color-mix(in srgb, var(--warn) 26%, transparent);border-left:3px solid var(--warn);border-radius:var(--radius-sm);color:var(--text-soft);gap:4px;margin:0;padding:9px 12px 9px 28px;font-size:12px;line-height:1.45;display:grid}.warnings li::marker{color:var(--warn)}.hint.explain{border-left:2px solid color-mix(in srgb, var(--brand) 40%, transparent);margin:-4px 0 0;padding-left:9px}.sub-title{color:var(--text);letter-spacing:-.01em;margin-top:4px;font-size:12px;font-weight:700}details.calc>summary{cursor:pointer;color:var(--text-soft);margin-bottom:6px;font-size:12px;font-weight:600}details.calc>summary:hover{color:var(--brand-dark)}.formula.trace{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-soft);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;padding:10px 12px;font-size:11px;line-height:1.55}.swatch{border-radius:4px;flex:none;width:12px;height:12px;display:inline-block;box-shadow:inset 0 0 0 1px #131c2c26}.layers{gap:4px;display:grid}.layers label{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-soft);transition:background var(--dur) var(--ease-out);align-items:center;gap:9px;margin:0 -6px;padding:4px 6px;display:flex}.layers label:hover{background:var(--surface-2)}input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--brand)}.layers input{width:15px;height:15px;margin:0}.igrc{align-items:center;gap:12px;display:flex}.igrc .val{font-family:var(--font-mono);text-align:center;border-radius:var(--radius);background:var(--brand-soft);border:1px solid color-mix(in srgb, var(--brand) 30%, var(--border));min-width:46px;color:var(--brand-dark);padding:6px 10px;font-size:24px;font-weight:700}.stage{grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}#cesium{background:#0b1220;min-height:0;position:relative;overflow:hidden}#cesium .cesium-widget-credits{font-size:10px;font-family:var(--font-sans)}.drag-hint{z-index:20;pointer-events:none;color:#f2f2f3;border-radius:var(--radius-sm);box-shadow:var(--shadow-pop);white-space:nowrap;background:#131c2cf0;border:1px solid #ffffff14;padding:5px 10px;font-size:12px;position:fixed}.drag-hint kbd{color:#fff;background:#ffffff1a;border-color:#fff3}kbd{font-size:11px;font-family:var(--font-mono);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-soft);border-bottom-width:2px;border-radius:5px;padding:0 5px;line-height:1.5;display:inline-block}.topbar{pointer-events:none;z-index:5;align-items:center;gap:8px;display:flex;position:absolute;top:12px;left:12px;right:12px}.topbar>*{pointer-events:auto}.glass{background:var(--glass);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);border:1px solid var(--glass-border);border-radius:var(--radius-card);box-shadow:var(--shadow-lift)}.btn.glass{background:var(--glass);border-color:var(--glass-border);color:var(--text-soft)}.btn.glass:hover:not(:disabled){background:var(--surface);color:var(--text)}.btn.glass.on{background:var(--brand-soft);color:var(--brand-dark)}.title-card{align-items:center;gap:10px;min-width:0;min-height:42px;padding:7px 8px 7px 14px;display:flex}.title-card b{letter-spacing:-.015em;color:var(--text);white-space:nowrap;text-overflow:ellipsis;max-width:360px;font-size:13.5px;font-weight:700;overflow:hidden}.topbar .spacer{flex:1}.player{align-items:center;gap:8px;padding:5px 8px;display:flex}.player input[type=range]{width:220px}.player .time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-soft);text-align:right;min-width:92px;font-size:12px}.player select.inline{height:32px}#btnPlay{background:var(--brand);color:#fff;border-color:#0000}#btnPlay:hover:not(:disabled){background:var(--brand-dark);color:#fff}.mapctl{z-index:6;justify-items:start;gap:8px;display:grid;position:absolute;top:64px;left:12px}.mapctl>.btn,.basemap>.btn{place-items:center;width:38px;height:38px;padding:0;display:grid}.mapctl #compassNeedle{transition:opacity .15s}.mapctl #btnNorth.is-north #compassNeedle{opacity:.45}.basemap{position:relative}.basemap-pop{background:color-mix(in srgb, var(--surface) 96%, transparent);border-radius:var(--radius-md);width:290px;box-shadow:var(--shadow-pop);gap:8px;padding:8px;display:grid;position:absolute;top:0;left:46px}.basemap-pop .seg-list{gap:3px;display:grid}.basemap-pop .seg-list button{text-align:left;border-radius:var(--radius);cursor:pointer;color:var(--text-soft);transition:background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);background:0 0;border:1px solid #0000;align-items:center;gap:10px;padding:8px 10px;font-size:13px;font-weight:500;display:flex}.basemap-pop .seg-list button:before{content:"";border:1.5px solid var(--border-strong);background:var(--surface);width:14px;height:14px;transition:border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);border-radius:50%;flex:none}.basemap-pop .seg-list button:hover{background:var(--surface-2);color:var(--text)}.basemap-pop .seg-list button.on{background:var(--brand-soft);border-color:color-mix(in srgb, var(--brand) 40%, transparent);color:var(--brand-dark);font-weight:600}.basemap-pop .seg-list button.on:before{border-color:var(--brand);background:var(--brand);box-shadow:inset 0 0 0 3px var(--surface)}.basemap-pop .hint{margin:0;padding:0 4px 2px;font-size:10.5px;line-height:1.45}.basemap-pop .hint a{color:var(--brand-dark)}.legend-float{z-index:4;gap:5px;padding:9px 12px;font-size:11.5px;display:grid;position:absolute;bottom:202px;right:12px}.legend-float .row{gap:8px}.legend-float .hint{font-size:10.5px}.legend-float .row.hint span{font-family:var(--font-mono)}.agl-bar{border-radius:var(--radius-pill);background:linear-gradient(90deg,#e63333 0%,#ff8c1a 10%,#ffe633 20%,#4de680 40%,#33bfff 66%,#8c80ff 100%);width:160px;height:8px}.profile{border-top:1px solid var(--border);background:var(--profile-bg);height:190px;position:relative}.profile.collapsed{border:0;height:0}.profile canvas{position:absolute;inset:0}.stage:has(.profile.collapsed) .legend-float{bottom:12px}.toasts{z-index:10;gap:8px;width:340px;display:grid;position:absolute;top:66px;right:14px}.toast{border-radius:var(--radius-card);background:color-mix(in srgb, var(--surface) 95%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-left:3px solid var(--brand);color:var(--text);box-shadow:var(--shadow-pop);animation:slide var(--dur-slow) var(--ease-out);padding:10px 14px;font-size:12.5px;line-height:1.45}.toast.bad{border-left-color:var(--danger)}.toast.ok{border-left-color:var(--ok)}.toast.warn{border-left-color:var(--warn)}@keyframes slide{0%{opacity:0;transform:translateY(8px)}}.drop{background:color-mix(in srgb, var(--navy) 42%, transparent);border:2px dashed var(--brand-cyan);color:#fff;z-index:20;letter-spacing:-.01em;text-shadow:0 1px 12px #00000073;pointer-events:none;border-radius:4px;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:none;position:absolute;inset:0}.drop.show{display:flex}.busy{color:var(--text-soft);border-radius:var(--radius-pill);z-index:6;align-items:center;gap:9px;padding:8px 16px;font-size:12.5px;font-weight:600;display:flex;position:absolute;top:64px;left:50%;transform:translate(-50%)}.spin{border:2px solid var(--surface-3);border-top-color:var(--brand);vertical-align:-2px;border-radius:50%;width:13px;height:13px;animation:.7s linear infinite rot;display:inline-block}@keyframes rot{to{transform:rotate(360deg)}}dialog{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-panel);width:calc(100% - 40px);max-width:720px;box-shadow:var(--shadow-pop);padding:0}dialog[open]{animation:dialog-in var(--dur-slow) var(--ease-out)}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px)scale(.98)}}dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0a101a80}dialog header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 14px 14px 20px;display:flex}dialog header h2{letter-spacing:-.015em;flex:1;margin:0;font-size:15px;font-weight:700}dialog header [data-close]{box-shadow:none;color:var(--muted);background:0 0;border-color:#0000}dialog header [data-close]:hover:not(:disabled){background:var(--surface-2);border-color:var(--border);color:var(--text)}dialog .content{color:var(--text-soft);max-height:70vh;padding:16px 20px 20px;font-size:13px;line-height:1.6;overflow:auto}dialog .content code{font-family:var(--font-mono);background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:0 5px;font-size:12px}dialog .formula{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-soft);font-family:var(--font-mono);white-space:pre;padding:10px 12px;font-size:12px;line-height:1.55;overflow-x:auto}dialog .content.method p{margin:0 0 10px}dialog .content.method b{color:var(--text)}dialog .content.method h3{letter-spacing:-.015em;color:var(--text);border-bottom:1px solid var(--border);margin:22px 0 8px;padding-bottom:6px;font-size:14px;font-weight:700}dialog .content.method h4{color:var(--text);margin:14px 0 4px;font-size:12.5px;font-weight:700}dialog .content.method ul{gap:4px;margin:0;padding-left:18px;display:grid}dialog table.params td{vertical-align:top;font-family:var(--font-sans);white-space:normal;padding:6px 10px 6px 0;font-size:12.5px}dialog table.params td:last-child{text-align:left;color:var(--text-soft)}dialog table.params td:nth-child(2){white-space:nowrap;font-family:var(--font-mono);color:var(--text);font-size:12px}dialog table.params tr:first-child td{color:var(--muted);font-family:var(--font-sans);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:700}.login{z-index:100;color:#f2f2f3;background:radial-gradient(900px 520px at 15% 10%,#4a9cf038,#0000 55%),radial-gradient(700px 420px at 90% 80%,#3d93eb29,#0000 50%),linear-gradient(165deg,#131c2c 0%,#1a2740 45%,#243556 100%);place-items:center;padding:32px 16px;display:grid;position:fixed;inset:0;overflow:hidden auto}.login:before{content:"";pointer-events:none;background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff08 1px,#0000 1px);background-size:48px 48px;animation:28s linear infinite login-grid;position:fixed;inset:0;-webkit-mask-image:radial-gradient(#000 20%,#0000 75%);mask-image:radial-gradient(#000 20%,#0000 75%)}@keyframes login-grid{to{transform:translateY(48px)}}.login-card{z-index:1;width:min(420px,100%);box-shadow:var(--shadow-pop), 0 0 0 1px #ffffff0a inset;-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);animation:login-card-in var(--dur-slow) var(--ease-out);background:#131c2c1f;border:1px solid #ffffff24;border-radius:20px;gap:14px;padding:32px 28px 26px;font-size:13px;display:grid;position:relative}@keyframes login-card-in{0%{opacity:0;transform:translateY(12px)scale(.98)}}.login-brand{text-align:center;flex-direction:column;align-items:center;gap:12px;margin-bottom:6px;display:flex}.login-brand .brand-mark{border-radius:15px;box-shadow:0 10px 30px #00000059,0 0 0 1px #ffffff14}.login-brand b{letter-spacing:.14em;text-transform:uppercase;color:#fff;margin-top:4px;font-size:30px;font-weight:700;line-height:1;display:block}.login-brand span{color:#f2f2f3b8;margin-top:8px;font-size:13.5px;display:block}.login-card h2{letter-spacing:-.015em;text-align:center;color:#fff;margin:2px 0 0;font-size:16px;font-weight:700}.login-card .hint,.login-card p{margin:0}.login-card>.hint{text-align:center;color:#ffffffa8}.login-card a{color:var(--brand)}.login-card .btn:not(.primary){color:#fff;box-shadow:none;background:#ffffff14;border-color:#ffffff2e}.login-card .btn:not(.primary):hover:not(:disabled){background:#ffffff24;border-color:#ffffff4d}.login-card .note.bad{color:#fecaca;background:#b91c1c38;border-color:#f8717159 #f8717159 #f8717159 #f87171}.login-form{gap:10px;display:grid}.login-form label{gap:5px;display:grid}.login-form label>span{color:#ffffffa8;font-size:11px;font-weight:600}.login-form input{border-radius:var(--radius);color:#fff;height:42px;transition:border-color var(--dur) var(--ease-out), background var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);background:#ffffff12;border:1px solid #ffffff29;outline:none;padding:0 12px;font-size:14px}.login-form input::placeholder{color:#ffffff61}.login-form input:hover{border-color:#ffffff4d}.login-form input:focus{border-color:var(--brand);box-shadow:var(--focus-ring);background:#ffffff1c}.login-form .btn.primary{min-height:42px;margin-top:4px;font-size:14px}.login-divider{color:#fff6;align-items:center;gap:12px;font-size:12px;display:flex}.login-divider:before,.login-divider:after{content:"";background:#ffffff24;flex:1;height:1px}.login .google{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;justify-content:center;min-height:44px;display:flex}.login [data-role=busy]{text-align:center;color:#ffffffb8}.login .row{justify-content:center}.link{color:var(--brand-dark);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0;font-size:12px;font-weight:600}.link:hover:not(:disabled){text-underline-offset:2px;text-decoration:underline}.link:disabled{opacity:.5}.login .link{color:#8cc4ff;justify-self:center}.btn.account{background:linear-gradient(135deg, var(--brand), var(--brand-cyan));color:#fff;letter-spacing:.02em;width:34px;min-width:34px;box-shadow:0 0 0 2px var(--surface), 0 0 0 3px color-mix(in srgb, var(--brand) 30%, transparent);border:0;border-radius:50%;padding:0;font-size:11.5px;font-weight:700}.btn.account:hover:not(:disabled){background:linear-gradient(135deg, var(--brand-dark), var(--brand));color:#fff}dialog .content.stack{gap:12px;display:grid}dialog .content.stack .hint,dialog .content.stack p{margin:0}#fh2Connect,#fh2Browse{gap:10px;display:grid}#btnFh2{flex:100%}.list{gap:6px;display:grid}.list .item{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);transition:border-color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);align-items:center;gap:8px;padding:10px 10px 10px 14px;display:flex}.list .item:hover{border-color:var(--border-strong);background:var(--surface)}.list .item b{color:var(--text)}.list .item .grow{flex:1;min-width:0}@media (prefers-reduced-motion:reduce){.login:before,.login-card,dialog[open],.toast{animation:none}}@media (max-width:900px){.shell{grid-template-rows:minmax(0,55fr) minmax(0,45fr);grid-template-columns:minmax(0,1fr)}.side{border-right:0;border-top:1px solid var(--border);order:2}.player input[type=range]{width:110px}.profile{height:130px}.legend-float{display:none}}@media (max-width:640px){.topbar{flex-wrap:wrap}.topbar .spacer{display:none}.title-card{flex:1 1 0}#btnProfile{order:1}.player{flex:100%;order:2}.player input[type=range]{flex:auto;width:0;min-width:60px}.toasts{width:auto;left:12px;right:12px}:is(.stage:has(#player:not(.hidden)) .mapctl,.stage:has(#player:not(.hidden)) .busy,.stage:has(#player:not(.hidden)) .toasts){top:116px}}
