.dialog{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:40;pointer-events:none}.dialog .backdrop{position:absolute;inset:0;background:var(--dialog-backdrop);pointer-events:auto;cursor:pointer}.dialog .window{position:relative;z-index:1;pointer-events:auto;display:flex;flex-direction:column;background:var(--dialog-window-bg);border:1px solid var(--color-border-subtle);border-radius:var(--dialog-window-radius);box-shadow:0 20px 60px var(--color-shadow-strong);max-height:80vh;user-select:text;-webkit-user-select:text}.dialog .header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--color-border-light)}.dialog .header h2{margin:0;font-size:18px;font-weight:500;color:var(--color-text-primary)}.dialog .close{background:none;border:none;color:var(--color-glow);font-size:24px;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:background .15s,color .15s}@media (hover: hover){.dialog .close:hover{background:var(--color-surface);color:var(--color-text-primary)}}.dialog .close:active{background:var(--color-surface);color:var(--color-text-primary)}.dialog .content{flex:1;overflow-y:auto;padding:16px 20px}.dialog .footer{display:flex;flex-direction:column;align-items:center;padding:16px 20px;border-top:1px solid var(--color-border-light);gap:12px}.dialog .footer .actions{display:flex;justify-content:space-between;width:100%;gap:12px}.dialog .version{font-size:10px;color:var(--color-text-faint);letter-spacing:.5px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dialog.bootstrap .backdrop{background:var(--dialog-backdrop-transparent)}.dialog.bootstrap .window{width:min(380px,100vw);max-width:100%;background:var(--dialog-window-bg);border-radius:var(--dialog-window-radius);padding:32px;align-items:stretch;text-align:left;animation:scaleIn .15s ease-out;gap:24px}.dialog.bootstrap .branding{display:flex;flex-direction:column}.dialog.bootstrap .logo{width:200px;height:auto;display:block}.dialog.bootstrap .tagline{font-size:13px;opacity:.4;margin-top:8px;letter-spacing:1px}.dialog.bootstrap .loading{font-size:14px;opacity:.5}.dialog.bootstrap .progress{display:flex;flex-direction:column;gap:12px}.dialog.bootstrap .progress-text{font-size:14px;font-weight:500;opacity:.7}.dialog.bootstrap .progress-bar{width:100%;height:8px;background:var(--color-surface);border-radius:4px;overflow:hidden}.dialog.bootstrap .progress-fill{height:100%;background:repeating-linear-gradient(45deg,#fffc,#fffc 10px,#fff9 10px 20px);transition:width .3s ease}.dialog.bootstrap .download-mode{display:flex;flex-direction:column;gap:12px;margin-top:12px;padding-top:24px;border-top:1px solid var(--color-border-light);opacity:0;visibility:hidden;transition:opacity .3s ease}.dialog.bootstrap .download-mode.visible{opacity:1;visibility:visible}.dialog.bootstrap .download-mode .title{margin:0 0 8px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted)}.dialog.bootstrap .download-mode .row{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog.bootstrap .download-mode .description{margin:0;font-size:12px;color:var(--color-text-subtle);line-height:1.4;flex-shrink:1}.dialog.bootstrap .download-mode .options{display:flex;flex-direction:row;gap:8px;flex-shrink:0}.dialog.bootstrap .download-mode .option{display:flex;align-items:center;padding:8px 14px;background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:6px;cursor:pointer;font-size:13px;transition:all .15s}@media (hover: hover){.dialog.bootstrap .download-mode .option:hover{background:var(--color-surface)}}.dialog.bootstrap .download-mode .option:active{background:var(--color-surface-active)}.dialog.bootstrap .download-mode .option.selected{background:var(--color-primary-bg);border-color:var(--color-primary-border-selected);color:var(--color-primary)}.dialog.bootstrap .download-mode .option input[type=radio]{display:none}.dialog.bootstrap .error{padding:16px;background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:8px}.dialog.bootstrap .error p{margin:0 0 8px}.dialog.bootstrap .error .detail{font-size:12px;opacity:.7;font-family:Courier New,monospace}.dialog.bootstrap .btn{padding:12px 24px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);cursor:pointer;border-radius:6px;font-size:14px;font-family:inherit;transition:all .2s ease;width:100%}@media (hover: hover){.dialog.bootstrap .btn:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}}.dialog.bootstrap .btn:active{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.dialog.bootstrap .btn:disabled{cursor:default;opacity:0}.dialog.bootstrap .btn.primary{margin-top:12px;background:var(--color-primary-bg);border:1px solid var(--color-primary-bg-hover);color:var(--color-primary)}@media (hover: hover){.dialog.bootstrap .btn.primary:hover{background:var(--color-primary-bg-hover)}}.dialog.bootstrap .btn.primary:active{background:var(--color-primary-bg-active)}.dialog.bootstrap .footer{border-top:none;padding:0;margin-top:auto}.dialog.options .backdrop{animation:fadeIn .15s ease-out}.dialog.options .window{width:90%;max-width:480px;animation:scaleIn .15s ease-out}@media (min-width: 640px){.dialog.options .header{cursor:move;user-select:none}.dialog.options .window.dragging{transition:none}}@media (max-width: 639px){.dialog.options{align-items:flex-end}.dialog.options .window{width:100%;max-width:100%;max-height:85vh;border-radius:16px 16px 0 0;animation:slideUp .25s ease-out}}.dialog.options .description{padding:10px 20px;font-size:12px;color:var(--color-text-muted);background:transparent;border-bottom:1px solid var(--color-border-light)}.dialog.options .section{margin-bottom:24px}.dialog.options .section:last-child{margin-bottom:0}.dialog.options .section>.title{margin:0 0 8px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted)}.dialog.options .section>.description{margin:0 0 12px;padding:0;font-size:12px;color:var(--color-text-subtle);background:none;border:none}.dialog.options .subsection{margin-bottom:16px}.dialog.options .subsection:last-child{margin-bottom:0}.dialog.options .subsection>.title{margin:0 0 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted)}.dialog.options .row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--color-border-light);gap:16px}.dialog.options .row:last-child{border-bottom:none}.dialog.options .row .info{flex:1;min-width:0}.dialog.options .row .label{display:block;font-size:14px;color:var(--color-text-primary)}.dialog.options .row .hint{display:block;font-size:11px;color:var(--color-text-subtle);margin-top:2px}.dialog.options .row .controls{display:flex;align-items:center;gap:8px;flex-shrink:0}.dialog.options .reset{background:none;border:none;color:var(--color-text-subtle);font-size:16px;cursor:pointer;padding:4px;border-radius:4px;transition:color .15s,background .15s}@media (hover: hover){.dialog.options .reset:hover{color:var(--color-text-primary);background:var(--color-surface)}}.dialog.options .reset:active{color:var(--color-text-primary);background:var(--color-surface)}.dialog.options .toggle{position:relative;display:inline-block;width:44px;height:24px;cursor:pointer}.dialog.options .toggle input{opacity:0;width:0;height:0}.dialog.options .toggle .track{position:absolute;inset:0;background:var(--color-surface-hover);border-radius:24px;transition:background .2s}.dialog.options .toggle .track:before{content:"";position:absolute;width:18px;height:18px;left:3px;bottom:3px;background:var(--color-text-primary);border-radius:50%;transition:transform .2s}.dialog.options .toggle input:checked+.track{background:var(--color-primary)}.dialog.options .toggle input:checked+.track:before{transform:translate(20px)}.dialog.options .slider{display:flex;align-items:center;gap:8px;width:160px;flex-shrink:0}.dialog.options .slider input[type=range]{width:100px;flex-shrink:0;height:4px;appearance:none;-webkit-appearance:none;background:var(--color-surface-hover);border-radius:2px;outline:none;cursor:pointer}.dialog.options .slider input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:14px;height:14px;background:var(--color-text-primary);border-radius:50%;cursor:pointer;box-shadow:0 1px 4px var(--color-shadow)}.dialog.options .slider input[type=range]::-moz-range-thumb{width:14px;height:14px;background:var(--color-text-primary);border-radius:50%;cursor:pointer;border:none;box-shadow:0 1px 4px var(--color-shadow)}.dialog.options .slider .value{font-size:12px;color:var(--color-glow);width:44px;flex-shrink:0;text-align:right;font-variant-numeric:tabular-nums}.dialog.options .select{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:6px;color:var(--color-text-primary);padding:6px 28px 6px 10px;font-size:13px;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ffffff' fill-opacity='0.6' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.dialog.options .select:focus{outline:none;border-color:var(--color-primary-border-focus)}.dialog.options .select option{background:#1a1f2e;color:var(--color-text-primary)}.dialog.options .radio-group{display:flex;align-items:center;gap:4px}.dialog.options .radio{display:flex;align-items:center;padding:5px 10px;background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:4px;cursor:pointer;transition:all .15s}@media (hover: hover){.dialog.options .radio:hover{background:var(--color-surface)}}.dialog.options .radio:active{background:var(--color-surface-active)}.dialog.options .radio.selected{background:var(--color-primary-bg);border-color:var(--color-primary-border-selected)}.dialog.options .radio input[type=radio]{display:none}.dialog.options .radio span{font-size:12px;color:var(--color-glow)}.dialog.options .radio.selected span{color:var(--color-primary)}.dialog.options .spinner{width:14px;height:14px;border:2px solid transparent;border-radius:50%;margin-right:6px;flex-shrink:0;opacity:0}.dialog.options .spinner.visible{border-color:var(--color-primary-bg-hover);border-top-color:var(--color-primary);animation:spin .8s linear infinite;opacity:1}@keyframes spin{to{transform:rotate(360deg)}}.dialog.options .advanced-toggle{margin-top:16px;padding-top:16px;border-top:1px solid var(--color-border-light)}.dialog.options .advanced-toggle:has(input:checked){margin-bottom:16px}.dialog.options .advanced-toggle label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--color-text-muted);cursor:pointer}.dialog.options .advanced-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer}.dialog.options .btn-reset{background:var(--color-danger-bg);border:1px solid var(--color-danger-bg-active);color:#f88;padding:8px 16px;border-radius:6px;font-size:13px;cursor:pointer;transition:background .15s}@media (hover: hover){.dialog.options .btn-reset:hover{background:var(--color-danger-bg-hover)}}.dialog.options .btn-reset:active{background:var(--color-danger-bg-active)}.dialog.options .btn-close{background:var(--color-primary-bg);border:1px solid var(--color-primary-bg-hover);color:var(--color-primary);padding:8px 24px;border-radius:6px;font-size:13px;cursor:pointer;transition:background .15s}@media (hover: hover){.dialog.options .btn-close:hover{background:var(--color-primary-bg-hover)}}.dialog.options .btn-close:active{background:var(--color-primary-bg-active)}.panel{position:absolute;pointer-events:auto;z-index:20}.dialog{position:absolute;pointer-events:auto;z-index:30}.modal{position:absolute;pointer-events:auto;z-index:40}.panel.logo{top:var(--layout-margin-top);left:var(--layout-margin-left)}.panel.logo .brand-logo{width:var(--layout-logo-width);height:auto}.panel.layers{top:calc(var(--layout-margin-top) + var(--layout-logo-height) + var(--layout-panel-gap));left:var(--layout-margin-left);width:150px;max-height:calc(var(--layout-vh) - var(--layout-margin-top) - var(--layout-logo-height) - var(--layout-panel-gap) - var(--layout-timebar-height) - var(--layout-margin-bottom) - var(--layout-panel-gap));overflow-y:auto;padding-right:16px}.panel.timecircle{top:20px;right:20px;width:var(--layout-timecircle-size);height:var(--layout-timecircle-size)}.panel.queue{top:calc(20px + var(--layout-timecircle-size) + 10px);right:20px}.panel.options{top:calc(20px + var(--layout-timecircle-size) + 55px);right:20px;width:48px;height:48px}.panel.fullscreen{top:calc(20px + var(--layout-timecircle-size) + 115px);right:20px;width:48px;height:48px}.panel.timebar{left:var(--layout-margin-left);right:var(--layout-margin-right);bottom:var(--layout-margin-bottom);display:flex;flex-direction:column;align-items:center}@media (min-width: 1440px){.panel.timebar{left:50%;right:auto;transform:translate(-50%);width:100%;max-width:1200px}}.timeslider{pointer-events:auto;position:relative;padding:16px 24px}.timesteps{pointer-events:auto;margin-top:12px}.group,.widget,.timeslider,.timesteps,.date-time{pointer-events:auto}.layer.widget{border-left:4px solid rgba(255,255,255,.3);border-top:1px solid rgba(255,255,255,.4);border-right:1px solid rgba(255,255,255,.4);border-bottom:1px solid rgba(255,255,255,.4);background:#000;border-radius:0 50px 50px 0}@media (hover: hover){.layer.widget:hover{background:#ffffff14}}.layer.widget:active{background:#ffffff1f}.layer.widget.deco{padding-bottom:2px}.layer.widget .toggle{background:transparent;border:none;color:#fff;padding:8px 12px;cursor:pointer;font-size:13px;font-family:inherit;text-align:left;flex:1}.layer.widget .options{background:transparent;border:none;padding:8px 12px 8px 0;cursor:pointer;line-height:1}.layer.widget .options svg{width:14px;height:14px;fill:#ffffff80;vertical-align:middle}@media (hover: hover){.layer.widget .options:hover svg{fill:#fff}}.layer.widget .options:active svg{fill:#fff}.layer.widget.active{border-left-color:#fff9}.layer.widget.active.temp{border-left-color:var(--color-layer-temp)}.layer.widget.active.rain{border-left-color:var(--color-layer-rain)}.layer.widget.active.wind{border-left-color:var(--color-layer-wind)}.layer.widget.active.pressure{border-left-color:var(--color-layer-pressure)}.layer.widget.active.humidity{border-left-color:var(--color-layer-humidity)}.layer.widget.active.clouds{border-left-color:var(--color-layer-clouds)}.layer.widget.active.waves{border-left-color:var(--color-layer-waves)}.layer.widget.active.earth{border-left-color:var(--color-layer-earth)}.layer.widget.active.sun{border-left-color:var(--color-layer-sun)}.layer.widget.active.graticule{border-left-color:var(--color-layer-graticule)}.layer.widget.active.text{border-left-color:var(--color-layer-text)}.layer.widget.active.debug{border-left-color:var(--color-layer-debug)}.progress-canvas{display:block;width:calc(100% - 20px);height:2px;margin:0;background:#000;image-rendering:pixelated}.control{background:#000;border:1px solid rgba(255,255,255,.3);border-radius:21px;backdrop-filter:blur(10px);width:100%;cursor:pointer;font-size:14px;color:inherit;font-family:inherit}@media (hover: hover){.control:not(.nohover):hover{background:#282828}}.control:not(.nohover):active{background:#3c3c3c}.control.circle{border-radius:50%;width:auto}.control.pill{width:auto;padding:6px 14px}.panel.fullscreen>.control.circle,.panel.options>.control.circle,.panel.timecircle>.control.circle{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0}.fullscreen-icon{width:24px;height:24px;display:block;filter:invert(1)}.panel.options svg{width:22px;height:22px;fill:#fff}input[type=range].timeslider{position:absolute;top:50%;left:21px;right:21px;transform:translateY(-50%);width:auto;height:36px;appearance:none;-webkit-appearance:none;background:transparent;outline:none;cursor:pointer;margin:0;padding:0;z-index:2}input[type=range].timeslider::-webkit-slider-runnable-track{width:100%;height:4px;background:transparent}input[type=range].timeslider::-moz-range-track{width:100%;height:4px;background:transparent}input[type=range].timeslider::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:20px;height:20px;background:#fff;border-radius:50%;cursor:pointer;box-shadow:0 0 10px #fff9;transition:transform .1s ease;margin-top:-8px}input[type=range].timeslider::-webkit-slider-thumb:hover{transform:scale(1.15)}input[type=range].timeslider::-moz-range-thumb{width:20px;height:20px;background:#fff;border-radius:50%;cursor:pointer;border:none;box-shadow:0 0 10px #fff9;transition:transform .1s ease}input[type=range].timeslider::-moz-range-thumb:hover{transform:scale(1.15)}.time-ticks{position:absolute;top:50%;left:21px;right:21px;transform:translateY(-50%);height:40%;z-index:1}.time-tick{position:absolute;width:2px;height:100%;background:#fff;top:0;transform:translate(-50%)}.time-year{font-size:14px;opacity:.6;margin-bottom:4px}.time-date{font-size:28px;font-weight:300;margin-bottom:4px}.time-time{font-size:16px;opacity:.8;font-family:Courier New,monospace}:root{--color-bg-primary: #161616;--color-bg-modal: #454545;--color-text-primary: #fff;--dialog-window-bg: rgba(20, 25, 35, .95);--dialog-window-radius: 12px;--dialog-backdrop: rgba(0, 0, 0, .4);--dialog-backdrop-transparent: transparent;--color-surface: rgba(255, 255, 255, .1);--color-surface-hover: rgba(255, 255, 255, .2);--color-surface-active: rgba(255, 255, 255, .15);--color-surface-dark: rgba(0, 0, 0, .85);--color-surface-dark-hover: rgba(0, 0, 0, .95);--color-surface-dark-light: rgba(0, 0, 0, .7);--color-border: rgba(255, 255, 255, .3);--color-border-light: rgba(255, 255, 255, .1);--color-border-hover: rgba(255, 255, 255, .4);--color-border-subtle: rgba(255, 255, 255, .2);--color-error-bg: rgba(255, 50, 50, .1);--color-error-border: rgba(255, 50, 50, .3);--color-primary: #4a9eff;--color-primary-bg: rgba(74, 158, 255, .2);--color-primary-bg-hover: rgba(74, 158, 255, .3);--color-primary-bg-active: rgba(74, 158, 255, .35);--color-primary-border: rgba(74, 158, 255, .3);--color-primary-border-selected: rgba(74, 158, 255, .4);--color-primary-border-focus: rgba(74, 158, 255, .5);--color-danger-bg: rgba(255, 100, 100, .15);--color-danger-bg-hover: rgba(255, 100, 100, .25);--color-danger-bg-active: rgba(255, 100, 100, .3);--color-danger-border: rgba(255, 100, 100, .3);--color-text-muted: rgba(255, 255, 255, .5);--color-text-subtle: rgba(255, 255, 255, .4);--color-text-faint: rgba(255, 255, 255, .3);--color-glow: rgba(255, 255, 255, .6);--color-shadow: rgba(0, 0, 0, .3);--color-shadow-strong: rgba(0, 0, 0, .5);--color-layer-temp: oklch(70% .18 30);--color-layer-rain: oklch(70% .18 250);--color-layer-wind: oklch(70% .18 170);--color-layer-pressure: oklch(70% .18 320);--color-layer-humidity: oklch(70% .18 100);--color-layer-clouds: #ffffff;--color-layer-waves: oklch(70% .18 210);--color-layer-earth: oklch(65% .12 250);--color-layer-sun: #feca57;--color-layer-graticule: #ffffff;--color-layer-text: #ffffff;--color-layer-debug: #ffffff;--color-perf-bg: rgba(102, 102, 102, .669)}.bar{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%}.col{display:flex;flex-direction:column}.group{margin-top:12px}.group h4{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;opacity:.5;margin:0 0 6px;padding:0 12px}.widget{position:relative;margin-bottom:10px}.debug-margins .app-container:before{content:"";position:absolute;top:0;bottom:0;left:var(--layout-margin-left);width:1px;background:red;z-index:9999;pointer-events:none}:root{--layout-font-size: 16px;--layout-margin-top: max(16px, env(safe-area-inset-top, 0px));--layout-margin-right: max(16px, env(safe-area-inset-right, 0px));--layout-margin-bottom: max(16px, env(safe-area-inset-bottom, 0px));--layout-margin-left: max(16px, env(safe-area-inset-left, 0px));--layout-logo-width: min(280px, 44vw);--layout-logo-height: 64px;--layout-timecircle-size: min(140px, 44vw);--layout-panel-gap: 60px;--layout-timebar-height: 100px;--layout-vh: 100dvh}.pwa-standalone .panel.logo{top:calc(var(--layout-margin-top) + 24px)}@media (min-width: 1440px){:root{--layout-margin-top: max(24px, env(safe-area-inset-top, 0px));--layout-margin-right: max(24px, env(safe-area-inset-right, 0px));--layout-margin-bottom: max(24px, env(safe-area-inset-bottom, 0px));--layout-margin-left: max(24px, env(safe-area-inset-left, 0px))}}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg-primary);color:#fff;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}.no-events{pointer-events:none}.no-select{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#app{width:100%;height:100%}.app-container{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;opacity:0;animation:fadeIn .8s ease-in forwards}@keyframes fadeIn{to{opacity:1}}.scene-canvas{position:absolute;top:0;left:0;width:100%;height:100%;display:block;touch-action:none;z-index:0;opacity:0}.scene-canvas.visible{animation:fadeIn .8s ease-in forwards}div.performance{display:block;position:absolute;top:0;left:0;right:90px;height:24px;background-color:#666666ab}div.performance .info{font-family:monospace;font-size:14px;text-wrap:nowrap;padding:4px 8px}
