:root{--radius-xs:2px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--color-bg-app:#d9dee5;--color-bg-panel:#f7f8fa;--color-bg-toolbar:#111923;--color-border:#b9c1cb;--color-border-subtle:#d7dce2;--color-text:#17202b;--color-text-toolbar:#f7f7f7;--color-text-muted:#657181;--color-accent:#1677a8;--shadow-card:0 2px 10px #0000001a;--sky-gradient:linear-gradient(to bottom, #9fb7d6 0%, #acc3db 25%, #c1d4e1 50%, #e2ebe5 75%, #faf3e3 100%)}html,body{width:100%;height:100%;margin:0}body{color:var(--color-text);background:var(--color-bg-app);grid-template-rows:52px minmax(0,1fr);font:13px/1.35 system-ui,sans-serif;display:grid;overflow:hidden}button,input,select{font:inherit}#app-toolbar{z-index:4;color:var(--color-text-toolbar);background:var(--color-bg-toolbar);border-bottom:1px solid #293442;justify-content:space-between;align-items:center;padding:0 16px;display:flex;box-shadow:0 1px 4px #00000038}#app-toolbar h1{letter-spacing:.01em;margin:0;font-size:16px;font-weight:600}#app-toolbar h1 a{color:inherit;text-decoration:none}#app-toolbar h1 a:hover{text-decoration:underline}#app-toolbar h1 a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}#workspace{background:var(--sky-gradient);min-width:0;min-height:0;position:relative}#mobile-workspace-toolbar{display:none}#viewer-workspace{z-index:0;position:absolute;inset:0}#viewer-frame{min-width:0;min-height:0;position:absolute;inset:0;overflow:hidden}#controls-panel,#info-panel{z-index:2;top:var(--space-3);bottom:var(--space-3);box-sizing:border-box;-webkit-backdrop-filter:blur(10px);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:0;min-height:0;box-shadow:var(--shadow-card);cursor:default;background:#f7f8faf2;padding:18px;position:absolute;overflow:hidden auto}#controls-panel{left:var(--space-3);flex-direction:column;width:240px;display:flex}#controls-panel>*{flex-shrink:0}.panel-colophon{color:#8c97a4;margin-top:auto;padding-top:18px;font-size:10px;line-height:1.6}.panel-colophon p{margin:0}.panel-colophon a{color:inherit}#info-panel{right:var(--space-3);flex-direction:column;width:264px;display:flex}#workspace[data-controls-panel-open=false] #controls-panel,#workspace[data-info-panel-open=false] #info-panel{display:none}.panel-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.panel-heading h2,#temperature-panel h2{margin:0;font-size:13px;font-weight:600}.panel-close{color:#526171;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;width:28px;height:28px;padding:0;font-size:22px;line-height:1}.panel-close:hover{color:var(--color-text);background:#e2e6eb}.panel-tab{z-index:2;top:var(--space-3);bottom:var(--space-3);color:#435160;-webkit-backdrop-filter:blur(10px);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:36px;box-shadow:var(--shadow-card);cursor:pointer;letter-spacing:.02em;writing-mode:vertical-rl;background:#eef1f4f2;justify-content:center;align-items:center;padding:10px 7px;font-size:12px;font-weight:600;display:none;position:absolute}.panel-tab:hover{color:var(--color-text);background:#e0e5eaf2}.panel-tab-left{left:var(--space-3);transform:rotate(180deg)}.panel-tab-right{right:var(--space-3)}#workspace[data-controls-panel-open=false] #open-controls-panel,#workspace[data-info-panel-open=false] #open-info-panel{display:flex}.control-section{padding-top:18px}.control-section+.control-section{border-top:1px solid var(--color-border-subtle);margin-top:18px}.control-section h3{margin:0}.section-toggle{width:100%;color:var(--color-text-muted);cursor:pointer;font:inherit;letter-spacing:.06em;text-align:left;text-transform:uppercase;background:0 0;border:0;justify-content:space-between;align-items:center;padding:0;font-size:11px;font-weight:650;display:flex}.section-toggle:hover{color:var(--color-text)}.section-toggle-chevron{flex:none;margin-left:8px;font-size:10px;transition:transform .15s}.section-toggle[aria-expanded=false] .section-toggle-chevron{transform:rotate(-90deg)}.section-body{margin-top:12px}.section-body[hidden]{display:none}.control-subsection{border-top:1px solid var(--color-border-subtle);gap:10px;margin-top:16px;padding-top:16px;display:grid}.control-subsection h4{color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:11px;font-weight:650}.temperature-control+.temperature-control{margin-top:18px}.control-label-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.control-label-row>span{white-space:nowrap;align-items:baseline;gap:7px;display:flex}.control-label-row output{color:#53606f;font-variant-numeric:tabular-nums}.temperature-control input[type=range]{width:100%;accent-color:var(--color-accent);cursor:pointer;margin:8px 0 0}.temperature-range-bound{margin-top:10px}.temperature-range-bound+.temperature-range-bound{margin-top:12px}.temperature-range-bound .control-label-row{color:var(--color-text-muted);font-size:12px}.temperature-range-bound input[type=range]{margin-top:4px}.reset-control{color:var(--color-accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px}.reset-control:hover{text-decoration:underline}.reset-control[hidden]{display:none}.toggle-control{cursor:pointer;align-items:center;gap:7px;display:flex}.toggle-control input{accent-color:var(--color-accent)}.segmented-control{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:#fff;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:inline-grid;overflow:hidden}.segmented-control button{color:#526171;cursor:pointer;background:0 0;border:0;min-height:32px;padding:6px 10px}.segmented-control button+button{border-left:1px solid var(--color-border-subtle)}.segmented-control button[aria-pressed=true]{color:#0f2635;background:#dbeef6}.segmented-control button:hover{background:#edf3f7}.climate-setpoint{margin-top:2px}.control-row-spaced{margin-bottom:16px}.toggle-control+.control-row-spaced{margin-top:16px}.control-label-row .segmented-control button{min-height:26px;padding:4px 12px;font-size:12px}.select-control{gap:6px;display:grid}.select-control select{width:100%;min-height:32px;color:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;padding:5px 7px}.control-help{color:var(--color-text-muted);margin:7px 0 0;font-size:11px}.viewer-navigation{z-index:3;border-radius:var(--radius-md);pointer-events:auto;background:#f7f8faf0;border:1px solid #9ca8b5;display:flex;position:absolute;top:0;overflow:hidden;box-shadow:0 1px 3px #00000029}.viewer-navigation-vertical{right:calc(50% + 16px)}.viewer-navigation-xy{right:0}#viewer-frame[data-focused-view] .viewer-navigation-vertical,#viewer-frame[data-focused-view] .viewer-navigation-xy{margin-left:auto;position:static}#viewer-frame[data-focused-view=vertical] .viewer-navigation-xy,#viewer-frame[data-focused-view=xy] .viewer-navigation-vertical{display:none}.viewer-navigation button{color:#253747;cursor:pointer;min-height:28px;font:inherit;background:0 0;border:0;padding:3px 8px;font-size:12px;font-weight:650}.viewer-navigation button+button{border-left:1px solid var(--color-border)}.viewer-navigation button:hover:not(:disabled){background:#dde6ed}.viewer-navigation button:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;position:relative}.viewer-navigation button:disabled{color:#9ca8b5;cursor:not-allowed}canvas{cursor:crosshair;width:100%;height:100%;display:block}#viewer-frame>canvas{touch-action:none}#probe-crosshair{z-index:4;pointer-events:none;width:24px;height:24px;margin-top:-12px;margin-left:-12px;position:absolute}#probe-crosshair:before,#probe-crosshair:after{content:"";background:#000;position:absolute;box-shadow:0 0 0 1px #fff}#probe-crosshair:before{width:1px;height:24px;top:0;left:11px}#probe-crosshair:after{width:24px;height:1px;top:11px;left:0}#probe-details{flex:auto;min-height:0;overflow:hidden auto}#probe-details dl{grid-template-columns:auto auto;gap:8px 20px;margin:16px 0;display:grid}#probe-details dt{color:var(--color-text-muted)}#probe-details dd{font-variant-numeric:tabular-nums;text-align:right;margin:0}.live-readings{gap:10px;margin:0;padding:0;list-style:none;display:grid}.live-reading{align-items:center;gap:10px;display:flex}.live-reading-icon{width:24px;height:24px;color:var(--color-accent);border-radius:var(--radius-sm);background:#e7f1f6;flex:none;justify-content:center;align-items:center;display:flex}.live-reading-icon svg{width:14px;height:14px}.live-reading-label{color:var(--color-text-muted);flex:1}.live-reading-value{font-variant-numeric:tabular-nums;font-weight:600}#temperature-panel{border-top:1px solid var(--color-border-subtle);flex:none;margin-top:auto;padding-top:16px}.legend{grid-template-rows:16px auto;gap:8px;width:100%;margin-top:8px;display:grid}#temperature-legend{border-radius:var(--radius-sm);border:1px solid #929daa}#legend-ticks{color:#53606f;height:14px;font-size:11px;position:relative}#legend-ticks span{font-variant-numeric:tabular-nums;position:absolute;top:0;transform:translate(-50%)}#simulation-controls{font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}#simulation-status{align-items:center;gap:6px;display:flex}.status-dot{border-radius:var(--radius-pill);background:#ffffff59;width:8px;height:8px;transition:background-color .2s}#simulation-status[data-running=true] .status-dot{background:#34c76f;box-shadow:0 0 0 3px #34c76f40}#simulation-status-label{min-width:46px;display:inline-block}#fps-counter{color:#ffffff8c;min-width:44px;font-size:11px;display:inline-block}#playback-speed{min-height:30px;color:inherit;border-radius:var(--radius-sm);cursor:pointer;background:#263241;border:1px solid #ffffff40;padding:4px 8px}#play-simulation{min-width:34px;min-height:30px;color:inherit;border-radius:var(--radius-sm);cursor:pointer;background:#ffffff1a;border:1px solid #ffffff40;padding:5px 9px}#play-simulation:hover{background:#fff3}.onboarding-tip-anchor{display:inline-flex;position:relative}.onboarding-tip{z-index:3;color:#0b2233;border:1px solid var(--color-accent);border-radius:var(--radius-sm);text-align:left;-webkit-user-select:none;user-select:none;background:#fff;flex-direction:column;gap:6px;width:max-content;max-width:210px;padding:10px 24px 10px 10px;font-size:12px;line-height:1.35;display:flex;position:absolute;box-shadow:0 2px 8px #00000038}.onboarding-tip[hidden],.onboarding-tip.onboarding-tip-suppressed{display:none}.onboarding-tip p{margin:0}.onboarding-tip-dismiss{color:#435160;cursor:pointer;align-items:center;gap:6px;font-size:11px;display:flex}.onboarding-tip-close{color:#435160;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:18px;height:18px;padding:0;font-size:14px;line-height:1;display:flex;position:absolute;top:4px;right:4px}.onboarding-tip-close:hover{background:#0b22331a}.onboarding-tip-arrow{border:1px solid var(--color-accent);background:#fff;border-bottom:0;border-right:0;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.play-tip{top:calc(100% + 12px);right:0}.play-tip .onboarding-tip-arrow{top:-6px;right:14px}#app-error{z-index:5;color:#7a1414;border-radius:var(--radius-lg);background:#fff1f1;border:1px solid #c96b6b;max-width:min(520px,100% - 64px);padding:12px 16px;position:fixed;bottom:16px;right:16px;box-shadow:0 2px 8px #0000002e}#app-loading,#app-startup-failure{z-index:10;background:var(--color-bg-app);justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}body[data-app-state=loading] #app-loading,body[data-app-state=failed] #app-startup-failure{display:flex}.app-status-card{border-radius:var(--radius-lg);background:#fff;border:1px solid #b9c2cd;max-width:460px;padding:24px 28px;box-shadow:0 4px 16px #0000001f}.app-status-card h2{margin:0 0 12px;font-size:16px}.app-status-card p{margin:0 0 12px}#app-loading-stage{color:#435067;margin-bottom:16px}.app-loading-bar{border-radius:var(--radius-xs);background:#dfe4ea;width:240px;max-width:100%;height:4px;overflow:hidden}.app-loading-bar span{border-radius:var(--radius-xs);background:#3f6ea8;width:40%;height:100%;animation:1.4s ease-in-out infinite app-loading-sweep;display:block}@keyframes app-loading-sweep{0%{transform:translate(-100%)}to{transform:translate(250%)}}@media (prefers-reduced-motion:reduce){.app-loading-bar span{width:100%;animation:none}}#startup-failure-remedy{color:#435067}#startup-failure-reload{color:#fff;border-radius:var(--radius-sm);cursor:pointer;background:#3f6ea8;border:none;margin-bottom:12px;padding:6px 14px}#startup-failure-reload:hover{background:#33598a}.app-status-card details{color:#56637a;font-size:12px}.app-status-card summary{cursor:pointer}.app-status-card pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0 0;overflow-x:auto}.viewport-card{z-index:1;top:var(--space-2);bottom:var(--space-2);border-radius:var(--radius-lg);pointer-events:none;border:1px solid #ffffffb3;position:absolute;box-shadow:0 1px 4px #0000001a}.mode-3d #viewer-frame[data-view-mode=linked] .viewport-card-vertical{left:var(--space-2);width:calc(50% - 4px - var(--space-2))}.mode-3d #viewer-frame[data-view-mode=linked] .viewport-card-xy{right:var(--space-2);width:calc(50% - 4px - var(--space-2))}.mode-3d #viewer-frame[data-view-mode=linked][data-focused-view] .viewport-card-vertical,.mode-3d #viewer-frame[data-view-mode=linked][data-focused-view] .viewport-card-xy{display:none}.mode-3d .viewer-top-bar{z-index:3;pointer-events:none;flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex;position:absolute;top:14px;left:14px;right:14px}.mode-3d .pane-selector{color:#253747;border-radius:var(--radius-sm);pointer-events:auto;background:#f7f8fae6;border:1px solid #6f7e8d73;align-items:center;gap:7px;padding:4px 5px 4px 7px;font-size:11px;display:flex;box-shadow:0 1px 3px #0000001a}.mode-3d .pane-selector[data-pane=xy]{position:absolute;top:0;left:calc(50% + 10px)}#viewer-frame[data-focused-view] .pane-selector[data-pane=xy]{position:static}#viewer-frame[data-focused-view=vertical] .pane-selector[data-pane=xy],#viewer-frame[data-focused-view=xy] .pane-selector[data-pane=vertical]{opacity:.58}.mode-3d .pane-selector-name{color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;padding:0 1px}.mode-3d .pane-selector-name:hover{text-decoration:underline}.mode-3d .pane-selector-name:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.mode-3d .pane-selector-axes{border-radius:var(--radius-pill);border:1px solid #aeb6c0;display:flex;overflow:hidden}.mode-3d .pane-selector-axes button{color:#526171;cursor:pointer;background:#eef1f4;border:0;min-width:30px;padding:2px 5px;font-size:10px;font-weight:650}.mode-3d .pane-selector-axes button+button{border-left:1px solid #aeb6c0}.mode-3d .pane-selector-axes button[aria-pressed=true]{color:#fff;background:var(--color-accent)}.mode-3d .pane-selector-axes button[aria-pressed=false]:hover{background:#dde6ed}.mode-3d .pane-selector-axes button:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.mode-3d .cut-plane-tip .onboarding-tip-arrow{top:-6px;left:16px}#cut-plane-tooltip{z-index:5;color:#fff;border-radius:var(--radius-sm);pointer-events:none;font-variant-numeric:tabular-nums;white-space:nowrap;background:#1b2733eb;border:1px solid #00b8d9;padding:3px 7px;font-size:11px;font-weight:650;line-height:1.3;position:absolute;transform:translate(-50%,-50%)}#cut-plane-tooltip[hidden]{display:none}.mode-3d .viewer-pane-overlay{z-index:2;bottom:calc(var(--space-2) + 10px);opacity:.5;color:#253747;border-radius:var(--radius-sm);pointer-events:none;background:#f7f8fad1;padding:2px 4px;position:absolute}.mode-3d #viewer-frame[data-view-mode=linked]:not([data-focused-view]) .viewer-pane-overlay[data-pane=vertical][data-corner=left]{left:calc(var(--space-2) + 10px)}.mode-3d #viewer-frame[data-view-mode=linked]:not([data-focused-view]) .viewer-pane-overlay[data-pane=vertical][data-corner=right]{right:calc(50% + 14px)}.mode-3d #viewer-frame[data-view-mode=linked]:not([data-focused-view]) .viewer-pane-overlay[data-pane=xy][data-corner=left]{left:calc(50% + 14px)}.mode-3d #viewer-frame[data-view-mode=linked]:not([data-focused-view]) .viewer-pane-overlay[data-pane=xy][data-corner=right]{right:calc(var(--space-2) + 10px)}#viewer-frame[data-focused-view] .viewer-pane-overlay{bottom:10px}#viewer-frame[data-focused-view] .viewer-pane-overlay[data-corner=left]{left:10px}#viewer-frame[data-focused-view] .viewer-pane-overlay[data-corner=right]{right:10px}#viewer-frame[data-focused-view=vertical] .viewer-pane-overlay[data-pane=xy],#viewer-frame[data-focused-view=xy] .viewer-pane-overlay[data-pane=vertical]{display:none}.mode-3d .viewer-axis-legend{padding:0;line-height:0}.mode-3d .viewer-axis-legend svg{display:block}.mode-3d .viewer-axis-legend path{stroke:#253747;stroke-width:1.6px;stroke-linecap:round;fill:none}.mode-3d .viewer-axis-legend polygon{fill:#253747}.mode-3d .axis-legend-label{fill:#253747;text-anchor:middle;font-size:13px;font-weight:650}#viewer-frame[data-vertical-axis=y] .viewer-axis-legend[data-pane=vertical] .axis-legend-y,#viewer-frame[data-vertical-axis=x] .viewer-axis-legend[data-pane=vertical] .axis-legend-x{display:none}.mode-3d .viewer-scale-bar{flex-direction:column;align-items:center;gap:2px;padding:3px 6px 4px;font-size:10px;font-weight:650;line-height:1;display:flex}.mode-3d .viewer-scale-bar-rule{border-bottom:1.5px solid #253747;border-left:1.5px solid #253747;border-right:1.5px solid #253747;min-width:12px;height:5px;position:relative}.mode-3d #temperature-legend{background:linear-gradient(90deg,#08306b,#1f78b4 15%,#33a02c 43%,#ffd92f 57%,#f57c00 71%,#e31a1c 85%,#99000d);height:16px}.mode-3d .legend-labels{color:#53606f;justify-content:space-between;margin-top:6px;font-size:11px;display:flex}@media (max-width:899px){#mobile-workspace-toolbar{z-index:3;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--color-border);background:#eef1f4eb;flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:6px;min-width:0;padding:6px 8px;display:flex;position:absolute;top:0;left:0;right:0}.mobile-panel-actions,.mobile-section-views{border-radius:var(--radius-md);border:1px solid #aeb6c0;flex-shrink:0;display:flex;overflow:hidden}#mobile-workspace-toolbar button{color:#344554;cursor:pointer;white-space:nowrap;background:#fff;border:0;min-height:34px;padding:5px 10px;font-size:13px;font-weight:600}#mobile-workspace-toolbar button+button{border-left:1px solid #aeb6c0}#mobile-workspace-toolbar button[aria-pressed=true]{color:#fff;background:var(--color-accent)}.mode-3d .viewer-top-bar{display:none}#controls-panel,#info-panel{left:var(--space-2);right:var(--space-2);width:auto}#controls-panel{top:52px;bottom:var(--space-2);overflow:auto}#info-panel{top:auto;bottom:var(--space-2);height:clamp(220px,46dvh,380px);padding:12px 18px}#workspace:not([data-panels-ready]) #controls-panel,#workspace:not([data-panels-ready]) #info-panel{display:none}.panel-tab{display:none!important}#simulation-status-label{clip-path:inset(50%);white-space:nowrap;width:1px;min-width:0;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@media (max-width:599px){body{grid-template-rows:auto minmax(0,1fr)}#app-toolbar{flex-wrap:wrap;row-gap:4px;padding:8px 10px}#mobile-workspace-toolbar{gap:4px;padding:5px 6px}#mobile-workspace-toolbar button{min-height:30px;padding:4px 7px;font-size:12px}#simulation-controls{gap:6px}#fps-counter{display:none}#simulation-time{font-size:12px}#playback-speed{max-width:66px}}.diagnostic-badge{letter-spacing:.04em;border-radius:999px;flex:none;margin-left:auto;padding:1px 6px;font-size:10px;font-weight:650}.diagnostic-badge[data-status=ok]{color:#0f5c3f;background:#d8f0e4}.diagnostic-badge[data-status=warn]{color:#7a4c05;background:#fbeacd}.diagnostic-badge[data-status=fail]{color:#8a1c1c;background:#f8d7d7}.diagnostic-group+.diagnostic-group{border-top:1px solid var(--color-border-subtle);margin-top:14px;padding-top:12px}.diagnostic-group h4{color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px;font-size:10px;font-weight:650}.diagnostic-row{justify-content:space-between;align-items:baseline;gap:var(--space-2);cursor:help;padding:3px 0;display:flex}.diagnostic-label{color:var(--color-text-muted);font-size:12px}.diagnostic-value{font-variant-numeric:tabular-nums;text-align:right;flex:none;font-family:ui-monospace,SF Mono,Cascadia Mono,Menlo,monospace;font-size:11px}.diagnostic-row[data-status=ok] .diagnostic-value{color:var(--color-text)}.diagnostic-row[data-status=warn] .diagnostic-value{color:#9a5f06;font-weight:600}.diagnostic-row[data-status=fail] .diagnostic-value{color:#b32222;font-weight:650}
