:root{--bg: #f4f6fa;--surface: #ffffff;--line: #e3e8ef;--ink: #16202e;--muted: #5b677a;--c-lo: #16202e;--c-le: #e08600;--c-int: #d6336c;--c-fr: #2563eb;--c-li: #7c3aed;--c-cos: #0f9d8a;--fs-body: clamp(16px, 1.25vw + 8px, 20px);--fs-small: clamp(13px, .9vw + 6px, 16px);--fs-h1: clamp(28px, 2.6vw + 12px, 44px);--fs-eq: clamp(32px, 3vw + 14px, 54px);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--radius: 18px;--tap: 48px;--shadow: 0 1px 2px rgba(22, 32, 46, .06), 0 8px 24px rgba(22, 32, 46, .06);--safe-t: env(safe-area-inset-top, 0px);--safe-r: env(safe-area-inset-right, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font:400 var(--fs-body) / 1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}#app{height:100vh;height:100dvh;padding:calc(var(--s-4) + var(--safe-t)) calc(var(--s-4) + var(--safe-r)) calc(var(--s-4) + var(--safe-b)) calc(var(--s-4) + var(--safe-l));display:grid;gap:0;grid-template-rows:minmax(0,1fr) auto}.station{min-height:0;display:grid;gap:var(--s-4);grid-template-columns:minmax(0,65fr) minmax(0,35fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"stage panel"}.station[hidden]{display:none}@media(orientation:portrait){.station{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,57fr) minmax(0,43fr);grid-template-areas:"stage" "panel"}}#tabs{display:flex;justify-content:center;gap:var(--s-2);margin-top:var(--s-4)}#tabs[hidden]{display:none}.tab{min-height:var(--tap);padding:0 var(--s-5);border:0;border-radius:999px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font:700 var(--fs-body) / 1 inherit;font-family:inherit;display:flex;align-items:center;gap:var(--s-2);cursor:pointer}.tab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tab[aria-selected=true]{background:var(--ink);color:#fff}.tab:active{transform:scale(.97)}.viewport-slot{flex:1 1 0;min-height:0;display:flex;flex-direction:column;position:relative}#stage,.stage-card{grid-area:stage;min-height:0;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}#viewport{position:relative;flex:1 1 0;min-height:0;background:#000}#explain{flex:none;margin:0;height:calc(var(--fs-small) * 1.35 * 2 + var(--s-3) * 2);padding:var(--s-3) var(--s-5);border-left:6px solid var(--line);font-size:var(--fs-small);line-height:1.35;color:var(--muted);overflow:hidden;transition:border-color .2s}#explain strong{color:var(--ink)}#explain.show{border-left-color:var(--c-fr);color:var(--ink)}#explain.show strong{color:var(--c-fr)}#view{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#hud{position:absolute;left:var(--s-3);bottom:var(--s-3);max-width:calc(100% - 2 * var(--s-3));padding:var(--s-2) var(--s-3);background:#ffffffeb;border-radius:10px;font:12px/1.4 ui-monospace,SF Mono,Menlo,Consolas,monospace;white-space:pre-wrap;pointer-events:none}#panel,.panel-col{grid-area:panel;min-height:0;display:flex;flex-direction:column;gap:var(--s-4)}#panel>section,#panel>header,.panel-col>section,.panel-col>header{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--s-4) var(--s-5)}#brand h1,.brand h1{margin:0;font-size:var(--fs-h1);line-height:1.1;letter-spacing:-.02em}h2{margin:0 0 var(--s-2);font-size:var(--fs-small);font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.eq{margin:0;font-family:"Cambria Math",Cambria,"STIX Two Math",Times New Roman,serif;font-style:italic;font-size:var(--fs-eq);line-height:1.25;display:flex;flex-wrap:nowrap;white-space:nowrap;align-items:baseline;gap:0 .28em}.eq sub{font-size:.55em;font-style:normal}.t-lo{color:var(--c-lo)}.t-le{color:var(--c-le)}.t-int{color:var(--c-int)}.t-fr{color:var(--c-fr)}.t-li{color:var(--c-li)}.t-cos{color:var(--c-cos)}.t-du{color:var(--c-lo)}.t-adv{color:var(--c-li)}.t-p{color:var(--c-int)}.t-visc{color:var(--c-le)}.t-g{color:var(--c-fr)}.eq b{font-style:normal;font-weight:700}.eq sup{font-size:.55em;font-style:normal}#equation,#ns-equation{container-type:inline-size}@supports (font-size: 1cqw){#equation .eq{font-size:clamp(18px,7.4cqw,64px)}#ns-equation .eq{font-size:clamp(14px,4.6cqw,40px)}}#controls{display:flex;flex-direction:column;gap:var(--s-3)}.ctl-row{display:flex;align-items:center;gap:var(--s-4);flex-wrap:wrap;row-gap:var(--s-2)}.render-toggles{display:flex;flex-wrap:wrap;gap:var(--s-2);flex:1 1 0;min-width:0}.toggle{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 12px;border:2px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);font:600 var(--fs-small) / 1 inherit;font-family:inherit;white-space:nowrap;cursor:pointer}.toggle i{width:10px;height:10px;border-radius:50%;border:2px solid currentColor}.toggle[aria-pressed=true]{color:var(--ink);border-color:var(--ink)}.toggle[aria-pressed=true] i{background:#22c55e;border-color:#22c55e}.toggle:active{transform:scale(.97)}.toggle[hidden]{display:none}.toggle.cam[aria-pressed=true] i{background:var(--c-fr);border-color:var(--c-fr)}.cam-ctl{display:flex;flex-direction:column;gap:0}.cam-row{display:grid;grid-template-columns:6.6em minmax(0,1fr) 3.4em;align-items:center;gap:var(--s-2);height:34px;font-size:var(--fs-small);color:var(--muted)}.cam-row .slider{height:34px}.cam-row b{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}.stat{display:flex;flex-direction:column;min-width:0}.stat-num{font-size:calc(var(--fs-body) * 1.5);font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}.stat-lab{font-size:var(--fs-small);color:var(--muted)}.btn{margin-left:auto;min-height:var(--tap);padding:0 var(--s-5);border:2px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:600 var(--fs-body) / 1 inherit;font-family:inherit;cursor:pointer}.btn:active{background:var(--bg);transform:scale(.97)}.seg{display:grid;grid-template-columns:repeat(3,1fr);padding:3px;gap:3px;border:2px solid var(--line);border-radius:18px;background:var(--surface)}.seg-btn{flex:1 1 0;min-width:0;min-height:calc(var(--tap) - 10px);border:0;border-radius:999px;background:transparent;color:var(--ink);font:600 var(--fs-body) / 1 inherit;font-family:inherit;cursor:pointer}.seg-btn.on{background:var(--c-fr);color:#fff}.ctl-head .seg-mini{display:flex;border-radius:999px;padding:2px;gap:2px}.seg-mini .seg-btn{flex:0 0 auto;min-height:34px;min-width:56px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:4px}.seg-mini .seg-btn i{display:block;width:9px;height:9px;border-radius:2px;background:var(--c-le)}.seg-mini .seg-btn.on i{background:#fff}.seg-mini .seg-btn.on{background:var(--c-le)}@media(orientation:portrait){.seg{grid-template-columns:repeat(6,1fr);border-radius:999px}}.seg-btn:active{transform:scale(.97)}.ctl-head{display:flex;justify-content:space-between;align-items:baseline}.ctl-title{font-weight:650;font-size:var(--fs-body)}.ctl-val{font-weight:700;font-size:calc(var(--fs-body) * 1.4);font-variant-numeric:tabular-nums}.slider{--fill: 50%;-webkit-appearance:none;appearance:none;display:block;width:100%;height:var(--tap);margin:0;background:transparent;touch-action:pan-y;cursor:pointer}.slider::-webkit-slider-runnable-track{height:12px;border-radius:6px;background:linear-gradient(to right,var(--acc, var(--c-li)) var(--fill),var(--line) var(--fill))}.slider::-moz-range-track{height:12px;border-radius:6px;background:var(--line)}.slider::-moz-range-progress{height:12px;border-radius:6px;background:var(--acc, var(--c-li))}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:36px;height:40px;margin-top:-14px;border-radius:50%;background:#fff;border:4px solid var(--acc, var(--c-li));box-shadow:var(--shadow)}.slider::-moz-range-thumb{width:32px;height:32px;border-radius:50%;background:#fff;border:4px solid var(--acc, var(--c-li))}.ticks{display:flex;justify-content:space-between;padding:0 14px;color:var(--muted);font-size:var(--fs-small);margin-top:calc(var(--s-1) * -1)}@media(orientation:portrait){#panel,.panel-col{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.8fr);grid-template-rows:auto auto minmax(0,1fr);align-items:stretch}#controls,#ray-panel{grid-column:1 / -1}}.term{appearance:none;-webkit-appearance:none;border:0;margin:0;padding:0 .06em;background:transparent;font:inherit;cursor:pointer;border-radius:.22em;transition:background .2s,transform .2s,box-shadow .2s}.term.on{background:#16202e14;box-shadow:0 0 0 .08em currentColor;transform:translateY(-.04em) scale(1.08)}@supports (background: color-mix(in srgb,red 10%,white)){.term.on{background:color-mix(in srgb,currentColor 14%,transparent)}}.op{color:var(--muted)}#photon-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#photon-btn{position:absolute;top:var(--s-4);right:var(--s-4);min-height:var(--tap);padding:0 var(--s-5);border:0;border-radius:999px;background:#fffffff2;color:var(--ink);font:700 var(--fs-body) / 1 inherit;font-family:inherit;box-shadow:var(--shadow);cursor:pointer}#photon-btn.on{background:#ffd45e;box-shadow:0 0 0 4px #ffd45e73,var(--shadow)}#photon-btn:active{transform:scale(.97)}#viewport.photon-mode #view{cursor:crosshair}.lamp-row{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.swatches{display:flex;gap:2px}.swatch{appearance:none;-webkit-appearance:none;width:36px;height:var(--tap);padding:0;border:0;background:transparent;cursor:pointer;position:relative}.swatch:before{content:"";position:absolute;inset:9px 3px;border-radius:50%;background:var(--sw);border:3px solid #fff;box-shadow:0 0 0 1px var(--line)}.swatch.on:before{box-shadow:0 0 0 3px var(--c-le)}.lamp-row .slider{flex:1 1 90px;min-width:90px;width:auto}.slider.le{--acc: var(--c-le)}@media(orientation:landscape)and (max-height:860px){.station{gap:var(--s-3)}#tabs{margin-top:var(--s-3)}#app{padding-top:calc(var(--s-3) + var(--safe-t));padding-bottom:calc(var(--s-3) + var(--safe-b))}#panel,.panel-col{gap:var(--s-3)}#panel>section,#panel>header{padding:var(--s-3) var(--s-4)}}@media(orientation:portrait)and (max-height:1100px){#panel,.panel-col{gap:var(--s-3)}#panel>section,#panel>header{padding:var(--s-3) var(--s-4)}.station{gap:var(--s-3);grid-template-rows:minmax(0,53fr) minmax(0,47fr)}#tabs{margin-top:var(--s-3)}}.sw{display:inline-block;width:1em;height:1em;margin:0 .15em -.15em 0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}#explain small{font-size:.9em;opacity:.8}#photon-tools{position:absolute;top:var(--s-4);left:var(--s-4);display:none;flex-direction:column;align-items:flex-start;gap:var(--s-2)}#viewport.photon-mode #photon-tools{display:flex}.pill{min-height:var(--tap);padding:0 var(--s-4);border:0;border-radius:999px;background:#ffffffeb;color:var(--ink);font:700 var(--fs-small) / 1 inherit;font-family:inherit;box-shadow:var(--shadow);cursor:pointer}.pill.on{background:#ffd45e}.pill:active{transform:scale(.97)}#fp-frame{position:absolute;right:var(--s-4);top:calc(var(--s-4) + var(--tap) + var(--s-3));width:clamp(170px,26%,300px);aspect-ratio:4 / 3;border:3px solid #fff;border-radius:14px;box-shadow:0 0 0 2px #00000040,var(--shadow);pointer-events:none}#fp-frame[hidden]{display:none}#fp-frame span{position:absolute;left:8px;top:6px;font:700 12px/1 system-ui,sans-serif;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.9)}body.idle #explain{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);font-size:calc(var(--fs-small) * 1.7);line-height:1.2;font-weight:700;color:var(--ink);border-left-color:var(--c-li)}body.idle #explain strong{color:var(--ink)}.idle-tag{flex:none;padding:6px 14px;border-radius:999px;background:var(--c-li);color:#fff;font-size:var(--fs-small);font-weight:650;white-space:nowrap;animation:idle-pulse 1.6s ease-in-out infinite}@keyframes idle-pulse{50%{transform:scale(1.07);opacity:.85}}.era-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-2)}.era-year{font-size:calc(var(--fs-h1) * 1.4);font-weight:800;line-height:1;letter-spacing:-.02em}.era-name{font-size:var(--fs-body);font-weight:650;color:var(--muted);text-align:right}.era-ticks{display:flex;justify-content:space-between;padding:0 14px;color:var(--muted);font-size:var(--fs-small);font-weight:650}.viewport-slot:not(#slot-light) #photon-btn,.viewport-slot:not(#slot-light) #photon-tools,.viewport-slot:not(#slot-light) #photon-overlay,.viewport-slot:not(#slot-light) #fp-frame{display:none!important}@media(orientation:portrait){.station.compact{grid-template-rows:minmax(0,1fr) auto}}#budget-controls{display:flex;flex-direction:column;gap:var(--s-3)}.bud-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3)}.bud-ms{font-size:calc(var(--fs-h1) * 1.4);font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.bud-ms small{font-size:var(--fs-body);font-weight:650;color:var(--muted);margin-left:var(--s-2);letter-spacing:0}.bud-fps{padding:6px 14px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:800;font-size:var(--fs-body);font-variant-numeric:tabular-nums}.bud-fps.over{background:#fee2e2;color:#991b1b}.bud-bar{position:relative;height:16px;border-radius:8px;background:var(--line);overflow:visible}.bud-fill{height:100%;border-radius:8px;background:#16a34a;width:0;transition:width .2s,background .2s}.bud-fill.over{background:#dc2626}.bud-mark{position:absolute;top:-5px;bottom:-5px;width:3px;margin-left:-1px;border-radius:2px;background:var(--ink)}.feat-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2)}.feat{min-height:52px;padding:6px var(--s-3);border:2px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:var(--fs-small);font-weight:700;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:2px;cursor:pointer}.feat .feat-ms{font-weight:650;color:var(--muted);font-variant-numeric:tabular-nums}.feat.on{border-color:var(--c-fr);background:#eff4ff}.feat.on .feat-ms{color:var(--c-fr)}.feat:disabled{opacity:.4;cursor:default}.feat[data-f=gi]{grid-column:1 / -1}.feat:active:not(:disabled){transform:scale(.98)}.tier-row{display:flex;gap:var(--s-2)}.tier{flex:1;min-height:var(--tap);border:2px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:var(--fs-small);font-weight:700;cursor:pointer}.tier.on{background:var(--ink);border-color:var(--ink);color:#fff}.bud-score{display:flex;justify-content:space-between;font-size:var(--fs-body);font-weight:650;color:var(--muted)}.bud-score b{color:var(--ink);font-size:calc(var(--fs-body) * 1.3);font-variant-numeric:tabular-nums}.bud-score i{color:#d97706;font-style:normal}.bud-motion{width:100%;height:44px;display:block}@media(orientation:portrait){#budget-controls .feat-grid{grid-template-columns:repeat(3,1fr)}#budget-controls{gap:var(--s-2)}}@media(orientation:landscape)and (max-height:860px){#budget-controls{gap:var(--s-2)}.feat{min-height:44px;padding:3px 10px}.tier{min-height:42px}.bud-ms{font-size:calc(var(--fs-h1) * 1.1)}.bud-motion{height:34px}}@media(orientation:portrait){.panel-col:not(#panel)>section{grid-column:1 / -1}}.lvl-actions{display:flex;gap:var(--s-2)}.lvl-actions .btn{flex:1;margin-left:0;padding:0 var(--s-3)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn:disabled{opacity:.35;cursor:default}#bench-overlay{position:absolute;inset:0;width:100%;height:100%;z-index:5;display:block;touch-action:none}.chan-dots{display:flex;gap:var(--s-3);margin:var(--s-2) 0 var(--s-3)}.chan-dots i{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);background:transparent;transition:background .2s,box-shadow .2s}.chan-dots i.on{box-shadow:0 0 12px var(--cc);background:var(--cc);border-color:var(--cc)}.fluid-stage{position:relative;flex:1 1 0;min-height:0;background:linear-gradient(#f7fafc,#e7edf3)}#fluid-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#fluid-controls{display:flex;flex-direction:column;gap:var(--s-3)}#fluid-controls .seg{grid-template-columns:repeat(3,1fr)}#pick-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.viewport-slot:not(#slot-light) #pick-overlay{display:none!important}#stage{position:relative}#pick-bar{position:absolute;left:0;right:0;bottom:0;height:calc(var(--fs-small) * 1.35 * 2 + var(--s-3) * 2);display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3) 0 var(--s-4);background:var(--surface);border-left:6px solid var(--c-fr)}#pick-bar[hidden]{display:none}#explain.covered{visibility:hidden}#pick-bar .pick-seg{flex:1;display:flex}#pick-bar .pick-seg .seg-btn{flex:1 1 0;min-height:36px}#pick-bar .pick-seg .seg-btn[hidden]{display:none}.pick-close{flex:none;width:36px;height:36px;border:0;border-radius:50%;background:var(--bg);color:var(--ink);font-size:22px;line-height:1;cursor:pointer}.term-tip{position:fixed;z-index:50;transform:translate(-50%);padding:5px 10px;border-radius:8px;background:var(--ink);color:#fff;font-size:var(--fs-small);font-weight:600;line-height:1.2;white-space:nowrap;pointer-events:none;box-shadow:0 0 0 2px var(--tc, transparent),var(--shadow)}.term-tip:before{content:"";position:absolute;left:calc(50% + var(--arrow, 0px));top:-5px;width:10px;height:10px;background:var(--ink);transform:translate(-50%) rotate(45deg)}.term-tip[hidden]{display:none}.mis-labels{position:absolute;inset:0;z-index:3;display:grid;grid-template-rows:repeat(3,1fr);pointer-events:none}.mis-labels span{align-self:start;justify-self:start;margin:8px;padding:3px 9px;border-radius:6px;background:#ffffffe6;color:var(--ink);font-weight:650;font-size:var(--fs-small)}.mis-labels[hidden]{display:none}#mis-controls{display:flex;flex-direction:column;gap:var(--s-3)}#mis-controls .seg{grid-template-columns:repeat(4,1fr)}#stage-stats{flex:none;display:flex;align-items:center;gap:var(--s-4)}#ray-panel[hidden]{display:none}#ray-panel{flex:1 1 0;min-height:0;overflow:hidden;display:flex;flex-direction:column}#panel>#ray-panel{padding-bottom:var(--s-3)}.ray-sketch{display:block;flex:1 1 0;min-height:0;width:100%;max-height:190px}.conv{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:var(--s-2);height:44px}#conv{flex:1 1 0;min-width:60px;height:100%;display:block}.conv-lab{font-size:var(--fs-small);color:var(--muted);white-space:nowrap}.conv-lab b{color:var(--c-int);font-variant-numeric:tabular-nums}@media(orientation:portrait){#controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:var(--s-5);row-gap:var(--s-3);align-content:start}#controls>#stage-stats,#controls>.ctl-row,#controls>.seg{grid-column:1 / -1}#controls>.ctl-block:not(.cam-ctl):not(.lamp){grid-column:1;grid-row:4}#controls>.ctl-block.lamp{grid-column:1;grid-row:5}#controls>.cam-ctl{grid-column:2;grid-row:4 / span 2}}@media(orientation:landscape)and (max-height:860px){#controls .seg-btn,#controls .toggle{min-height:30px}.cam-row,.cam-row .slider{height:30px}#controls{gap:var(--s-2)}}body.render-only #app{padding:0;grid-template-rows:minmax(0,1fr)}body.render-only .station{gap:0;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"stage"}body.render-only #stage{border-radius:0;box-shadow:none}body.render-only #panel,body.render-only #stage-stats,body.render-only #explain,body.render-only #tabs,body.render-only #photon-btn,body.render-only #photon-tools,body.render-only #photon-overlay,body.render-only #fp-frame,body.render-only #pick-overlay{display:none!important}body.render-only #view{pointer-events:none}
