:root,:root[data-theme=light]{color-scheme:light;--accent: #2b6bff;--accent-2: #0f9f8f;--bg: #e7eef8;--bg-2: #f5f9ff;--panel: rgba(255, 255, 255, .82);--panel-strong: rgba(255, 255, 255, .92);--panel-border: rgba(15, 23, 42, .1);--shadow: 0 28px 60px rgba(15, 23, 42, .14);--text: #102033;--muted: #5c6f8c;--grid-line: rgba(15, 23, 42, .05);--stage-top-left: rgba(120, 212, 255, .14);--stage-top-right: rgba(255, 232, 176, .12);--stage-fill-top: rgba(255, 255, 255, .18);--stage-fill-bottom: rgba(20, 36, 58, .08);--stage-vignette-top: rgba(255, 255, 255, .14);--stage-vignette-bottom: rgba(16, 24, 36, .08);--stage-vignette-edge: rgba(10, 18, 30, .1);--viewer-bg-top: rgba(181, 214, 255, .16);--viewer-bg-bottom: rgba(246, 238, 221, .06);--plot-bg: rgba(255, 255, 255, .82);--plot-stroke: rgba(16, 32, 51, .12);--plot-text: rgba(16, 32, 51, .76);--plot-footprint: rgba(16, 32, 51, .52)}:root[data-theme=dark]{color-scheme:dark;--accent: #8db5ff;--accent-2: #54d0bf;--bg: #0d1522;--bg-2: #101b2b;--panel: rgba(15, 24, 38, .82);--panel-strong: rgba(18, 29, 46, .92);--panel-border: rgba(141, 181, 255, .14);--shadow: 0 28px 60px rgba(0, 0, 0, .34);--text: #edf4ff;--muted: #96abc8;--grid-line: rgba(141, 181, 255, .08);--stage-top-left: rgba(83, 126, 199, .16);--stage-top-right: rgba(47, 70, 121, .14);--stage-fill-top: rgba(13, 21, 34, .18);--stage-fill-bottom: rgba(6, 10, 18, .26);--stage-vignette-top: rgba(255, 255, 255, .02);--stage-vignette-bottom: rgba(0, 0, 0, .22);--stage-vignette-edge: rgba(0, 0, 0, .24);--viewer-bg-top: rgba(59, 83, 124, .2);--viewer-bg-bottom: rgba(9, 16, 28, .06);--plot-bg: rgba(14, 22, 35, .92);--plot-stroke: rgba(141, 181, 255, .14);--plot-text: rgba(237, 244, 255, .84);--plot-footprint: rgba(141, 181, 255, .58)}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{font-family:Avenir Next,Segoe UI,system-ui,sans-serif;color:var(--text);background:linear-gradient(180deg,var(--bg-2) 0%,var(--bg) 100%)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.85),transparent 92%);mask-image:linear-gradient(180deg,rgba(0,0,0,.85),transparent 92%)}button,input,select{font:inherit}dialog{border:0;padding:0;color:inherit;background:transparent}dialog::backdrop{background:#080e189e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.viewport-app{position:relative;z-index:1;padding:8px}.viewport-shell{position:relative;height:calc(100vh - 16px);min-height:700px;border-radius:18px;overflow:hidden;border:1px solid rgba(255,255,255,.5);box-shadow:0 20px 60px #0f172a2e}.viewport-shell:fullscreen{width:100vw;height:100vh;border-radius:0;border:0}.viewport-stage{position:relative;height:100%;overflow:hidden;background:linear-gradient(180deg,var(--stage-fill-top),var(--stage-fill-bottom))}.viewport-stage:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,var(--stage-vignette-top),transparent 22%,transparent 76%,var(--stage-vignette-bottom)),radial-gradient(circle at center,transparent 62%,var(--stage-vignette-edge) 100%)}.viewer-canvas{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,var(--viewer-bg-top),var(--viewer-bg-bottom))}.viewer-canvas:before{display:none}.viewer-canvas canvas{position:relative;z-index:1;display:block;width:100%;height:100%;cursor:default}.viewer-canvas canvas.is-dragging{cursor:grabbing}.overlay-card,.metric-pill,.hover-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.overlay-card{position:absolute;z-index:3;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;box-shadow:var(--shadow)}.viewport-head{top:8px;left:8px;right:8px;display:flex;justify-content:space-between;gap:12px;padding:8px 10px}.viewport-head__copy{min-width:0}.viewport-head__status{display:flex;align-items:center;gap:12px;justify-content:flex-end;flex-wrap:wrap}.eyebrow{margin:0 0 8px;color:var(--accent);text-transform:uppercase;letter-spacing:.18em;font-size:.64rem}.eyebrow--card{margin-bottom:10px}h1{margin:0;font-size:clamp(1.35rem,1.7vw,1.95rem);line-height:.98;max-width:none;white-space:nowrap}.viewport-subline{margin:4px 0 0;color:var(--muted);font-size:.8rem}.stress-hero{display:flex;align-items:baseline;gap:8px}.stress-hero__value{font-size:clamp(2rem,4vw,3.3rem);font-weight:800;letter-spacing:-.05em}.stress-hero__unit{color:var(--muted);font-size:1rem;font-weight:700}.stress-hero__meta{display:flex;flex-direction:column;gap:3px;min-width:0}.stress-hero__meta strong{font-size:.88rem;line-height:1.1}.stress-hero__meta span{color:var(--muted);font-size:.78rem;line-height:1.2}.viewport-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pill,.viewport-button{padding:6px 10px;border-radius:999px;border:1px solid rgba(120,212,255,.24);background:#78d4ff14;color:var(--accent);font-size:.76rem;white-space:nowrap}.viewport-button{cursor:pointer}.viewport-button:hover{background:#78d4ff24}.disclaimer-dialog{width:min(560px,calc(100vw - 28px))}.disclaimer-dialog__panel{margin:0;padding:20px 22px 18px;border-radius:20px;border:1px solid var(--panel-border);background:var(--panel-strong);box-shadow:var(--shadow)}.disclaimer-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.disclaimer-dialog__header h2{margin:0;font-size:1.2rem}.disclaimer-dialog__text{margin:0 0 12px;color:var(--muted);line-height:1.55}.disclaimer-dialog__text:last-child{margin-bottom:0}.overlay-card__header{margin-bottom:6px}.overlay-card__header h2{margin:0 0 4px;font-size:.9rem}.overlay-card__header p{margin:0;color:var(--muted);font-size:.72rem;line-height:1.35}.hud-card{position:absolute;z-index:3;padding:8px;width:244px}.hud-card--inputs{top:76px;left:8px;width:252px}.hud-card--assumptions{top:390px;left:8px;width:252px}.hud-card--summary{left:8px;bottom:92px;width:252px}.hud-card--camera{top:86px;right:12px;width:230px}.hud-card--environment{top:186px;right:12px;width:230px}.hud-card--section{top:318px;right:12px;width:230px}.hud-card--views{top:544px;right:12px;width:230px}.hud-card--probe{top:672px;right:12px;width:230px}.overlay-card--left{top:76px;left:8px;width:252px;padding:8px}.overlay-card--right{top:76px;right:8px;width:244px;padding:8px}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.field{display:flex;flex-direction:column;gap:3px}.field.span-2{grid-column:1 / -1}.field label,.tool-field span{color:var(--muted);font-size:.7rem}.field-note{color:var(--muted);font-size:.68rem;line-height:1.3}.label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.info-button{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px solid rgba(43,107,255,.24);border-radius:999px;background:#2b6bff14;color:var(--accent);cursor:pointer;font-size:.74rem;line-height:1;flex:0 0 auto}.field input,.tool-field select,.tool-field input{width:100%;padding:6px 8px;border-radius:10px;border:1px solid rgba(15,23,42,.12);background:var(--panel-strong);color:var(--text)}.field input:focus,.tool-field select:focus,.tool-field input:focus{outline:2px solid rgba(43,107,255,.22);border-color:#2b6bff57}.tool-field input[type=range]{padding:0;accent-color:var(--accent)}.collapse-stack{display:grid;gap:6px}.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tool-field{display:flex;flex-direction:column;gap:4px;padding:6px 8px;border-radius:12px;background:#ffffffb3;border:1px solid rgba(15,23,42,.08)}.tool-field strong{font-size:.82rem}.collapse-card{border-radius:12px;border:1px solid rgba(15,23,42,.08);background:#ffffffb3;overflow:hidden}.collapse-card summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 8px;cursor:pointer;list-style:none}.collapse-card summary::-webkit-details-marker{display:none}.collapse-card summary:after{content:"▾";color:var(--muted);font-size:.92rem;transition:transform .12s ease,color .12s ease}.collapse-card:not([open]) summary:after{transform:rotate(-90deg)}.collapse-card summary:hover:after{color:var(--text)}.collapse-card__title{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px}.collapse-card__title strong{font-size:.82rem}.collapse-card__title span{color:var(--muted);font-size:.66rem;line-height:1.28}.collapse-card__body{display:grid;gap:6px;padding:0 8px 8px}.collapse-card[open] summary{padding-bottom:5px}.toggle-row{display:flex;flex-wrap:wrap;gap:6px}.toggle-chip{min-width:0;padding:6px 8px;border-radius:999px;border:1px solid rgba(15,23,42,.12);background:#ffffffc7;color:var(--muted);cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease,transform .12s ease}.toggle-chip:disabled{opacity:.46;cursor:not-allowed;transform:none}.toggle-chip:hover{border-color:#2b6bff4d;color:var(--text)}.toggle-chip.is-active{border-color:#2b6bff5c;background:#2b6bff24;color:var(--accent);transform:translateY(-1px)}.inline-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.assumptions-grid{grid-template-columns:1fr;margin-bottom:6px}.runtime-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.mini-chip,.metric-pill,.stress-readout{padding:6px 8px;border-radius:12px;background:#ffffffbd;border:1px solid rgba(15,23,42,.08)}.mini-chip strong,.metric-pill strong,.stress-readout strong{display:block;font-size:.88rem}.mini-chip span,.metric-pill span,.stress-readout span{display:block;margin-top:2px;color:var(--muted);font-size:.68rem;line-height:1.3}.stress-scale-labels span{color:var(--muted);font-size:.78rem;line-height:1.4}.stress-scale{display:grid;grid-template-columns:20px 1fr;gap:10px;min-height:140px}.stress-bar{position:relative;border-radius:999px;background:linear-gradient(180deg,#ff2a2a,#244bff);box-shadow:inset 0 0 0 1px #ffffff8a}.stress-bar-marker{position:absolute;left:50%;width:30px;height:3px;border-radius:999px;background:#0f172ae6;box-shadow:0 0 0 3px #ffffffb3;transform:translate(-50%,-50%);transition:top .12s ease}.stress-bar-marker:after{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#0f172aeb;transform:translate(-50%,-50%)}.stress-scale-labels{display:flex;flex-direction:column;justify-content:space-between;gap:8px}.stress-scale-labels strong{display:block;font-size:.78rem}.overlay-strip{position:absolute;left:50%;bottom:8px;z-index:3;transform:translate(-50%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:min(360px,calc(100% - 536px))}.viewport-float-stack{position:absolute;right:260px;bottom:12px;z-index:4;display:grid;gap:8px;width:min(248px,calc(100% - 24px))}.metric-pill{background:#fffc}.hover-card{position:absolute;left:0;top:0;z-index:4;min-width:190px;max-width:260px;padding:8px 10px;border-radius:12px;background:#fffffff7;border:1px solid rgba(15,23,42,.1);box-shadow:0 14px 30px #0f172a29;color:var(--text);opacity:0;visibility:hidden;transform:translate(-9999px,-9999px);transition:opacity .12s ease,visibility .12s ease;pointer-events:none}.hover-card.is-visible{opacity:1;visibility:visible}.hover-card strong{display:block;margin-bottom:4px;font-size:.82rem}.hover-card span{display:block;color:var(--muted);font-size:.74rem;line-height:1.45}.hover-swatch{width:100%;height:10px;margin:8px 0 6px;border-radius:999px;background:linear-gradient(90deg,#244bff,#ff2a2a);overflow:hidden;box-shadow:inset 0 0 0 1px #0f172a14}.hover-swatch-indicator{height:100%;width:0%;border-radius:inherit;background:#0f172a29}.floating-scale,.perf-panel{padding:8px 10px;border-radius:14px;border:1px solid rgba(15,23,42,.08);background:#ffffffe6;box-shadow:0 14px 30px #0f172a24}.floating-scale__eyebrow{display:block;margin-bottom:6px;color:var(--muted);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.stress-scale--floating{min-height:96px}.stress-legend{display:grid;gap:5px;margin-top:10px;color:var(--muted);font-size:11px;font-weight:700}.stress-legend span{align-items:center;display:flex;gap:7px;line-height:1.2}.stress-legend__swatch{border:1px solid color-mix(in srgb,var(--panel-border) 78%,transparent);display:inline-block;height:10px;width:18px}.stress-legend__swatch--low{background:#00f}.stress-legend__swatch--high{background:red}.perf-panel{display:grid;gap:8px}.perf-panel.is-collapsed .perf-panel__body{display:none}.perf-panel__toggle{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.perf-panel__label{color:var(--muted);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.perf-panel__toggle strong{font-size:.82rem}.perf-panel__chevron{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;background:#244bff14;color:var(--accent);font-size:.88rem;line-height:1}.perf-panel__body{display:grid;gap:8px}.perf-panel__meta{display:flex;align-items:baseline;justify-content:space-between;gap:10px;color:var(--muted);font-size:.72rem}.perf-panel__meta strong{color:var(--text);font-size:.76rem}.perf-panel__graph-frame{border-radius:12px;overflow:hidden;border:1px solid rgba(15,23,42,.08);background:linear-gradient(180deg,var(--panel-strong),color-mix(in srgb,var(--panel-strong) 72%,transparent))}.perf-panel__graph-frame canvas{display:block;width:100%;height:96px}.runtime-float__status{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.72rem}.runtime-float__spinner{width:10px;height:10px;border:2px solid rgba(36,75,255,.2);border-top-color:#244bff;border-radius:50%;opacity:0;transform:scale(.85)}.runtime-float__status.is-calculating .runtime-float__spinner{opacity:1;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.floating-window{position:fixed;z-index:12;pointer-events:auto}.floating-window.is-hidden{display:none}.floating-window__panel{width:min(880px,calc(100vw - 24px));padding:12px;border-radius:18px;border:1px solid var(--panel-border);background:var(--panel);box-shadow:0 24px 80px #0f172a47}.floating-window__panel--wide{width:min(880px,calc(100vw - 24px))}.floating-window__panel--section{width:min(420px,calc(100vw - 24px))}.floating-window__panel--report{width:min(920px,calc(100vw - 24px))}.floating-window__panel--info{width:min(360px,calc(100vw - 24px))}.floating-window__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px;cursor:grab;-webkit-user-select:none;user-select:none}.floating-window__header h2{margin:0;font-size:1rem}.floating-window__summary{margin:0 0 8px;color:var(--muted);font-size:.78rem;line-height:1.35}.floating-window__close{padding:6px 10px;border-radius:999px;border:1px solid rgba(120,212,255,.24);background:#78d4ff14;color:var(--accent);cursor:pointer}.floating-window__panel pre{margin:0;min-height:300px;max-height:min(68vh,720px);overflow:auto;padding:10px 12px;border-radius:14px;border:1px solid rgba(15,23,42,.08);background:#ffffffc7;color:var(--text);white-space:pre-wrap;font-size:.88rem;line-height:1.45}.ground-plot-frame{min-height:220px;border-radius:14px;overflow:hidden;border:1px solid rgba(15,23,42,.08);background:linear-gradient(180deg,var(--panel-strong),color-mix(in srgb,var(--panel-strong) 72%,transparent))}.ground-plot-frame canvas{display:block;width:100%;height:220px}.ground-plot-frame--overlay{min-height:320px}.ground-plot-frame--overlay canvas{height:320px}.floating-window__panel--section .ground-plot-frame--overlay{min-height:224px}.floating-window__panel--section .ground-plot-frame--overlay canvas{height:224px}.floating-window__panel--section .stress-flow-callout{margin-top:4px;padding:5px 7px}.ground-plot-meta{display:flex;justify-content:space-between;gap:18px;margin-top:6px;color:var(--muted);font-size:.68rem;flex-wrap:wrap}.ground-plot-meta--overlay{gap:10px;margin-top:6px}.section-callout__header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}.section-callout__header h2{margin:0;font-size:.88rem}.section-callout__header p:last-child{margin:0;max-width:170px;color:var(--muted);font-size:.68rem;line-height:1.26}.stress-flow-callout{margin-top:6px;padding:6px 8px;border-radius:12px;border:1px solid rgba(15,23,42,.08);background:#ffffffd1}.stress-flow-callout strong{display:block;font-size:.78rem}.stress-flow-callout span{display:block;margin-top:2px;color:var(--muted);font-size:.66rem;line-height:1.28}.report-card{background:#ffffffb8;border:1px solid rgba(15,23,42,.08);border-radius:20px;box-shadow:0 18px 40px #0f172a14;overflow:hidden}:root[data-theme=dark] body{background:linear-gradient(180deg,#101b2b,#0d1522)}:root[data-theme=dark] .viewport-shell{border-color:#8db5ff29;box-shadow:0 30px 90px #0000006b}:root[data-theme=dark] .pill,:root[data-theme=dark] .viewport-button,:root[data-theme=dark] .toggle-chip.is-active{border-color:#8db5ff38;background:#8db5ff1f}:root[data-theme=dark] .toggle-chip,:root[data-theme=dark] .tool-field,:root[data-theme=dark] .collapse-card,:root[data-theme=dark] .mini-chip,:root[data-theme=dark] .metric-pill,:root[data-theme=dark] .stress-flow-callout,:root[data-theme=dark] .stress-readout,:root[data-theme=dark] .report-card,:root[data-theme=dark] .insight-card,:root[data-theme=dark] .hover-card{border-color:#8db5ff1f;background:#0f1826c2}:root[data-theme=dark] .field input,:root[data-theme=dark] .tool-field select,:root[data-theme=dark] .tool-field input{border-color:#8db5ff29;background:#131e30eb}:root[data-theme=dark] .stress-bar-marker,:root[data-theme=dark] .stress-bar-marker:after{background:#edf4ffeb}:root[data-theme=dark] .report-card pre{color:var(--text)}:root[data-theme=dark] .floating-window__panel{border-color:#8db5ff24;background:#0f1826f0}:root[data-theme=dark] .floating-scale,:root[data-theme=dark] .perf-panel{border-color:#8db5ff24;background:#0f1826eb}:root[data-theme=dark] .floating-window__panel pre{border-color:#8db5ff1f;background:#131e30eb}.report-card summary{cursor:pointer;list-style:none;padding:12px 14px;font-size:.92rem;font-weight:700}.report-card summary::-webkit-details-marker{display:none}.report-card pre{margin:0;padding:0 14px 14px;min-height:180px;white-space:pre-wrap;overflow:auto;font-size:.94rem;line-height:1.5;color:var(--text)}@media (max-width: 1220px){.overlay-card--left,.overlay-card--right{width:232px}.overlay-strip{width:min(332px,calc(100% - 488px))}.viewport-float-stack{width:200px}}@media (max-width: 980px){h1{white-space:normal}.viewport-shell{height:auto;min-height:0}.viewport-stage{height:auto;min-height:0;padding:10px;overflow:hidden}.viewport-head,.hud-card,.overlay-strip,.viewport-float-stack{position:relative;inset:auto;width:auto;margin:0 0 14px;max-width:none;transform:none}.viewport-head{flex-direction:column;align-items:flex-start}.viewport-head__status{width:100%;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.overlay-card--left,.overlay-card--right{max-height:none}.overlay-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.section-callout__header{flex-direction:column}.tool-grid,.field-grid,.inline-metrics{grid-template-columns:1fr}.field.span-2{grid-column:auto}}@media (max-width: 720px){.viewport-app{padding:10px}.viewport-shell{min-height:0;border-radius:16px}.stress-hero__value{font-size:2.5rem}.viewport-actions{width:100%;flex-wrap:wrap}.overlay-strip{grid-template-columns:1fr}.floating-window__panel{width:calc(100vw - 20px);padding:10px}.ground-plot-frame--overlay{min-height:220px}.ground-plot-frame--overlay canvas{height:220px}}.learning-panel{position:relative;padding:22px;margin-bottom:12px;border:1px solid var(--panel-border);border-radius:18px;background:var(--panel-strong)}.learning-heading{display:flex;justify-content:space-between;gap:16px;align-items:start}.learning-heading h2{margin:0 0 12px;font-size:1.35rem}.learning-body{display:grid;grid-template-columns:1.2fr 1fr;gap:32px;margin-top:14px}.learning-body h3{margin:0;font-size:1rem}.learning-body p{font-size:.85rem;line-height:1.5;color:var(--muted)}.learning-table{width:100%;border-collapse:collapse;font-size:.85rem;font-variant-numeric:tabular-nums}.learning-table caption{text-align:left;margin-bottom:8px;font-weight:600}.learning-table th,.learning-table td{padding:7px 8px;text-align:right;border-bottom:1px solid var(--panel-border)}.learning-table th:first-child{text-align:left}.learning-table tbody tr:last-child{color:var(--accent);font-weight:700}.learning-panel .learning-note{font-size:.75rem}.learning-panel [hidden]{display:none}.learning-panel button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (max-width: 980px){.learning-body{grid-template-columns:1fr;gap:8px}.learning-panel{padding:16px}.learning-heading{flex-direction:column;gap:0}}.experiments-back{display:inline-block;margin:8px 12px 16px;color:var(--accent)}@media (min-width: 981px){.hud-card--inputs{top:108px}.hud-card--assumptions{top:426px;max-height:calc(100% - 660px);overflow-y:auto}.hud-card--camera{top:108px}.hud-card--environment{top:210px}}@media (max-width: 980px){.viewer-canvas{position:relative;inset:auto;height:420px;margin-bottom:14px;border-radius:14px;overflow:hidden}}
