/* Prevent FrolicForge globals from leaking into the lab */
:where(.surface-lab) h1,:where(.surface-lab) h2,:where(.surface-lab) h3,:where(.surface-lab) h4{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:normal;margin:0;font-weight:inherit;font-size:inherit;color:inherit;line-height:inherit}
:where(.surface-lab) p{margin:0;color:inherit}
:where(.surface-lab) a{color:var(--accent,#FF4D1A)}
:where(.surface-lab) .btn{text-transform:none;letter-spacing:normal;box-shadow:none;background:none;color:inherit;padding:0}
:root{--bg:#0B0D10;--panel:#111417;--panel2:#1a1d22;--line:#2A2F36;--text:#CCD2D8;--muted:#8E98A2;--accent:#FF4D1A;--ink:#fff;--warm:#FF7A3B;--radius:0px;--mono:ui-monospace,SFMono-Regular,Consolas,monospace}
*{box-sizing:border-box}.surface-lab{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select{font:inherit}button,select{cursor:pointer}button{color:inherit;border:0;background:none}button:disabled{opacity:.35;cursor:not-allowed}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:var(--accent);text-underline-offset:3px}button:hover:not(:disabled){filter:brightness(1.12)}h1,h2,h3,p{margin:0}h1{font-size:clamp(27px,2.6vw,39px);line-height:1.13;letter-spacing:-1.6px;font-weight:620}h2{font-size:27px;line-height:1.16;letter-spacing:-.75px}h3{font-size:14px;font-weight:600}small{font-size:11px}.shell{max-width:1680px;margin:auto;padding:23px 28px 17px}.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:25px}.brand{display:flex;align-items:center;gap:10px}.logo{width:35px;height:35px;color:var(--accent)}.brand-name{font-size:16px;font-weight:650;letter-spacing:-.3px}.brand-sub{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:1.4px}.header-actions{display:flex;align-items:center;gap:10px}.textbtn{padding:7px 11px;border:1px solid var(--line);border-radius:0;font-size:12px}.offline{font:10px var(--mono);letter-spacing:.7px;color:var(--muted);margin-right:8px}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:7px}.hero{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:23px}.hero p{color:var(--muted);font-size:13px;margin-top:7px}.eyebrow{font:10px/1.5 var(--mono);letter-spacing:1.7px;color:var(--accent);text-transform:uppercase}.hero .eyebrow{margin-bottom:6px}.progress-wrap{min-width:170px;margin-bottom:4px}.progress-label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);gap:20px;margin-bottom:8px}.progress-track{height:3px;border-radius:0;background:var(--line);overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .3s;width:0}.chapters{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:5px;border:1px solid var(--line);border-radius:0;margin-bottom:16px;background:#0e1114}.chapter{display:flex;align-items:center;gap:10px;justify-content:center;padding:9px 7px;border-radius:0;font-size:12px;color:var(--muted);white-space:nowrap}.chapter .num{font:10px var(--mono);border:1px solid var(--line);width:23px;height:23px;border-radius:50%;display:grid;place-items:center}.chapter.active{background:var(--accent);color:var(--ink);font-weight:650}.chapter.active .num{border-color:#FF4D1A}.chapter.done:not(.active) .num{color:var(--accent);border-color:#FF4D1A}.workspace{display:grid;grid-template-columns:280px minmax(330px,1fr) 292px;gap:14px;align-items:stretch}.panel{border:1px solid var(--line);border-radius:0;background:var(--panel);overflow:hidden}.lesson{display:flex;flex-direction:column;padding:24px 22px;min-height:659px}.lesson .eyebrow{margin-bottom:12px}.lesson-copy{margin:15px 0;color:#9aa1ab;font-size:13px;line-height:1.65}.lesson-copy p+p{margin-top:10px}.lesson-copy strong{color:var(--text);font-weight:600}.cite{font:9px var(--mono);vertical-align:super;text-decoration:none;margin-left:3px}.callout{padding:13px 14px;background:#1a1d22;border-left:2px solid var(--accent);border-radius:0;font-size:12px;color:#9aa1ab;margin-bottom:17px}.callout strong{display:block;font-size:10px;font-family:var(--mono);letter-spacing:1px;color:var(--accent);margin-bottom:5px}.experiment{margin-bottom:13px}.experiment h3{font-family:var(--mono);font-size:10px;letter-spacing:1.2px;color:var(--muted);margin-bottom:9px}.task{display:flex;gap:9px;align-items:start;font-size:12px;margin:8px 0;color:#9aa1ab}.task-mark{display:grid;place-items:center;flex:0 0 16px;width:16px;height:16px;border:1px solid #2A2F36;border-radius:50%;color:var(--ink);font-size:10px;margin-top:2px}.task.done .task-mark{background:var(--accent);border-color:var(--accent)}.task.done{color:#8E98A2}.lesson-control{margin:8px 0 15px}.lesson-control label{font-size:12px;display:flex;justify-content:space-between;gap:8px}.lesson-control .btn{width:100%;margin-top:7px}.quiz{border-top:1px solid var(--line);padding-top:14px;margin-top:auto}.quiz-q{font-size:12px;color:#CCD2D8;margin-bottom:9px;font-weight:550}.answers{display:flex;flex-direction:column;gap:5px}.answer{font-size:11px;line-height:1.45;text-align:left;padding:8px 10px;border:1px solid var(--line);border-radius:0;color:#9aa1ab}.answer.correct{border-color:#FF4D1A;background:#2A2F36;color:var(--accent)}.answer.wrong{border-color:#bf8a68;background:#3a2010;color:#ffd9b5}.feedback{font-size:11px;margin-top:9px;color:var(--accent);line-height:1.5}.feedback:empty{display:none}.lesson-nav{display:flex;align-items:center;justify-content:space-between;margin-top:17px;gap:12px}.btn{font-size:12px;border:1px solid var(--line);border-radius:0;padding:9px 13px}.btn.primary{background:var(--accent);color:var(--ink);border-color:var(--accent);font-weight:650}.studio{display:flex;flex-direction:column;min-width:0}.viewport{position:relative;flex:1;min-height:525px;overflow:hidden;border-radius:0;background:radial-gradient(ellipse at 48% 38%,#e4e7ec 0%,#c8cdd4 65%,#b0b7c0 100%);border:1px solid #c0c5cc;color:#1a1d22}.viewer-toolbar{position:absolute;z-index:2;left:15px;right:15px;top:15px;display:flex;justify-content:space-between;gap:8px;align-items:start;pointer-events:none}.viewer-toolbar>*{pointer-events:auto}.view-modes{display:flex;background:#f0f2f5b8;border:1px solid #b0b7c0;border-radius:0;padding:3px;backdrop-filter:blur(8px)}.view-modes button{padding:6px 10px;font-size:11px;border-radius:0;color:#3a3f48}.view-modes .active{background:#2A2F36;color:#CCD2D8}.viewtools{display:flex;gap:5px}.iconbtn{background:#f0f2f5d4;border:1px solid #b0b7c0;border-radius:0;width:31px;height:31px;font-size:16px;display:grid;place-items:center;color:#3a3f48}.iconbtn.active{background:#2A2F36;color:var(--accent)}#stage{width:100%;height:100%;display:block;position:absolute;inset:0;touch-action:none;cursor:grab}#stage.painting{cursor:crosshair}#stage:active{cursor:grabbing}#stage.painting:active{cursor:crosshair}.scene-tag{position:absolute;top:70px;left:20px;font:9px var(--mono);letter-spacing:1.4px;color:#3a3f48;pointer-events:none}.scene-tag .dot{background:#FF4D1A;width:5px;height:5px}.scene-label{position:absolute;left:21px;bottom:49px;pointer-events:none}.scene-label b{font-weight:650;font-size:18px;letter-spacing:-.5px}.scene-label span{display:block;font:9px var(--mono);letter-spacing:1.2px;color:#6b7280;margin-top:3px}.scene-hint{position:absolute;left:21px;bottom:20px;font-size:10px;color:#3a3f48;pointer-events:none}.scene-meta{position:absolute;right:18px;bottom:20px;text-align:right;pointer-events:none}.scene-meta strong{font:11px var(--mono);display:block}.scene-meta span{font-size:9px;color:#6b7280}.lighting-select{position:absolute;right:15px;top:65px;background:#eef0f3b5;border:1px solid #b6c7b1;color:#3a3f48;border-radius:0;font-size:10px;padding:4px 6px}.tools-ribbon{position:absolute;right:15px;bottom:62px;display:flex;gap:4px;background:#eff1f4de;border:1px solid #b0b7c0;padding:3px;border-radius:0}.tools-ribbon button{font-size:10px;padding:5px 8px;border-radius:0;color:#3a3f48}.tools-ribbon .active{background:#2A2F36;color:#CCD2D8}.live-note{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);padding:12px 17px;background:#0B0D10ea;color:#CCD2D8;z-index:5;font-size:12px;border-radius:0;max-width:80%;text-align:center;pointer-events:none;opacity:0;transition:opacity .16s}.live-note.show{opacity:1}.webgl-error{position:absolute;inset:70px 25px 100px;display:none;background:#eef0f3ed;border-radius:0;padding:30px;z-index:10;align-content:center;font-size:14px}.webgl-error h3{font-size:23px;margin-bottom:12px}.skins-panel{padding:15px 17px;margin-top:13px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.section-title .eyebrow{font-size:9px;letter-spacing:1.2px;color:var(--muted)}.tiny-select{background:#1a1d22;border:1px solid var(--line);border-radius:0;color:#CCD2D8;font-size:10px;padding:4px}.skin-list{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.skin{display:flex;align-items:center;gap:8px;border:1px solid var(--line);padding:7px;border-radius:0;min-width:0;text-align:left}.skin.active{border-color:var(--accent);background:#1a1d22}.skin .swatch{width:26px;height:31px;border-radius:0;flex:0 0 26px;box-shadow:inset 0 0 0 1px #ffffff33}.skin b{font-size:11px;display:block;font-weight:600;line-height:1.3}.skin small{font:8px var(--mono);color:var(--muted)}.swap-status{font:9px var(--mono);color:var(--muted);margin-top:10px}.inspector{padding:19px 17px;display:flex;flex-direction:column}.inspector-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.inspector-title h3{font-size:14px}.badge{font:9px var(--mono);color:var(--accent);border:1px solid #2A2F36;border-radius:0;padding:2px 5px}.map-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;background:#0a0c0f;border-radius:0;padding:3px;margin-bottom:12px}.map-tab{font-size:10px;padding:6px 2px;border-radius:0;color:#8E98A2}.map-tab.active{background:#2A2F36;color:#CCD2D8}.atlas-wrap{position:relative;border:1px solid #2A2F36;border-radius:0;overflow:hidden;aspect-ratio:1;background:#0B0D10}#atlas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}.atlas-axis{position:absolute;bottom:3px;right:5px;color:#CCD2D8;background:#0a0c0fc4;font:8px var(--mono);padding:0 4px;border-radius:0;pointer-events:none}.atlas-caption{font-size:11px;line-height:1.55;color:#8E98A2;margin-top:10px;min-height:50px}.uv-readout{font:9px var(--mono);color:var(--accent);margin-top:8px;display:flex;justify-content:space-between;gap:4px}.toggle-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#8E98A2;gap:10px;margin-top:11px}.toggle-row label{display:flex;align-items:center;gap:7px}.toggle-row input[type=checkbox]{accent-color:var(--accent);margin:0;width:13px;height:13px}.surface-controls{margin-top:16px;border-top:1px solid var(--line);padding-top:13px}.surface-controls .eyebrow{color:var(--muted);font-size:9px;margin-bottom:12px}.range-row{margin-top:10px}.range-row label{display:flex;justify-content:space-between;font-size:11px;color:#8E98A2;margin-bottom:2px}.range-row output{font-family:var(--mono);font-size:10px;color:var(--text)}input[type=range]{width:100%;height:15px;accent-color:var(--accent);cursor:pointer;margin:2px 0}.range-hint{display:flex;justify-content:space-between;color:#6b7280;font-size:9px;margin-top:-3px}.microcopy{font-size:10px;color:#6b7280;line-height:1.5;margin-top:10px}.brush-controls{margin-top:12px;padding:12px;background:#1a1d22;border:1px solid #2A2F36;border-radius:0;display:none}.brush-controls.visible{display:block}.inspector.is-painting .surface-controls{display:none}.paint-colors{display:flex;gap:7px;margin:8px 0;align-items:center}.paint-colors button{width:22px;height:22px;border:2px solid transparent;border-radius:50%}.paint-colors button.active{box-shadow:0 0 0 2px #FF4D1A;border-color:#1a1d22}.paint-colors input{width:26px;height:25px;padding:0;border:0;background:none;margin-left:auto}.brush-actions{display:flex;gap:6px}.brush-actions .btn{padding:5px 8px;font-size:10px}.inspector-actions{display:flex;gap:7px;margin-top:auto;padding-top:12px}.inspector-actions .btn{font-size:10px;padding:7px 8px;flex:1}.footer{display:flex;justify-content:space-between;color:#6b7280;font-size:10px;gap:20px;margin-top:15px}.footer button{font-size:10px;text-decoration:underline;text-underline-offset:3px;color:#8E98A2;padding:0}.footer a{color:#8E98A2}.subcontrol{display:flex;gap:8px;align-items:center}.subcontrol select{width:100%;color:#CCD2D8;background:#1a1d22;border:1px solid #2A2F36;border-radius:0;padding:5px;font-size:11px}.mini-stat{padding:12px;border:1px solid var(--line);border-radius:0;margin-top:10px}.mini-stat b{font:22px var(--mono);color:var(--accent);display:block}.mini-stat small{display:block;font-size:10px;color:var(--muted)}.code-chip{font:10px/1.65 var(--mono);background:#121d16;padding:10px;border-radius:0;white-space:pre-wrap;color:#9aa1ab;margin-top:9px}.warning{color:#efc197!important}.inline-btn{color:var(--accent);padding:0;text-decoration:underline;font-size:11px;text-underline-offset:3px}.pipeline{display:flex;align-items:center;gap:4px;margin:12px 0}.pipeline span{font:8px var(--mono);background:#2A2F36;color:#CCD2D8;border:1px solid #2A2F36;border-radius:0;padding:5px}.pipeline i{font-style:normal;color:#6b7280;font-size:10px}dialog{max-width:820px;width:calc(100% - 32px);border:1px solid #2A2F36;border-radius:0;padding:28px;background:var(--panel);color:var(--text);max-height:88vh;overflow:auto}dialog::backdrop{background:#000000d4;backdrop-filter:blur(6px)}dialog h2{font-size:27px;margin-bottom:18px}dialog h3{margin:22px 0 8px;color:var(--accent)}dialog p,dialog li{font-size:13px;color:#bcccc0}dialog p+p{margin-top:10px}.dialog-close{float:right;margin-left:10px}.ref-list{padding-left:20px}.ref-list li{margin-bottom:12px}.ref-list a{font-size:13px}.method-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.method-list div{padding:14px;background:#1a1d22;border-radius:0;font-size:12px;color:#9aa1ab}.method-list strong{display:block;margin-bottom:4px;color:#CCD2D8}.workflow-step{display:grid;grid-template-columns:28px 1fr;gap:12px;margin:17px 0}.workflow-step .n{color:var(--accent);font:18px var(--mono)}.workflow-step b{display:block;font-size:13px}.workflow-step p{font-size:12px}.cheat-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.cheat-grid div{border:1px solid var(--line);padding:13px;border-radius:0;font-size:12px;color:#9aa1ab}.cheat-grid strong{display:block;color:var(--text);margin-bottom:5px}kbd{font:9px var(--mono);padding:2px 4px;border:1px solid #2A2F36;border-radius:0}#import-file{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1450px){.workspace{grid-template-columns:305px minmax(400px,1fr) 310px}.lesson{padding:25px}.viewport{min-height:550px}.skin b{font-size:12px}.lesson-copy{font-size:14px}.inspector{padding:21px 19px}.atlas-caption{font-size:12px}}
@media(max-width:1150px){.shell{padding:20px}.workspace{grid-template-columns:250px minmax(280px,1fr) 255px;gap:10px}.lesson{padding:19px 17px}h2{font-size:24px}.inspector{padding:17px 13px}.skin{display:block}.skin .swatch{width:100%;height:12px;display:block;margin-bottom:5px}.view-modes button{padding:6px 6px}.viewer-toolbar{left:10px;right:10px}.chapter{gap:6px;font-size:11px}.skin small{display:none}.scene-label b{font-size:15px}}
@media(max-width:960px){.workspace{grid-template-columns:minmax(280px,1fr) 280px}.lesson{grid-column:1/-1;min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.lesson-heading,.lesson-copy,.callout{grid-column:1}.experiment,.lesson-control,.quiz,.lesson-nav{grid-column:2}.experiment{grid-row:1/3}.lesson-control{grid-row:3}.quiz{grid-row:4/7}.lesson-nav{grid-row:7}.lesson .callout{margin-bottom:0}.lesson-copy{margin-bottom:12px}.viewport{min-height:540px}.skin{display:flex}.skin .swatch{width:23px;height:30px;margin:0}.scene-label{bottom:52px}.skin-list{gap:5px}.hero .progress-wrap{display:none}.chapter{font-size:10px}.chapter .num{width:20px;height:20px}.footer{flex-wrap:wrap}}
@media(max-width:640px){.shell{padding:16px 12px}.top{margin-bottom:20px}.offline,.brand-sub,.hero p{display:none}.hero{margin-bottom:18px}.header-actions{gap:5px}.textbtn{font-size:10px;padding:6px 8px}.hero .eyebrow{font-size:9px}h1{font-size:30px;max-width:340px}.chapters{display:flex;overflow:auto;gap:4px;margin-bottom:12px}.chapter{flex:0 0 auto;padding:8px 10px;font-size:11px}.workspace{display:flex;flex-direction:column;gap:12px}.studio{order:0}.lesson{order:1;display:flex;min-height:0;padding:22px}.inspector{order:2;max-width:none;padding:20px}.lesson h2{font-size:27px}.lesson-copy{font-size:14px}.experiment{margin-top:12px}.quiz{margin-top:10px}.viewport{min-height:475px}.skin{padding:7px 6px;gap:6px}.skin b{font-size:10px}.skins-panel{padding:13px 12px}.skin .swatch{flex-basis:21px;width:21px}.scene-hint{font-size:9px;left:14px}.scene-meta{right:12px}.scene-label{left:14px}.scene-meta strong{font-size:10px}.tools-ribbon{right:12px;bottom:62px}.view-modes button{font-size:10px;padding:6px 8px}.map-tabs{font-size:12px}.atlas-wrap{max-width:430px;width:100%;margin:auto}.atlas-caption{min-height:0}.range-row label{font-size:12px}.inspector-actions{margin-top:5px}.method-list,.cheat-grid{grid-template-columns:1fr}dialog{padding:20px}.footer{font-size:9px}.progress-wrap{display:none}.lesson-nav{margin-top:20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
