/* Viewport UI only. Optical rendering and simulation remain separate. */
:root{color-scheme:dark;--lab-panel:#10202ff5;--lab-line:#3e586c;--lab-muted:#a4bbcd;--lab-accent:#eeac65}
html,body.fullscreen-lab{width:100%;height:100%;margin:0;overflow:hidden;background:#142534}
.fullscreen-lab{font-family:Inter,system-ui,sans-serif;color:#e0ecf5}
.fullscreen-lab .app-shell,.fullscreen-lab .game-layout,.fullscreen-lab .stage-column{display:block;margin:0;padding:0;width:100%;max-width:none}
.fullscreen-lab .board-wrap{position:fixed;inset:0;width:100%;height:100%;border:0;border-radius:0;overflow:hidden;box-shadow:none;background:#142534}
.fullscreen-lab #gameCanvas{display:block;width:100%;height:100%;aspect-ratio:auto;touch-action:none}
.fullscreen-lab .topbar{position:fixed;z-index:10;top:0;left:0;right:0;height:60px;border:0;padding:8px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left));background:linear-gradient(#142534ee,#14253400);pointer-events:none}
.fullscreen-lab .brand{pointer-events:auto}.fullscreen-lab .brand-mark,.fullscreen-lab .brand small{display:none}.fullscreen-lab .brand strong{font-size:14px;letter-spacing:.2em;font-weight:500}.fullscreen-lab .top-actions{pointer-events:auto;display:flex;gap:7px}
.fullscreen-lab button{min-height:40px;border-radius:8px;background:#182c3c;color:#d8e6ef;border:1px solid #3d5669;font-family:inherit;cursor:pointer}
.fullscreen-lab button:hover{background:#263e50;border-color:#82a5ba}.fullscreen-lab button:focus-visible,.fullscreen-lab a:focus-visible{outline:2px solid #f6b978;outline-offset:3px}.fullscreen-lab button:disabled{opacity:.4;cursor:default}
#sidebarToggle{padding:0 12px;font-size:14px}.fullscreen-lab .icon-button{width:40px}
.fullscreen-lab .mission-bar{position:fixed;z-index:8;top:max(14px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(520px,calc(100% - 560px));margin:0;display:flex;flex-direction:column;gap:8px;text-align:center;pointer-events:none}
.fullscreen-lab .mission-heading{width:100%}.fullscreen-lab .level-kicker{font-size:12px;color:#9eb8ce;letter-spacing:.04em}.fullscreen-lab .mission-heading h1{font-size:20px;font-weight:500;line-height:1.2;margin:5px 0}.fullscreen-lab .mission-heading p{font-size:14px;line-height:1.4;color:#b5cbd9;margin:0}.fullscreen-lab .goal-status{padding:6px 12px;border-radius:8px;font-size:12px;background:#10202fe8;white-space:normal;max-width:100%}
.fullscreen-lab .control-bar{position:fixed;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));z-index:10;margin:0;padding:0;border:0;background:none}.fullscreen-lab .stage-actions{display:flex;gap:6px;flex-wrap:nowrap}.fullscreen-lab .stage-actions button{font-size:14px;padding:0 12px}.fullscreen-lab #briefingBtn,.fullscreen-lab #hintBtn{display:none}.fullscreen-lab .next-button{margin:0;background:#294750;border-color:#547e85}
.fullscreen-lab .object-controls,.fullscreen-lab .object-controls[data-docked=true]{position:fixed;z-index:12;top:auto;left:50%;bottom:max(72px,calc(env(safe-area-inset-bottom) + 58px));transform:translateX(-50%);width:min(620px,calc(100vw - 32px));max-height:min(32dvh,290px);overflow:auto;margin:0;padding:12px 46px 12px 16px;border:1px solid var(--lab-line);border-radius:12px;background:var(--lab-panel);box-shadow:0 8px 24px #0003;touch-action:pan-y}
.fullscreen-lab .object-controls[hidden]{display:none}.fullscreen-lab .selected-controls{display:flex;gap:8px;min-width:0}.fullscreen-lab .control-caption{flex:1;font:500 14px/1.4 Inter,system-ui,sans-serif;color:#e4edf5;letter-spacing:0}.fullscreen-lab .selected-controls button{width:40px;min-width:40px;height:40px;min-height:40px}.fullscreen-lab .close-controls{position:absolute;right:7px;top:9px;width:32px;min-height:32px;background:none;border:0;font-size:22px;color:#a9bfcd}
.fullscreen-lab .dial-modes{display:inline-flex;margin:6px 12px 0 0;vertical-align:middle}.fullscreen-lab .dial-modes button{min-height:36px;font-size:13px}.fullscreen-lab .dial-modes button[aria-pressed=true]{background:#332b24;border-color:#dc995b;color:#ffd6a1}.fullscreen-lab .dial-readout{display:inline-block;margin:6px 0 0;color:#d5e5f1;font-size:14px;vertical-align:middle}
.fullscreen-lab .object-settings{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}.fullscreen-lab .object-settings>*{flex:1 1 180px;margin:8px 0 0}.fullscreen-lab .object-settings .power-control{display:grid;grid-template-columns:1fr;gap:4px}.fullscreen-lab .object-settings label{font-size:14px}.fullscreen-lab .object-settings input[type=range]{width:100%;accent-color:var(--lab-accent);height:24px}.fullscreen-lab .band-controls{display:flex;flex-wrap:wrap;gap:5px;border:0;padding:0}.fullscreen-lab .band-controls legend{font-size:12px;color:#a4bbcd}.fullscreen-lab .band-option{min-height:34px;font-size:13px;padding:4px 7px}.fullscreen-lab .object-controls #removePiece{width:auto;flex:0 0 auto}
.view-controls{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:10;display:flex;gap:5px;align-items:center;background:#10202fe8;border-radius:8px}.view-controls button{min-width:40px;padding:0 10px;font-size:18px}.view-controls #fitView{font-size:14px}.view-controls output{font:13px monospace;padding:0 5px;color:#bbcedb}
.fullscreen-lab .board-badge{position:fixed;left:16px;top:70px;bottom:auto!important;right:auto;font-size:11px;max-width:200px;background:none;padding:0;color:#8daabe;pointer-events:none}.fullscreen-lab .toast{position:fixed;top:135px;bottom:auto;left:50%;transform:translateX(-50%);max-width:min(480px,85vw);font-size:14px;z-index:20}
.fullscreen-lab .sidebar{position:fixed;z-index:25;top:68px;right:max(16px,env(safe-area-inset-right));bottom:76px;width:min(360px,calc(100vw - 24px));display:flex;flex-direction:column;overflow:hidden;padding:16px;background:var(--lab-panel);border:1px solid var(--lab-line);border-radius:12px;box-shadow:0 10px 35px #0005}.fullscreen-lab .sidebar[hidden],.fullscreen-lab .sidebar section[hidden]{display:none}.sidebar-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.1em;color:#a9c1d3}.sidebar-heading button{width:36px;min-height:36px;font-size:22px;background:none}.sidebar-tabs{display:flex;gap:6px;margin:12px 0 18px}.sidebar-tabs button{flex:1;font-size:14px}.sidebar-tabs button[aria-pressed=true]{border-color:#d49b65;color:#ffce9e}.fullscreen-lab .sidebar h2{font-size:19px;line-height:1.3;font-weight:500;margin:14px 0}.fullscreen-lab .sidebar p{font-size:14px;line-height:1.6;color:#b6cbd9}.fullscreen-lab .sidebar .intro-figure{margin:14px 0;padding:8px;background:#142a3b;border-color:#385366}.fullscreen-lab .sidebar .intro-figure svg{width:100%;height:130px}.fullscreen-lab #sidebarTry{border-left:2px solid #da9b5d;padding:8px 12px;background:#21303b}.fullscreen-lab .side-card{padding:0;background:none;border:0}.fullscreen-lab .level-list{max-height:none;display:block}.fullscreen-lab .sidebar-foot{display:grid;gap:16px}.release-links{display:grid;gap:6px}.release-links a{color:#9bcad9;font-size:14px}.fullscreen-lab .footer{display:none}
.fullscreen-lab .sidebar .inspector,.fullscreen-lab .sidebar .energy-panel,.fullscreen-lab .sidebar .spectrum-panel,.fullscreen-lab .sidebar .discharge-panel{margin:14px 0;padding:12px;background:#122331;border-color:#354e62;min-width:0}.fullscreen-lab .sidebar .energy-heading,.fullscreen-lab .sidebar .discharge-content{display:block}.fullscreen-lab .sidebar .energy-flow{grid-template-columns:1fr}.fullscreen-lab .sidebar canvas{max-width:100%}.fullscreen-lab .sidebar .spectral-view{margin-top:14px}.fullscreen-lab .inspector-title{font-size:14px}
@media(max-width:1000px){.fullscreen-lab .mission-bar{top:65px;width:min(650px,calc(100% - 32px))}.fullscreen-lab .level-kicker{display:none}.fullscreen-lab .board-badge{display:none}.fullscreen-lab .mission-heading h1{font-size:18px}.fullscreen-lab .mission-heading p{font-size:13px}.fullscreen-lab .sidebar{top:62px}.fullscreen-lab .toast{top:160px}}
@media(max-width:600px){.fullscreen-lab .topbar{height:54px;padding-top:max(8px,env(safe-area-inset-top))}.fullscreen-lab .brand strong{font-size:12px;letter-spacing:.14em}.fullscreen-lab #sidebarToggle{font-size:13px;padding:0 9px}.fullscreen-lab .top-actions{gap:4px}.fullscreen-lab .icon-button{width:34px;min-height:36px}.fullscreen-lab .mission-bar{top:max(58px,calc(env(safe-area-inset-top) + 48px));gap:5px}.fullscreen-lab .mission-heading h1{font-size:18px;margin:0 0 4px}.fullscreen-lab .mission-heading p{font-size:13px;line-height:1.4}.fullscreen-lab .goal-status{font-size:11px;padding:4px 9px}.fullscreen-lab .control-bar{left:8px;bottom:max(10px,env(safe-area-inset-bottom))}.fullscreen-lab .stage-actions{gap:4px}.fullscreen-lab .stage-actions button{padding:0 8px;font-size:13px;min-height:40px}.fullscreen-lab #nextBtn{font-size:0;width:40px;padding:0}.fullscreen-lab #nextBtn span{font-size:20px}.view-controls{right:8px;bottom:max(10px,env(safe-area-inset-bottom));gap:2px}.view-controls button{min-width:34px;padding:0 7px}.view-controls output{font-size:12px;padding:0 2px}.fullscreen-lab .object-controls{width:calc(100vw - 16px);bottom:max(62px,calc(env(safe-area-inset-bottom) + 50px));max-height:30dvh;padding:10px 42px 10px 12px}.fullscreen-lab .object-settings>*{flex-basis:140px}.fullscreen-lab .sidebar{top:58px;right:8px;bottom:62px;width:min(360px,calc(100vw - 16px));padding:14px}.fullscreen-lab .toast{top:160px}.fullscreen-lab .band-option{font-size:12px}.fullscreen-lab .dial-modes button{min-height:36px}}
@media(max-height:500px) and (min-width:600px){.fullscreen-lab .mission-bar{top:8px;width:45%;max-width:450px}.fullscreen-lab .level-kicker,.fullscreen-lab .mission-heading p{display:none}.fullscreen-lab .object-controls{max-height:34dvh;bottom:60px;width:min(560px,65vw)}.fullscreen-lab .sidebar{top:55px;bottom:12px}.fullscreen-lab .toast{top:75px}}
.fullscreen-lab .sidebar #briefingBtn,.fullscreen-lab .sidebar #hintBtn{display:inline-block;padding:0 12px;margin:12px 6px 0 0}
@media(max-width:360px){.view-controls output{display:none}.fullscreen-lab .brand strong{font-size:11px}.fullscreen-lab #audioBtn{display:none}}

/* The HUD never participates in stage layout or camera transforms. */
.hud-layer{position:fixed;inset:0;z-index:10;pointer-events:none;isolation:isolate}
.hud-layer>.object-controls,.hud-layer>.sidebar,.hud-layer>.control-bar,.hud-layer>.view-controls{pointer-events:auto}
.hud-layer>.toast,.hud-layer>.board-badge,.hud-layer>.mission-bar{pointer-events:none}

/* Keep navigation and dismissal outside the only scrolling region. */
.fullscreen-lab .sidebar-heading,.fullscreen-lab .sidebar-tabs{flex:0 0 auto}
.fullscreen-lab .sidebar-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:4px;touch-action:pan-y}

/* A compact celebration leaves the solved optical path visible around it. */
.fullscreen-lab .success-dialog{position:fixed;width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:hidden;padding:24px;background:radial-gradient(circle at 50% -20%,#285267 0,transparent 60%),#10202f;border:1px solid #72a7ae;border-radius:16px;text-align:center;box-shadow:0 18px 60px #000b,0 0 32px #8ce9dc22}
.fullscreen-lab .success-dialog::backdrop{background:#02081288;backdrop-filter:blur(2px)}
.success-content{position:relative;z-index:1}.success-kicker{font:11px 'Space Mono',monospace;letter-spacing:.18em;color:#91dddc}.success-emblem{display:grid;place-items:center;width:56px;height:56px;margin:12px auto 8px;border:1px solid #a1eadd;border-radius:50%;background:#83e4d421;box-shadow:0 0 25px #8ce9dc77;color:#ccfff0;font-size:30px}.success-dialog h2{margin:6px 0;font-size:25px;letter-spacing:-.025em}.success-dialog p{margin:0 0 18px;font-size:14px;color:#bdd2dc}.success-actions{display:flex;justify-content:center;gap:8px}.fullscreen-lab .success-actions button{min-height:44px;padding:0 14px}.fullscreen-lab .success-actions .next-button{background:#9ce9ed;border-color:#b9ffff;color:#0c2531;box-shadow:0 0 18px #8ce9dc55}.fullscreen-lab .success-actions .next-button:hover{background:#c7fff4}.fullscreen-lab .success-actions #successKeep{background:#1b3444;border-color:#557183;color:#d3e4ed}
.success-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.success-confetti i{position:absolute;top:-14px;left:var(--x);width:6px;height:12px;background:var(--color);border-radius:2px;opacity:0;animation:success-fall 1.55s ease-out var(--delay) both}
.fullscreen-lab #nextBtn.ready-next{background:#326b73;border-color:#a5f7e9;color:#eafff7;box-shadow:0 0 0 0 #8ce9dc77;animation:ready-next-pulse 2s ease-in-out infinite}
@keyframes success-fall{10%{opacity:1}80%{opacity:1}100%{transform:translate(var(--drift),390px) rotate(var(--turn));opacity:0}}
@keyframes ready-next-pulse{50%{box-shadow:0 0 0 7px #8ce9dc00,0 0 22px #8ce9dc88;filter:brightness(1.18)}}
@media(max-width:410px){.success-actions{flex-direction:column}.fullscreen-lab .success-actions button{width:100%}}
@media(prefers-reduced-motion:reduce){.success-confetti i,.fullscreen-lab #nextBtn.ready-next{animation:none}.success-confetti i{display:none}.fullscreen-lab #nextBtn.ready-next{box-shadow:0 0 0 2px #8ce9dc88}}
