:root{font-family:var(--ns-font-family);color:var(--ns-text-main);background:var(--ns-bg-main);font-synthesis:none;--ray-incoming: #ffb34c;--ray-model: #54c8ff;--ray-prediction: #f7e36d;--geometry-normal: #9de4b8;--bench-bg: #102b3b}*{box-sizing:border-box}html{min-width:320px}body{margin:0;background:var(--ns-bg-main)}[hidden]{display:none!important}button,a,input,textarea{touch-action:manipulation}button,input,textarea{font:inherit}button{min-height:44px;min-width:44px;padding:8px 14px;border:1px solid var(--ns-border-glass-hover);border-radius:var(--ns-radius-md);background:var(--ns-bg-surface);color:var(--ns-text-main);cursor:pointer;font-size:var(--ns-font-lg);font-weight:650}button:hover{background:var(--ns-bg-glass-hover)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,.table-wrap:focus-visible{outline:3px solid var(--ns-accent);outline-offset:3px}header{height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 3%;border-bottom:1px solid var(--ns-border-glass);background:var(--ns-bg-surface);position:relative;z-index:5}header a{color:var(--ns-primary);font-size:var(--ns-font-lg);font-weight:850;letter-spacing:1.5px;text-decoration:none}header a span{color:var(--ns-text-muted);font-weight:500}header>span{color:var(--ns-text-muted);font-size:var(--ns-font-md);font-weight:700}.header-actions{display:flex;gap:8px}.header-actions button{min-height:44px;padding-block:6px}main{width:min(1500px,100%);margin:0 auto;padding:18px 3% 0}.intro{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.eyebrow{margin:0;color:var(--ns-primary);font-size:var(--ns-font-sm);font-weight:800;letter-spacing:1.2px}h1{margin:5px 0 0;color:var(--ns-text-title);font-size:clamp(28px,3vw,42px);line-height:1.05}h1 em{color:var(--ns-primary);font-style:normal}h2{margin:7px 0 16px;color:var(--ns-text-title);font-size:var(--ns-font-xl);line-height:1.2}.mode-switch,.scenario-switch{display:flex;gap:8px;flex-wrap:wrap}.mode-button.is-active,.scenario-switch .is-active{color:#fff;background:var(--ns-primary);border-color:var(--ns-primary)}.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(350px,390px);gap:20px;align-items:start}.bench{min-width:0;overflow:hidden;border-radius:var(--ns-radius-lg);background:var(--bench-bg);box-shadow:var(--ns-shadow-md);position:sticky;top:68px}.bench-title{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 16px;color:#e1edf2;font-size:var(--ns-font-sm);font-weight:800;letter-spacing:.7px}.bench-title strong{color:#fff;font-size:var(--ns-font-lg);letter-spacing:0;text-align:center}.bench-title button{background:#fff;color:#102b3b}svg{width:100%;height:auto;display:block}svg text{font-family:var(--ns-font-family);font-size:18px;text-anchor:middle;font-weight:650}.legend{min-height:50px;display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap;padding:6px 16px 12px;font-size:var(--ns-font-md);font-weight:700}.incoming-key{color:var(--ray-incoming)}.model-key{color:var(--ray-model)}.prediction-key{color:var(--ray-prediction)}.normal-key{color:var(--geometry-normal)}.controls{min-width:0;padding:20px;border:1px solid var(--ns-border-glass);border-radius:var(--ns-radius-lg);background:var(--ns-bg-surface);box-shadow:var(--ns-shadow-sm)}.controls section{min-width:0}.slider-label{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;color:var(--ns-text-main);font-size:var(--ns-font-lg);font-weight:750}output{color:var(--ns-primary);font-size:var(--ns-font-2xl);font-weight:850}input[type=range]{width:100%;height:44px;margin:0;accent-color:var(--ns-primary);cursor:pointer}.scale{display:flex;justify-content:space-between;color:var(--ns-text-muted);font-size:var(--ns-font-md)}.presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:8px 0}.presets button{padding-inline:4px}.hint{margin:6px 0 10px;color:var(--ns-text-muted);font-size:var(--ns-font-md);line-height:1.45}.readings{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;padding:12px 8px;border-radius:var(--ns-radius-md);background:#eef4ff;text-align:center;font-size:var(--ns-font-md)}.readings strong{display:block;margin-top:4px;color:var(--ns-primary);font-size:var(--ns-font-2xl)}.feedback{min-height:48px;margin:10px 0;color:var(--ns-text-main);font-size:var(--ns-font-lg);line-height:1.4}.actions,.step-buttons{display:flex;gap:8px;margin-top:10px}.actions>*,.step-buttons>*{flex:1}.primary{color:#fff;background:var(--ns-primary);border-color:var(--ns-primary)}.primary:hover{background:var(--ns-primary-hover)}.scenario-switch{margin-bottom:10px}.scenario-switch button{flex:1 1 140px}.prompt{margin:8px 0;padding:12px;border-left:5px solid var(--ns-accent);border-radius:var(--ns-radius-sm);background:#fff6e9;color:var(--ns-text-title);font-size:var(--ns-font-lg);font-weight:700;line-height:1.4}.reference-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 0;padding:0;border:0}.reference-choice legend{width:100%;margin-bottom:8px;color:var(--ns-text-main);font-size:var(--ns-font-lg);font-weight:750}.reference-choice label,.check{min-height:44px;display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--ns-border-glass);border-radius:var(--ns-radius-sm);font-size:var(--ns-font-lg);cursor:pointer}.reference-choice input,.check input{width:22px;height:22px;flex:0 0 auto;accent-color:var(--ns-primary)}.guided-result{margin-top:12px;padding-top:12px;border-top:2px solid var(--ns-border-glass)}.display-options{display:grid;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--ns-border-glass)}.explanation-label{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;font-size:var(--ns-font-lg);font-weight:750}.explanation-label span{color:var(--ns-text-muted);font-size:var(--ns-font-md);font-weight:500}textarea{width:100%;resize:vertical;min-height:88px;padding:10px;border:1px solid var(--ns-border-glass-hover);border-radius:var(--ns-radius-sm);color:var(--ns-text-main);font-size:var(--ns-font-lg);line-height:1.4}.secondary-actions{margin-top:16px}#error{color:#b42318;font-size:var(--ns-font-lg);font-weight:700}.notebook{margin-top:20px;padding:20px;border:1px solid var(--ns-border-glass);border-radius:var(--ns-radius-lg);background:var(--ns-bg-surface)}.notebook-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.notebook-heading h2{margin-bottom:0}#table-status{color:var(--ns-text-muted);font-size:var(--ns-font-lg)}.table-wrap{overflow-x:auto;border:1px solid var(--ns-border-glass);border-radius:var(--ns-radius-sm)}table{width:100%;border-collapse:collapse;font-size:var(--ns-font-lg);text-align:left}th,td{padding:13px 12px;border-bottom:1px solid var(--ns-border-glass);white-space:nowrap}th{color:var(--ns-text-title);background:var(--ns-bg-glass-hover)}footer{padding:22px 0 28px;color:var(--ns-text-muted);font-size:var(--ns-font-lg);line-height:1.5}dialog{width:min(620px,calc(100% - 28px));max-height:calc(100vh - 28px);overflow:auto;padding:24px;border:0;border-radius:var(--ns-radius-lg);color:var(--ns-text-main);font-size:var(--ns-font-lg);line-height:1.5;box-shadow:var(--ns-shadow-lg)}dialog::backdrop{background:#0f172aad}dialog form{display:flex;justify-content:flex-end}.focus-mode{overflow:hidden}.focus-mode .bench{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;width:100vw;height:100vh;display:grid;grid-template-rows:52px minmax(0,1fr) auto;border-radius:0}.focus-mode #focus-prompt{display:block!important}.focus-mode .bench-title>span{display:none}.focus-mode #scene{width:100%;height:100%;min-height:0}.focus-mode .legend{position:absolute;left:50%;bottom:10px;transform:translate(-50%);border-radius:var(--ns-radius-full);background:#102b3be6}@media(max-width:1050px){main{padding-inline:2%}.workspace{grid-template-columns:minmax(0,1fr) 360px;gap:14px}.controls{padding:16px}.legend{gap:12px;font-size:var(--ns-font-sm)}}@media(max-width:820px){header>span{display:none}.intro{align-items:flex-start;flex-direction:column}.workspace{grid-template-columns:1fr}.bench{position:static}.controls{padding:18px}}@media(max-width:520px){header{padding-inline:10px}header a{font-size:var(--ns-font-md);letter-spacing:.5px}header a span{display:none}.header-actions{gap:4px}.header-actions button{padding-inline:6px;font-size:var(--ns-font-lg)}main{padding:12px 10px 0}.intro{min-height:0;gap:12px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;width:100%}.mode-switch button{padding-inline:7px}.bench-title{font-size:var(--ns-font-xs)}.legend{padding-inline:8px}.reference-choice{grid-template-columns:1fr}.actions{flex-direction:column}.presets{grid-template-columns:repeat(3,1fr)}.notebook{padding:14px 10px}.notebook-heading{align-items:flex-start}h1{font-size:28px}}#workshop-view{--workshop-ink: #13233b;--workshop-blue: #1858a8;--workshop-blue-deep: #123f7c;--workshop-cyan: #11a8c5;--workshop-orange: #e77d22;--workshop-gold: #f3a62f;--workshop-green: #16815e;--workshop-line: #c8d7e6;color:var(--workshop-ink)}.workshop-hero{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px}.workshop-hero h1{margin-top:6px}.app-view-switch,.workshop-mode-switch{display:flex;gap:8px;flex-wrap:wrap}.app-view-switch .is-active,.workshop-mode-switch .is-active,#workshop-analysis.is-active{color:#fff;border-color:var(--workshop-blue);background:var(--workshop-blue)}.workshop-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,350px);gap:18px;align-items:start}.workshop-stage{min-width:0;overflow:hidden;border:1px solid var(--workshop-line);border-radius:24px;background:#f5f9fd;box-shadow:0 18px 48px #173a5c21;position:sticky;top:68px}.workshop-stagebar{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 16px;border-bottom:1px solid var(--workshop-line);background:#fffffff0}.workshop-stagebar>div:first-child{min-width:0;display:grid;gap:3px}.workshop-stagebar span{color:var(--workshop-blue);font-size:13px;font-weight:850;letter-spacing:.08em}.workshop-stagebar strong{color:var(--workshop-ink);font-size:18px;line-height:1.3}.workshop-stage-actions{display:flex;gap:7px;flex:0 0 auto}.workshop-stage-actions button{font-size:18px}#workshop-scene{width:100%;height:auto;display:block;color:var(--workshop-blue);touch-action:none;-webkit-user-select:none;user-select:none}.workshop-statusbar{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 18px 11px;border-top:1px solid var(--workshop-line);background:#fff}.workshop-statusbar p{margin:0;color:var(--workshop-ink);font-size:18px;font-weight:760;line-height:1.35}.workshop-statusbar span{flex:0 0 auto;color:#41566e;font-size:15px;font-weight:700}.workshop-stage.has-success .workshop-statusbar{background:#eefbf5;border-top-color:#9ddcc3}.workshop-tools{padding:16px;border:1px solid var(--workshop-line);border-radius:20px;background:#fff;box-shadow:0 10px 32px #173a5c17}.workshop-mode-switch{display:grid;grid-template-columns:1fr 1fr}.workshop-mode-switch button{padding-inline:8px}.workshop-brief{margin:13px 0;padding:12px 13px;border-radius:14px;background:#edf5ff}.workshop-brief span{color:var(--workshop-blue-deep);font-size:15px;font-weight:850}.workshop-brief p{margin:5px 0 0;color:#334b65;font-size:16px;line-height:1.4}.workshop-selection,.workshop-analysis-card{padding-top:14px;border-top:1px solid var(--workshop-line)}.workshop-section-title{display:grid;gap:3px}.workshop-section-title span{color:var(--workshop-blue);font-size:12px;font-weight:850;letter-spacing:.08em}.workshop-section-title strong{color:var(--workshop-ink);font-size:22px}.workshop-lock{min-height:24px;margin:8px 0;color:#4d6075;font-size:15px;line-height:1.35}.workshop-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.workshop-fields label{color:#334b65;font-size:15px;font-weight:750}.workshop-fields input{width:100%;min-height:44px;margin-top:4px;padding:7px 8px;border:1px solid #9db1c6;border-radius:10px;color:var(--workshop-ink);background:#fff;font-size:18px;font-weight:750}.workshop-fields input:disabled{color:#63768b;background:#edf1f5}.workshop-fine{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}.workshop-input-error{margin:8px 0 0;color:#a62b21;font-size:15px;font-weight:700}.workshop-analysis-card{margin-top:16px}.workshop-equation{margin:10px 0;color:var(--workshop-blue);font-size:34px;font-weight:900;text-align:center}.workshop-measures{display:grid;grid-template-columns:1fr 1fr;gap:8px}.workshop-measures div{padding:10px;border-radius:12px;background:#edf5ff;text-align:center}.workshop-measures span{display:block;color:#465d75;font-size:14px}.workshop-measures strong{display:block;margin-top:3px;color:var(--workshop-blue);font-size:28px}#workshop-analysis-copy{margin:9px 0 0;color:#334b65;font-size:16px;line-height:1.42}.workshop-shortcuts{margin:15px 0 0;color:#53687e;font-size:14px;line-height:1.45}.workshop-extra-tools{margin-top:16px;padding-top:14px;border-top:1px solid var(--workshop-line)}.workshop-extra-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:9px}.workshop-extra-actions button{min-width:0;padding-inline:6px;font-size:15px}.workshop-extra-tools p{margin:8px 0 0;color:#4d6075;font-size:15px}.workshop-object{outline:none}.workshop-object:focus-visible .workshop-source-halo,.workshop-object:focus-visible .workshop-mirror-back,.workshop-object:focus-visible .workshop-sensor-brackets,.workshop-object.is-selected .workshop-source-halo,.workshop-object.is-selected .workshop-mirror-back,.workshop-object.is-selected .workshop-sensor-brackets{stroke:#0f5fc2;stroke-width:6}.workshop-object-hit,.workshop-handle-hit{fill:transparent;stroke:none;pointer-events:all;cursor:grab}.workshop-object-hit:active,.workshop-handle-hit:active{cursor:grabbing}.workshop-source-halo{fill:#dcecff;stroke:#8eadd0;stroke-width:3}.workshop-source-body{fill:#234466;stroke:#122d49;stroke-width:3}.workshop-source-lens{fill:#f3a62f;stroke:#fff0bb;stroke-width:3}.workshop-heading-guide{stroke:#54718f;stroke-width:3;stroke-dasharray:6 6}.workshop-rotate-handle{fill:#fff;stroke:#1858a8;stroke-width:5}.workshop-mirror-base{fill:#7890a8;opacity:.34}.workshop-mirror-stand{stroke:#526a82;stroke-width:9}.workshop-mirror-back{fill:#53687d;stroke:#273d53;stroke-width:3}.workshop-mirror-face{stroke:#dff7ff;stroke-width:9;stroke-linecap:round}.workshop-object-label{fill:#1e344c;font-size:17px;font-weight:900;letter-spacing:.08em;text-anchor:middle}.workshop-lock-mark{font-size:22px}.workshop-sensor-pulse{fill:#cfdbe8;opacity:.26}.workshop-sensor-brackets{fill:none;stroke:#365d86;stroke-width:7;stroke-linecap:round}.workshop-sensor-core{fill:#fff;stroke:#365d86;stroke-width:5}.workshop-sensor-dot{fill:#b9c7d5}.workshop-target.is-active .workshop-sensor-pulse{fill:#39d79b;opacity:.38;filter:url(#sensor-glow)}.workshop-target.is-active .workshop-sensor-brackets{stroke:#16815e}.workshop-target.is-active .workshop-sensor-core{fill:#ddf9ed;stroke:#16815e}.workshop-target.is-active .workshop-sensor-dot{fill:#16815e}.workshop-ray{stroke-width:7;stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:none}.workshop-ray.is-incident{stroke:#e77d22}.workshop-ray.is-reflected{stroke:#098aa7}.workshop-ray-node{fill:#fff;stroke:#234466;stroke-width:3;vector-effect:non-scaling-stroke}.workshop-ray-ghost{fill:none;stroke-width:4;stroke-dasharray:11 8;opacity:.54;vector-effect:non-scaling-stroke;pointer-events:none}.workshop-ray-ghost.is-a{stroke:#8552a9}.workshop-ray-ghost.is-b{stroke:#16815e}.workshop-ghost-label-bg{stroke:#fff;stroke-width:3}.workshop-ghost-label-bg.is-a{fill:#8552a9}.workshop-ghost-label-bg.is-b{fill:#16815e}.workshop-ghost-label{fill:#fff;font-size:19px;font-weight:900;text-anchor:middle;pointer-events:none}.workshop-normal{stroke:#16815e;stroke-width:3;stroke-dasharray:8 7;vector-effect:non-scaling-stroke}.workshop-angle-arc{fill:none;stroke-width:5;vector-effect:non-scaling-stroke}.workshop-angle-arc.is-incident{stroke:#e77d22}.workshop-angle-arc.is-reflected{stroke:#098aa7}.workshop-angle-label{font-size:26px;font-weight:900;text-anchor:middle}.workshop-angle-label.is-incident{fill:#b8570e}.workshop-angle-label.is-reflected{fill:#08728a}.workshop-hit-point{fill:#fff;stroke:#13233b;stroke-width:3}.workshop-obstacle polygon{fill:#d6dde5;stroke:#596b7d;stroke-width:4}.workshop-obstacle-label{fill:#35485c;font-size:20px;font-weight:900;text-anchor:middle;dominant-baseline:middle;letter-spacing:.08em}.legacy-return{margin:0 0 12px}.dialog-sticky{position:sticky;top:-24px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-24px -24px 10px;padding:18px 24px 10px;background:#fff;z-index:1}.dialog-sticky h2{margin:0}.dialog-close{flex:0 0 auto;border-radius:999px}.workshop-focus-mode{overflow:hidden}.workshop-focus-mode #workshop-view{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;padding:0;background:#eef4f9}.workshop-focus-mode .workshop-hero{display:none}.workshop-focus-mode .workshop-layout{height:100vh;display:grid;grid-template-columns:minmax(0,1fr);gap:0}.workshop-focus-mode .workshop-stage{position:static;height:100vh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;border:0;border-radius:0}.workshop-focus-mode #workshop-scene{width:100%;height:100%;min-height:0}.workshop-focus-mode .workshop-tools{display:none}.workshop-focus-mode.workshop-tools-open .workshop-layout{grid-template-columns:minmax(0,1fr) 350px}.workshop-focus-mode.workshop-tools-open .workshop-tools{display:block;height:100vh;overflow:auto;border-radius:0;box-shadow:-8px 0 28px #0d233b29}@media(max-width:1050px){.workshop-layout{grid-template-columns:minmax(0,1fr) 310px;gap:12px}.workshop-stagebar strong{font-size:16px}.workshop-stage-actions button{padding-inline:9px}.workshop-tools{padding:13px}}@media(max-width:820px){.workshop-hero{align-items:flex-start;flex-direction:column}.app-view-switch{width:100%;display:grid;grid-template-columns:1fr 1fr}.workshop-layout{grid-template-columns:1fr}.workshop-stage{position:static}.workshop-tools{padding:15px}.workshop-focus-mode.workshop-tools-open .workshop-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,58vh) minmax(0,42vh)}.workshop-focus-mode.workshop-tools-open .workshop-stage{height:58vh}.workshop-focus-mode.workshop-tools-open .workshop-tools{height:42vh;width:100%}}@media(max-width:520px){.workshop-hero{min-height:0;margin-bottom:10px}.workshop-stage{border-radius:16px}.workshop-stagebar{min-height:0;align-items:flex-start;flex-direction:column;padding:10px}.workshop-stage-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.workshop-stage-actions button{min-width:0}.workshop-statusbar{align-items:flex-start;flex-direction:column;gap:4px;padding:9px 12px}.workshop-statusbar span{font-size:14px}.workshop-fields{grid-template-columns:1fr 1fr}#workshop-angle-label{grid-column:1 / -1}.workshop-focus-mode.workshop-tools-open .workshop-layout{grid-template-rows:minmax(0,52vh) minmax(0,48vh)}.workshop-focus-mode.workshop-tools-open .workshop-stage{height:52vh}.workshop-focus-mode.workshop-tools-open .workshop-tools{height:48vh}}@media(prefers-reduced-motion:reduce){.workshop-sensor-pulse{filter:none!important}}:root{--ns-star-orange: #F2994A;--ns-star-orange-hover: #EB8C3A;--ns-tech-blue: #1E40AF;--ns-tech-blue-hover: #1D4ED8;--ns-primary: #1E40AF;--ns-primary-hover: #1D4ED8;--ns-accent: #F2994A;--ns-accent-hover: #EB8C3A;--ns-success: #10B981;--ns-danger: #EF4444;--ns-info: #0284C7;--ns-bg-main: #F8FAFC;--ns-bg-surface: #FFFFFF;--ns-bg-glass: rgba(255, 255, 255, .88);--ns-bg-glass-card: rgba(255, 255, 255, .95);--ns-bg-glass-hover: #F1F5F9;--ns-border-glass: #E2E8F0;--ns-border-glass-hover: #CBD5E1;--ns-border-brand-glow: rgba(242, 153, 74, .5);--ns-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--ns-text-title: #0F172A;--ns-text-main: #1E293B;--ns-text-muted: #475569;--ns-text-dim: #64748B;--ns-font-xs: 12px;--ns-font-sm: 14px;--ns-font-md: 16px;--ns-font-lg: 18px;--ns-font-xl: 22px;--ns-font-2xl: 28px;--ns-font-3xl: 36px;--ns-radius-sm: 8px;--ns-radius-md: 12px;--ns-radius-lg: 18px;--ns-radius-xl: 26px;--ns-radius-full: 9999px;--ns-shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--ns-shadow-md: 0 4px 16px rgba(0, 0, 0, .08);--ns-shadow-lg: 0 10px 30px rgba(0, 0, 0, .12);--ns-shadow-brand: 0 4px 20px rgba(242, 153, 74, .25);--ns-backdrop-blur: blur(12px);--ns-transition-fast: .15s ease;--ns-transition-normal: .25s ease}.p2-discovery-link{color:#a6dfea;font-size:12px;white-space:nowrap}body.p2-active{margin:0;background:#071425;color:#eef6ff;font-family:Inter,ui-sans-serif,system-ui,sans-serif;height:100vh;overflow:hidden}body.p2-active>header{display:none}body.p2-active #app-main{width:100%;max-width:none;margin:0;padding:0;height:100vh;overflow:hidden}#p2-view[hidden],#workshop-view[hidden],#legacy-view[hidden]{display:none!important}#p2-view,#p2-view *{box-sizing:border-box}#p2-view{height:100vh;min-height:100vh;overflow:hidden;background:radial-gradient(circle at 60% -8%,#18365a 0,transparent 38%),#071425;color:#eef6ff}#p2-view button,#p2-view input{font:inherit}#p2-view button{min-height:40px;border:1px solid #35516b;border-radius:9px;background:#132a42;color:#dbeafa;padding:7px 12px;cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .18s ease}#p2-view button:hover{background:#214463;border-color:#69c5df}#p2-view button:active{transform:translateY(1px)}#p2-view button.is-active{background:#19556b;border-color:#76e0e6;color:#fff;box-shadow:inset 0 0 0 1px #35889b}#p2-view button:focus-visible,#p2-view input:focus-visible,#p2-view svg:focus-visible{outline:3px solid #f8cb76;outline-offset:2px}#p2-view input[type=number]{width:100%;min-height:40px;padding:6px 8px;border:1px solid #3d5d76;border-radius:8px;background:#0e2238;color:#fff}#p2-view input[type=range]{width:100%;min-height:38px;accent-color:#69cddd;cursor:pointer}.p2-shell{max-width:1720px;height:100vh;margin:0 auto;padding:0 18px 10px;display:flex;flex-direction:column;overflow:hidden}.p2-shell h1,.p2-shell h2,.p2-shell h3,.p2-shell strong{color:#eef6ff}.p2-topbar{height:52px;min-height:52px;max-height:52px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #28415b;background:transparent;color:#eef6ff;padding:0;max-width:none}.p2-brand{display:flex;align-items:center;gap:9px}.p2-portal-link{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1px solid #35516b;background:#132a42;color:#dbeafa;text-decoration:none;transition:background .18s}.p2-portal-link:hover{background:#214463;border-color:#69c5df;color:#fff}.p2-brand-text{display:flex;align-items:baseline;gap:6px}.p2-brand-logo{color:#74cfd9;letter-spacing:.12em;font-size:.8rem;font-weight:800}.p2-divider{color:#476582;font-weight:300}.p2-sim-title{font-size:1.02rem;letter-spacing:-.02em;font-weight:700;color:#eef6ff}.p2-badge{border:1px solid #547187;border-radius:999px;color:#b9dff1;padding:3px 8px;font-size:.68rem;font-weight:700;white-space:nowrap}.p2-nav{display:flex;gap:6px;align-items:center;margin:0 auto}.p2-nav button{white-space:nowrap;border-radius:999px!important;background:transparent!important;padding:7px 16px!important;min-height:36px!important;font-size:.82rem!important}.p2-nav button.is-active{background:#163e5b!important;color:#fff!important}.p2-top-actions{display:flex;align-items:center;gap:6px}.p2-top-actions button{min-height:36px!important;font-size:.8rem!important;padding:6px 12px!important}.p2-audio-wrap{position:relative}#p2-audio-btn{width:36px!important;height:36px!important;min-height:36px!important;padding:0!important;display:grid!important;place-items:center!important}.p2-audio-popover{position:absolute;top:calc(100% + 8px);right:0;width:280px;background:#10243a;border:1px solid #35516b;border-radius:12px;padding:12px;box-shadow:0 12px 32px #00000073;z-index:9999}.p2-audio-popover[hidden]{display:none!important}.p2-popover-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:.72rem;font-weight:800;color:#74cfd9;letter-spacing:.08em}.p2-popover-close{background:transparent!important;border:none!important;color:#9bb8cb!important;min-height:auto!important;padding:2px 6px!important;font-size:.85rem!important}.p2-popover-close:hover{color:#fff!important}.p2-main-grid{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;margin-top:8px}.p2-lab{min-width:0;height:100%;display:flex;flex-direction:column;min-height:0;border:1px solid #294b66;border-radius:18px;overflow:hidden;background:#0c1e33;box-shadow:0 16px 50px #02081150}.p2-lab-header{min-height:50px;display:flex;justify-content:space-between;align-items:center;padding:6px 14px;gap:12px;border-bottom:1px solid #294761;flex-shrink:0}.p2-lab-title-group{display:flex;flex-direction:column;gap:2px}.p2-lab-kicker-row{display:flex;align-items:center;gap:10px}.p2-lab-header small{color:#71d5d4;font-size:.65rem;letter-spacing:.14em;font-weight:800}.p2-stage-headline{color:#9db6c8;font-size:.74rem}.p2-lab-header h2{margin:0;font-size:1.15rem;letter-spacing:-.02em}.p2-stage-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.p2-stage-actions button{font-size:.76rem;min-height:36px!important;padding:6px 10px!important}.p2-stage-actions #p2-reveal{background:#266a68;color:#fff;border-color:#6bd7bd}.p2-stages{flex:1;min-height:0;padding:8px;display:flex;flex-direction:column}.p2-three{flex:1;min-height:0;height:100%;border-radius:12px;overflow:hidden;background:#0b1729;position:relative;border:1px solid #36556e}.p2-three canvas{display:block;width:100%;height:100%;touch-action:none}.p2-three-labels{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.p2-three-label{position:absolute;transform:translate(-50%,-50%);padding:3px 7px;border:1px solid #6c92b2;border-radius:7px;background:#0b1d32d9;color:#eaf6ff;white-space:nowrap;font-size:.72rem;font-weight:700}.p2-three-label[hidden]{display:none}.p2-unavailable{color:#c8dced;padding:26px}.p2-diagram{flex:1;min-height:0;height:100%;border:1px solid #36556e;border-radius:12px;overflow:hidden;background:#0d1c31;display:flex;flex-direction:column}.p2-stages .p2-diagram{display:none}.p2-diagram-primary .p2-stages .p2-diagram{display:flex}.p2-diagram-caption{min-height:30px;display:flex;justify-content:space-between;align-items:center;padding:4px 12px;color:#9fc5d9;font-size:.64rem;font-weight:800;letter-spacing:.1em;border-bottom:1px solid #35516b;flex-shrink:0}.p2-diagram svg{display:block;width:100%;flex:1;min-height:0;height:100%;touch-action:none;cursor:crosshair}.p2-diagram svg text{text-anchor:start}.p2-diagram .p2-drag-zone,.p2-diagram .p2-rotate-handle{cursor:grab}.p2-diagram .p2-drag-zone:active,.p2-diagram .p2-rotate-handle:active{cursor:grabbing}.p2-diagram-primary .p2-three{display:none}.p2-result{display:flex;align-items:center;gap:12px;border-top:1px solid #294761;padding:8px 14px;background:#112940;flex-shrink:0;min-height:48px}.p2-result.is-success{background:#153d43}.p2-result-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:#194b61;color:#79ddef;font-size:1.15rem;flex:0 0 auto}.p2-result strong{font-size:.92rem}.p2-result p{margin:2px 0 0;color:#bed1e0;font-size:.78rem;line-height:1.35}#p2-result-data{margin-left:auto;font-weight:800;color:#8bf0cb;font-size:.77rem;white-space:nowrap;text-align:right}.p2-sidebar{height:100%;min-height:0;overflow-y:auto;scrollbar-color:#3d6d84 transparent;padding-right:2px}.p2-tool-card{padding:18px;margin-bottom:12px;background:#10243a;border:1px solid #2f4e67;border-radius:16px}.p2-tool-card h3{margin:0 0 12px;font-size:.9rem;letter-spacing:.01em}.p2-tool-card p{line-height:1.5}.p2-topic-grid,.p2-step-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.p2-topic-grid button,.p2-step-grid button{font-size:.76rem!important;text-align:left}.p2-prompt{color:#d1e2ee;margin:11px 0 0;font-size:.82rem}.p2-control-row{margin-top:13px}.p2-control-row>span{display:block;color:#9bb8cb;font-size:.73rem;margin-bottom:6px}.p2-control-row>div{display:flex;flex-wrap:wrap;gap:6px}.p2-control-row button{font-size:.74rem;padding:7px 9px!important}.p2-numbers,.p2-control-row>div:has(.p2-number){display:grid!important;grid-template-columns:1fr 1fr;gap:8px}.p2-detent-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.p2-detent-grid>div{border:1px solid #3b5a72;border-radius:10px;padding:7px}.p2-detent-grid span{display:block;color:#b4d0df;font-size:.72rem;margin-bottom:5px}.p2-detent-grid button{min-height:36px!important;padding:5px 7px!important;margin-right:4px;font-size:.7rem!important}.p2-number{display:block;color:#9ebdce;font-size:.69rem;line-height:1.4;min-width:0}.p2-number input{margin-top:4px}.p2-inline-actions{display:flex;gap:6px;flex-wrap:wrap}.p2-inline-actions button{font-size:.75rem;padding:7px 9px!important}.p2-field-hint{color:#91aec0;font-size:.72rem;margin:10px 0 0}.p2-teacher-note{color:#e2eecb;font-size:.81rem;margin:0}.p2-pin-list{display:grid;gap:5px;margin-top:12px;color:#a5d9e2;font-size:.75rem}.p2-case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.p2-case-grid span{padding:7px 5px;border-radius:7px;text-align:center;font-size:.65rem;border:1px solid #476275}.p2-case-grid .is-pass{color:#a6f2d5;background:#164439}.p2-case-grid .is-fail{color:#ffd0b6;background:#42312d}.p2-lower{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin:18px 0}.p2-method{border:1px solid #294761;border-radius:13px;background:#0e2035;padding:15px}.p2-method span{display:block;color:#76cfd7;font-size:.67rem;font-weight:800;letter-spacing:.12em;margin-bottom:7px}.p2-method strong{display:block;font-size:.83rem}.p2-method p{color:#9db6c8;font-size:.75rem;line-height:1.5;margin:6px 0 0}.p2-footer{color:#83a1b3;font-size:.71rem;padding:5px 0}.p2-help{background:#11283e;color:#edf5fb;width:min(690px,calc(100vw - 30px));max-height:85vh;overflow:auto;border:1px solid #52738b;border-radius:18px;padding:0 20px 22px;line-height:1.6}.p2-help::backdrop{background:#020914bd}.p2-help-top{position:sticky;top:0;background:#11283e;display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #3f5d74}.p2-help h2{margin:0}.p2-help h2{color:#eef6ff}.p2-focus .p2-topbar{display:none}.p2-focus .p2-main-grid{margin-top:0}.p2-focus .p2-sidebar{max-height:100vh}body.p2-active,#p2-view{background:var(--ns-bg-main);color:var(--ns-text-main);font-family:var(--ns-font-family)}.p2-shell h1,.p2-shell h2,.p2-shell h3,.p2-shell strong{color:var(--ns-text-title)}#p2-view button{min-height:44px;background:var(--ns-bg-surface);color:var(--ns-text-main);border-color:var(--ns-border-glass-hover);border-radius:var(--ns-radius-md)}#p2-view button:hover{background:var(--ns-bg-glass-hover);border-color:var(--ns-primary)}#p2-view button.is-active{background:var(--ns-primary);border-color:var(--ns-primary);color:#fff;box-shadow:none}#p2-view button:disabled{opacity:.45;cursor:not-allowed}#p2-view input[type=number]{min-height:44px;background:var(--ns-bg-surface);color:var(--ns-text-main);border-color:var(--ns-border-glass-hover)}.p2-topbar{border-bottom-color:var(--ns-border-glass);color:var(--ns-text-main)}.p2-brand small,.p2-kicker,.p2-lab-header small{color:var(--ns-primary)}.p2-subject,.p2-heading p:last-child,.p2-prompt{color:var(--ns-text-muted)}.p2-top-actions button{color:var(--ns-text-main)!important}.p2-badge{color:var(--ns-primary);border-color:var(--ns-border-glass-hover)}.p2-nav button{border-radius:var(--ns-radius-full)!important}.p2-nav button.is-active{background:var(--ns-primary)!important;color:#fff}.p2-lab{background:var(--ns-bg-surface);border-color:var(--ns-border-glass);border-radius:var(--ns-radius-lg);box-shadow:var(--ns-shadow-md)}.p2-lab-header{border-bottom-color:var(--ns-border-glass)}.p2-stage-actions button{min-height:44px!important}.p2-stage-actions #p2-reveal{background:var(--ns-primary);border-color:var(--ns-primary);color:#fff}.p2-stage-actions #p2-reveal:hover{background:var(--ns-primary-hover);border-color:var(--ns-primary-hover);color:#fff}.p2-three,.p2-diagram{border-color:#36556e}.p2-result,.p2-result.is-success{background:var(--ns-bg-glass-hover);border-top-color:var(--ns-border-glass)}.p2-result.is-success{border-left:5px solid var(--ns-success)}.p2-result strong{color:var(--ns-text-title)}.p2-result p{color:var(--ns-text-main)}#p2-result-data{color:#075985}.p2-result-icon{color:#fff;background:var(--ns-primary)}.p2-tool-card,.p2-method{background:var(--ns-bg-surface);border-color:var(--ns-border-glass);box-shadow:var(--ns-shadow-sm)}.p2-tool-card{border-radius:var(--ns-radius-lg)}.p2-control-row>span,.p2-number,.p2-field-hint,.p2-method p,.p2-footer{color:var(--ns-text-muted)}.p2-teacher-note,.p2-pin-list,.p2-method strong{color:var(--ns-text-main)}.p2-detent-grid>div{border-color:var(--ns-border-glass-hover)}.p2-detent-grid span{color:var(--ns-text-muted)}.p2-detent-grid button{min-height:44px!important}.p2-help,.p2-help-top{background:var(--ns-bg-surface);color:var(--ns-text-main)}.p2-help{border-color:var(--ns-border-glass-hover);box-shadow:var(--ns-shadow-lg)}.p2-help h2{color:var(--ns-text-title)}.p2-help p{color:var(--ns-text-main)}.p2-help-top{border-bottom-color:var(--ns-border-glass)}.p2-case-grid .is-pass{color:#064e3b;background:#d1fae5}.p2-case-grid .is-fail{color:#7c2d12;background:#ffedd5}@media(max-width:1050px){.p2-main-grid{grid-template-columns:minmax(0,1fr) 290px}.p2-shell{padding-inline:14px}.p2-subject{display:none}.p2-stage-actions button{font-size:.72rem}}@media(max-width:800px){.p2-main-grid{display:flex;flex-direction:column}.p2-lab,.p2-sidebar{width:100%}.p2-sidebar{max-height:none;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}#p2-tools{display:contents}.p2-tool-card{margin:0}.p2-three{height:380px}.p2-diagram svg{height:230px}}@media(max-width:560px){.p2-shell{padding:0 9px 25px}.p2-topbar{min-height:55px}.p2-brand strong{font-size:.9rem}.p2-brand small{font-size:.5rem}.p2-top-actions{gap:4px}.p2-top-actions button{padding:7px!important;font-size:.68rem}.p2-top-actions [data-action=legacy]{display:none}.p2-heading{padding:12px 4px 9px}.p2-heading h1{font-size:1.65rem}.p2-badge{display:none}.p2-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;gap:4px}.p2-nav button{min-width:0;white-space:normal;line-height:1.15;font-size:.67rem;padding:7px 4px!important}.p2-lab-header{display:block;padding:12px}.p2-stage-actions{justify-content:flex-start;margin-top:11px}.p2-stages{padding:8px}.p2-three{height:305px}.p2-diagram svg{height:190px}.p2-diagram-primary .p2-diagram svg{width:100%;height:auto}.p2-result{padding:12px;align-items:flex-start}#p2-result-data{white-space:normal;font-size:.67rem}.p2-sidebar{display:block}.p2-tool-card{margin-bottom:8px}.p2-lower{display:none}.p2-footer{padding:14px 5px}}@media(prefers-reduced-motion:reduce){#p2-view button{transition:none}}
