:root{color-scheme:dark;--bg:#191b1e;--panel:#22252a;--line:#383c42;--muted:#afb4bc;--text:#f3f4f5;--yellow:#ffbf00;--color:#e5c663;--vector:#9690ea;--shader:#86c396;font-family:Inter,'Segoe UI',Arial,sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}button{border:1px solid transparent;border-radius:5px;background:#353940;font-size:.875rem;padding:8px 12px;transition:background .15s}button:hover{background:#444a53}a{color:var(--yellow)}h1,h2,h3,p{margin:0}.app-header{height:86px;display:flex;align-items:center;padding:0 28px;gap:26px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;color:var(--yellow)}.brand-mark{font-size:2rem;line-height:1;font-weight:850;letter-spacing:-2px}.brand-mark span{font-weight:650;font-size:.65rem;letter-spacing:2px;display:block;margin-top:6px;text-align:right}.app-title{border-left:1px solid #494337;padding-left:26px}.eyebrow{font-size:.6875rem;font-weight:650;letter-spacing:1.7px;color:var(--muted)}h1{font-size:1.375rem;font-weight:600;letter-spacing:-.4px;margin-top:4px}.header-actions{margin-left:auto;display:flex;gap:12px;align-items:center}.reference{font-size:.8125rem;color:var(--muted);margin-right:16px}.quiet{background:none}.quiet span{display:inline-flex;border:1px solid #737984;width:19px;height:19px;align-items:center;justify-content:center;border-radius:50%;margin-left:9px}.reset{background:#e6e8ea;color:#22252a;font-weight:650}.reset:hover{background:white}.reset span{font-size:1.125rem;margin-left:14px}.workspace{display:grid;grid-template-columns:minmax(350px,34%) minmax(0,1fr);min-height:680px;height:calc(100dvh - 126px)}.preview-panel{border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0}.panel-bar{display:flex;align-items:center;justify-content:space-between;padding:17px 23px;height:57px;border-bottom:1px solid var(--line)}.panel-bar h2,.study-heading h2{font-size:.875rem;font-weight:600}.small-label{font-size:.625rem;font-weight:650;letter-spacing:1.7px;color:#9fa6ae}.preset-row{display:flex;gap:6px;padding:17px 20px 3px;z-index:2}.preset{display:flex;align-items:center;justify-content:center;gap:7px;padding:7px 9px;background:transparent;color:var(--muted);border:1px solid #3c4148;flex:1;font-size:.8125rem}.preset.active{border-color:var(--yellow);color:var(--text);background:#ffbf000b}.swatch{width:17px;height:17px;border-radius:50%;flex-shrink:0}.swatch.brick{background:url('./assets/textures/brick-color.jpg') center/cover}.swatch.concrete{background:url('./assets/textures/concrete.png') center/cover}.swatch.metal{background:linear-gradient(135deg,#918164,#edcc8f,#78694c)}.swatch.plain{background:#bf7251}.viewer{min-height:330px;flex:1;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#383c44,#202329 75%)}.viewer canvas{display:block;position:absolute;inset:0;width:100%;height:100%;touch-action:none}.view-top,.view-bottom{position:absolute;left:22px;right:22px;z-index:2;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.view-top{top:18px;color:#c1c6ce;font-size:.75rem}.view-top button{pointer-events:auto;background:#272b3180;border:1px solid #555c6766;font-size:.6875rem;padding:6px 9px}.view-top button[aria-pressed=true]{color:var(--yellow);border-color:var(--yellow)}.view-bottom{bottom:20px;flex-direction:column;gap:13px}.shape-picker{display:flex;background:#15181cbf;border:1px solid #4c535d66;border-radius:7px;padding:3px;pointer-events:auto}.shape-picker button{background:none;font-size:.8125rem;padding:7px 17px}.shape-picker button.active{background:#464b54;color:white}.orbit-hint{font-size:.6875rem;color:#959da9}.render-status{position:absolute;z-index:5;top:48%;left:15%;width:70%;text-align:center;font-size:.875rem;color:var(--text);padding:16px;border-radius:8px;background:#1b1e25e8}.render-status.hidden{display:none}.study-panel{padding:23px 24px 25px;border-top:1px solid var(--line);background:#21242a;min-height:252px}.study-heading{display:flex;justify-content:space-between;align-items:center}#study-count{font-size:.6875rem;color:var(--muted);font-variant-numeric:tabular-nums}.study-tabs{display:flex;border-bottom:1px solid #434851;margin:17px 0 19px;gap:15px}.study-tabs button{padding:0 0 11px;background:none;border-radius:0;color:#999fa8;font-size:.75rem;border-bottom:2px solid transparent}.study-tabs button.active{color:var(--yellow);border-color:var(--yellow)}.study-panel h3{font-size:1rem;font-weight:550;letter-spacing:-.15px}.study-panel p{font-size:.875rem;line-height:1.6;color:var(--muted);margin-top:10px;max-width:47ch}.study-action{padding:0;background:none;color:var(--yellow);margin-top:17px;font-weight:600;font-size:.8125rem}.study-action:hover{background:none;color:white}.study-action span{margin-left:8px}.editor-panel{display:flex;min-width:0;flex-direction:column;background:#24272d}.editor-bar{padding:13px 22px}.editor-bar>div:first-child{display:flex;align-items:center;gap:20px}.graph-tools{display:flex;align-items:center;gap:3px}.graph-tools button{padding:4px 10px;font-size:.875rem;background:none}.graph-tools button:hover{background:#3b4048}.graph-tools output{font-size:.6875rem;color:var(--muted);min-width:36px;text-align:center}#fit{border:1px solid #484e59;font-size:.75rem;margin-left:7px;padding:6px 10px}.editor-guide{display:flex;align-items:center;gap:17px;height:42px;padding:0 22px;background:#22252a;border-bottom:1px solid #363a40;font-size:.6875rem;color:#b2b8c1}.editor-guide>span{display:flex;align-items:center;gap:7px}.legend-dot{display:inline-block;width:7px;height:7px;border-radius:50%}.color{--socket:var(--color);background:var(--color)}.vector{--socket:var(--vector);background:var(--vector)}.shader{--socket:var(--shader);background:var(--shader)}.value{--socket:#bfc1c6;background:#bfc1c6}.guide-copy{margin-left:auto;font-size:.6875rem;color:#989faa}.graph-viewport{position:relative;flex:1;min-height:360px;overflow:hidden;background-color:#25282e;background-image:radial-gradient(#545a6470 .8px,transparent .8px);background-size:20px 20px;touch-action:none;cursor:grab}.graph-viewport:active{cursor:grabbing}.graph-world{position:absolute;left:0;top:0;width:980px;height:600px;transform-origin:0 0;will-change:transform;cursor:default}#wires{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none}#wires path{fill:none;stroke-width:2.6;opacity:.82}#wires .draft{stroke-dasharray:6 5;stroke:#e9edf2}.node{position:absolute;width:204px;background:#373b42;border:1px solid #101316;border-radius:7px;box-shadow:0 5px 18px #0004;overflow:visible;font-size:16px}.node:hover{border-color:#737d8c}.node-header{height:35px;border-radius:6px 6px 0 0;padding:8px 13px;display:flex;justify-content:space-between;align-items:center;font-weight:650;cursor:move;font-size:16px;letter-spacing:-.25px;user-select:none;touch-action:none}.node-header span:last-child{font-size:12px;opacity:.6}.texture .node-header{background:#66503c}.mapping .node-header{background:#494568}.normal .node-header{background:#494568}.principled .node-header{background:#3f634a}.output .node-header{background:#694846}.node-body{padding:10px 12px 13px}.socket-row{min-height:28px;position:relative;display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:15px}.socket-row.out{justify-content:flex-end}.socket{position:absolute;width:16px;height:16px;border-radius:50%;border:2px solid #25282c;background:var(--socket,#bfc1c6);padding:0;z-index:3;box-shadow:0 0 0 1px #101316;touch-action:none}.socket.input{left:-21px}.socket.output{right:-21px}.socket:hover,.socket.selected{box-shadow:0 0 0 3px #fff8;background:var(--socket)}.socket.connected{border-color:#e5e6eb}.socket:focus-visible{outline:3px solid white;outline-offset:4px}.socket-label{color:#edf0f4;pointer-events:none}.node-caption{font-size:12px;color:#b9c0cb;margin:1px 0 6px}.image-strip{display:flex;gap:9px;align-items:center;margin:6px 0}.image-strip img{width:52px;height:38px;object-fit:cover;border-radius:3px;background:#2d3036}.image-strip .image-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#e7e8ec}.image-strip button{font-size:12px;padding:5px 7px;background:#4b5059}.color-space{font-size:12px;color:#c4cad3;display:flex;justify-content:space-between;margin:8px 0 2px}.color-space strong{font-size:12px;color:#f2f3f5;font-weight:500}.field{margin:7px 0 9px}.field>label{display:flex;justify-content:space-between;align-items:center;font-size:14px;gap:7px;margin-bottom:7px}.field output{color:#e7eaf0;font-variant-numeric:tabular-nums}.node input[type=range]{accent-color:#aab3c2;width:100%;height:7px;margin:3px 0 8px;cursor:ew-resize}.node input[type=color]{width:85px;height:22px;border:0;padding:0;background:none;border-radius:4px;cursor:pointer}.node input[type=number]{width:67px;border:1px solid #656d78;background:#2c3036;border-radius:3px;color:white;font-size:14px;padding:4px}.node .field.disabled{opacity:.48}.driven{color:#bbbfc8;font-size:11px;margin:-3px 0 7px;display:none}.driven.show{display:block}.thin-rule{border-top:1px solid #535961;margin:9px 0}.editor-status{height:36px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:0 20px;color:#bbc2cd;gap:12px;font-size:.6875rem;background:#202328}#connection-status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#link-count{white-space:nowrap;color:#8d96a3}.insight{display:flex;gap:12px;align-items:flex-start;padding:17px 22px;min-height:77px;border-top:1px solid var(--line);background:#292d34}.insight-symbol{border:1px solid #8d98a8;border-radius:50%;width:19px;height:19px;display:flex;align-items:center;justify-content:center;color:#c4ccd8;font-size:.75rem;flex-shrink:0}.insight p{font-size:.8125rem;color:#aab3c1;line-height:1.5}.insight strong{color:#e3e7ed;font-weight:500}.app-footer{min-height:40px;display:flex;align-items:center;padding:0 26px;gap:25px;border-top:1px solid var(--line);font-size:.625rem;color:#8e98a5}.app-footer span:nth-child(2){margin-left:auto}.app-footer button{font-size:.625rem;background:none;padding:5px 0;color:#b9c2cf}.app-footer button:hover{color:var(--yellow)}dialog{border:1px solid #535c69;border-radius:12px;background:#252a32;color:var(--text);max-width:620px;width:calc(100% - 36px);padding:35px;box-shadow:0 20px 70px #000b}dialog::backdrop{background:#090b10bb;backdrop-filter:blur(5px)}dialog h2{font-size:1.65rem;margin:10px 0 20px;letter-spacing:-.5px}dialog p,dialog li{font-size:1rem;line-height:1.7;margin:12px 0;color:#d6dce5}dialog ol{padding-left:22px}dialog .muted{font-size:.875rem;color:#9eaaba}.dialog-close{position:absolute;right:16px;top:12px;font-size:1.5rem;background:none;padding:4px 10px}.primary{background:var(--yellow);color:#1b1e23;font-weight:650;margin-top:16px}.primary:hover{background:#ffd154}.no-script{position:fixed;top:50%;left:20%;right:20%;background:#531;padding:30px;z-index:99}.image-upload{display:none}
.coordinates .node-header{background:#754052}.coordinate-note{margin:13px 0 0;line-height:1.6}.mapping-type{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin:5px 0 10px}.mapping-type select{background:#292d33;color:#eee;border:1px solid #565d67;border-radius:4px;padding:3px 6px;width:110px;font-size:14px}.vector-field{margin:5px 0 8px}.vector-field .socket-row{min-height:26px}.axis-fields{border-radius:4px;overflow:hidden;margin-left:5px}.axis-fields label{display:flex;position:relative;background:#4b5058;align-items:center;border-bottom:1px solid #373b42;height:25px;padding:0 9px;font-size:13px}.axis-fields label:last-child{border-bottom:0}.node .axis-fields input[type=number]{width:100%;min-width:0;border:0;background:transparent;text-align:right;padding:3px 2px;font-size:13px;appearance:textfield;-moz-appearance:textfield}.axis-fields input::-webkit-inner-spin-button{appearance:none}.axis-fields .unit{width:15px;text-align:right;color:#c4c8ce;flex-shrink:0}.vector-field[hidden],.axis-fields[hidden]{display:none}
@media(min-width:1650px){.workspace{grid-template-columns:35% 65%}.viewer{min-height:430px}.study-panel{padding:26px 30px 30px}.study-panel p{max-width:60ch}}
@media(max-width:1100px){.reference{display:none}.workspace{grid-template-columns:340px minmax(0,1fr)}.guide-copy{display:none}.preset-row{padding-left:13px;padding-right:13px;gap:4px}.preset{font-size:.75rem;padding:7px 5px;gap:5px}.study-panel{padding:20px}.study-tabs{gap:10px}.app-footer{font-size:.625rem;gap:16px}}
@media(max-width:800px){.app-header{height:auto;min-height:78px;padding:14px 18px;gap:15px;flex-wrap:wrap}.app-title{padding-left:15px}.header-actions{gap:5px}.header-actions .quiet{font-size:0}.header-actions .quiet span{font-size:14px}.reset{font-size:.75rem}.reset span{display:none}.brand-mark{font-size:1.65rem}.eyebrow{font-size:.6rem}h1{font-size:1.2rem}.workspace{display:flex;flex-direction:column;height:auto;min-height:0}.preview-panel{border-right:0}.viewer{height:380px;min-height:380px;flex:none}.study-panel{min-height:0}.study-panel p{max-width:70ch}.study-tabs{gap:25px}.graph-viewport{height:480px;flex:none;min-height:480px}.editor-panel{border-top:1px solid #505864}.app-footer{padding:15px 20px;flex-wrap:wrap;gap:9px 20px}.app-footer span:nth-child(2){margin-left:0;flex-basis:100%;order:3;line-height:1.5}.app-footer button{margin-left:auto}.editor-guide{gap:16px}.graph-tools button{padding:4px 8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.lab-home{color:#d3d7dc;text-decoration:none;font-size:.78rem;white-space:nowrap}.lab-home:hover{color:var(--yellow)}

/* Blender-style factor sliders */
.slider-row{min-height:24px;margin:2px 0}
.field{margin:5px 0 7px}
.bslider{position:relative;flex:1;height:22px;border-radius:4px;background:#545454;overflow:hidden;display:flex;align-items:center;cursor:ew-resize}
.bslider:before{content:"";position:absolute;inset:0 auto 0 0;width:var(--p,50%);background:#4772b3;pointer-events:none}
.bslider:hover{background:#606060}.bslider:hover:before{background:#5680c2}
.node .bslider input[type=range]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.bslider .bs-label,.bslider output{position:relative;pointer-events:none;font-size:13px;color:#fff;text-shadow:0 1px 1px #0006;padding:0 8px;font-variant-numeric:tabular-nums}
.bslider output{margin-left:auto}
.bslider:focus-within{outline:2px solid var(--yellow);outline-offset:1px}
.linked-label{display:none;color:#edf0f4;font-size:15px}
.node .field.disabled{opacity:1}
.field.disabled .bslider{display:none}
.field.disabled .linked-label{display:block}
/* Linking feedback */
.graph-viewport.wiring .socket.input:not(.compatible){opacity:.25}
.graph-viewport.wiring .socket.input.compatible{box-shadow:0 0 0 3px #ffffff90,0 0 12px 2px var(--socket);transform:scale(1.15)}
.graph-viewport.wiring{cursor:crosshair}
#wires .cut-line{stroke:#ff5c5c;stroke-width:2;stroke-dasharray:5 4;opacity:1}
.node.active{border-color:#ffffff;box-shadow:0 0 0 1px #fff,0 5px 18px #0006}
.pulse{animation:pulse 1.2s ease 4;border-radius:5px}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 #ffbf0000}50%{box-shadow:0 0 0 4px #ffbf00cc}}
.guide-copy kbd{font:inherit;font-size:10px;background:#15171a;border:1px solid #666c75;border-bottom-width:2px;border-radius:3px;padding:0 4px;color:#e8eaed}
@media(max-width:1280px){.editor-guide>.guide-copy{display:none}}
/* ── Stages, steps and the step card (shared pattern with the other labs) ── */
.stage-bar{display:flex;flex-direction:column;gap:10px;padding:12px 28px 12px;border-bottom:1px solid var(--line)}
.model-switch{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.control-label{font-size:.63rem;letter-spacing:1.6px;font-weight:750;color:#aeb7c3}
.model-switch .control-label{margin-right:6px}
.model-button{background:#292e35;color:#e9eef4;border:1px solid #56606b;border-radius:6px;padding:6px 12px;min-width:140px;text-align:left;font-size:.8rem;font-weight:700}
.model-button b{color:var(--yellow);margin-right:5px}
.model-button small{display:block;color:#aab5c1;font-size:.64rem;font-weight:400;margin-top:2px}
.model-button.active{border-color:var(--yellow);background:#ffbf0014}
.guide{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.guide.n3{grid-template-columns:repeat(3,minmax(0,1fr))}.guide.n5{grid-template-columns:repeat(5,minmax(0,1fr))}
.guide li{display:flex;gap:10px;align-items:center;padding:6px 11px;border:1px solid #3b4148;border-radius:7px;background:#20242a;color:#9aa4af;cursor:pointer;transition:border-color .2s,background .2s}
.guide li b{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;background:#353b43;color:#cfd6de}
.guide li strong{display:block;font-size:.8rem;color:#d6dce3}
.guide li small{display:block;font-size:.68rem;margin-top:2px}
.guide li.done b{background:#3d6b4c;color:#dff5e5}
.guide li.current{border-color:var(--yellow);background:#ffbf0012;color:#e5e9ee}
.guide li.current b{background:var(--yellow);color:#17191b}
.workspace{height:max(700px,calc(100dvh - 250px))}
.viewer{min-height:300px;flex:1 1 55%}
.step-card{flex:0 1 auto;max-height:52%;overflow:auto;padding:16px 20px 18px;border-top:1px solid #5b4a22;background:linear-gradient(180deg,#ffbf000d,#21242a 70%)}
.step-card h3{font-size:1.05rem;margin:5px 0 6px;letter-spacing:-.02em}
.step-card p{color:#b9c1ca;font-size:.8rem;line-height:1.6;margin-bottom:10px}
.step-card ol{margin:6px 0 8px;padding-left:20px;color:#cfd6de;font-size:.78rem;line-height:1.7}
.step-card .why{color:#aeb8c4;font-size:.76rem}
.step-card.done{border-top-color:#3d6b4c;background:linear-gradient(180deg,#3d6b4c22,#21242a 70%)}
.step-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px}
.step-state{font-size:.72rem;font-weight:700;color:var(--yellow);margin-right:auto}
.step-card.done .step-state{color:#91d76c}
.exp-button{background:var(--yellow);color:#17191b;border:0;border-radius:5px;padding:8px 13px;font-weight:750;font-size:.78rem}
.exp-button:hover{background:#ffd255}
.mini-link{background:none;border:1px solid #56606b;color:#d9dfe6;border-radius:5px;padding:6px 10px;font-size:.72rem}
.mini-link:hover{border-color:#c2cad3;background:none}
/* Preview controls */
.env-picker{pointer-events:auto;display:flex;align-items:center;gap:7px;font-size:.6875rem;color:#c1c6ce}
.env-picker select{background:#272b31cc;color:#eef0f3;border:1px solid #555c67;border-radius:5px;padding:4px 6px;font-size:.72rem}
.subdiv-field{pointer-events:auto;width:230px}
.subdiv-field .bslider{height:24px}
.subdiv-field input[type=range]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.subdiv-field[hidden]{display:none}
/* New nodes */
.converter .node-header{background:#3c5a66}
.image-role{font-size:12px;color:#ffd98a;margin:2px 0 0;font-weight:600}
.color-space select{background:#292d33;color:#eee;border:1px solid #565d67;border-radius:4px;padding:2px 5px;font-size:12px}
.color-space{align-items:center}
.static-bar{display:flex;justify-content:space-between;height:22px;align-items:center;padding:0 8px;border-radius:4px;background:#4772b3;font-size:13px;margin:4px 0 6px}
.bpanel{margin-top:6px;border-top:1px solid #4a5058}
.bpanel-head{width:100%;display:flex;gap:7px;align-items:center;background:none;padding:6px 2px;font-size:14px;color:#e6e9ee;border-radius:0}
.bpanel-head:hover{background:#ffffff0d}
.bpanel .chev{font-size:10px;transition:transform .15s}
.bpanel.open .chev{transform:rotate(90deg)}
.bpanel-body{display:none;padding:2px 0 4px}
.bpanel.open .bpanel-body{display:block}
.node[hidden]{display:none}
@media(max-width:1100px){.guide li small{display:none}.model-button{min-width:0}}
@media(max-width:800px){.stage-bar{padding:10px 16px}.guide,.guide.n3,.guide.n5{grid-template-columns:1fr 1fr}.workspace{height:auto}.step-card{max-height:none}}
.editor-guide .guide-copy{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

/* Properties editor (Render · Modifiers · Material) */
.workspace{grid-template-columns:minmax(340px,31%) minmax(0,1fr) 262px}
.props-panel{display:flex;flex-direction:column;min-width:0;background:#2a2d33;border-left:1px solid var(--line);overflow:hidden}
.props-tabs{display:flex;gap:2px;padding:8px 8px 0;border-bottom:1px solid #3a3e45;background:#25282d}
.props-tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border-radius:5px 5px 0 0;padding:6px 4px;font-size:.6875rem;color:#aab1bb}
.props-tabs button svg{width:17px;height:17px}
.props-tabs button[aria-selected="true"]{background:#353941;color:#fff}
.props-body{flex:1;overflow:auto;padding:10px 12px 16px;font-size:.78rem}
.props-page[hidden]{display:none}
.pgroup{background:#31353c;border:1px solid #23262b;border-radius:6px;padding:8px 10px;margin-bottom:9px}
.pgroup h4{margin:0 0 7px;font-size:.72rem;color:#d7dbe1;font-weight:650;letter-spacing:.2px}
.prow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:5px 0;color:#c6cbd3}
.prow select{background:#545454;color:#fff;border:1px solid #1b1b1b;border-radius:4px;padding:3px 6px;font-size:.75rem;max-width:150px}
.prow b{font-weight:500;color:#fff}
.pcheck{display:flex;align-items:center;gap:8px;margin:6px 0;color:#e6e9ee;cursor:pointer}
.pcheck input{accent-color:#4772b3;width:15px;height:15px}
.pcheck.off{opacity:.45}
.pslider{margin:6px 0;height:22px}
.pslider input[type=range]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.pgroup.disabled{opacity:.45}
.glare-fields.off{opacity:.45}
.props-note{font-size:.72rem;line-height:1.5;color:#ffcf6a;margin:4px 2px 0}
.props-note:empty{display:none}
.pulse-props{animation:pulse 1.2s ease 3}
.engine-badge{pointer-events:none;margin-left:auto;margin-right:8px;font-size:.6875rem;font-weight:700;letter-spacing:.6px;padding:4px 8px;border-radius:4px;background:#15181cbf;border:1px solid #4c535d88;color:#e6e9ee}
.engine-badge.cycles{color:#ffd27a;border-color:#ffd27a88}
.preset-picker{pointer-events:auto;margin-left:10px}
.env-picker{pointer-events:auto}
.view-note{position:absolute;z-index:2;left:22px;right:22px;top:56px;font-size:.72rem;line-height:1.45;color:#ffe3a0;background:#15181cd0;border:1px solid #ffbf0055;border-radius:6px;padding:7px 10px;pointer-events:none}
.view-note[hidden]{display:none}
.node .vec3{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin:2px 0 6px}
.node .vec3 input{width:100%;border:0;background:#545454;border-radius:3px;color:#fff;font-size:12px;padding:3px 4px;text-align:center}
.node .vec-label{font-size:13px;color:#edf0f4;margin-top:4px}
.color-row{display:flex;justify-content:space-between;align-items:center;margin:4px 0 6px;font-size:14px;color:#edf0f4}
@media(max-width:1300px){.workspace{grid-template-columns:320px minmax(0,1fr) 236px}}
@media(max-width:1000px){.workspace{grid-template-columns:1fr;height:auto}.props-panel{border-left:0;border-top:1px solid var(--line)}.editor-panel{min-height:520px}}
.guide.n1{grid-template-columns:minmax(0,1fr)}.guide.n2{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-switch{flex-wrap:wrap}
#preset-field[hidden]{display:none!important}
.view-top{gap:8px}.view-top #rotate{white-space:nowrap}
.view-top{flex-wrap:wrap;row-gap:6px}
/* Parameter cards (extended tooltips) */
.param-tip{position:fixed;z-index:60;width:330px;max-width:calc(100vw - 16px);background:#1d2026f5;border:1px solid #59606b;border-radius:8px;box-shadow:0 12px 40px #000a;padding:11px 13px 12px;font-size:12.5px;line-height:1.5;color:#dfe3e8;pointer-events:none}
.param-tip[hidden]{display:none}
.param-tip .pt-name{font-weight:700;font-size:13.5px;color:#fff;margin-bottom:4px}
.param-tip p{margin:0 0 6px}
.param-tip .pt-h{font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:#9aa4b1;margin-top:6px}
.param-tip .pt-range{color:#cfd5dd}
.param-tip .pt-ex{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 7px}
.param-tip .pt-chip{display:inline-flex;align-items:center;gap:5px;background:#2c3138;border:1px solid #3d434c;border-radius:12px;padding:2px 8px;font-size:11.5px}
.param-tip .pt-chip b{font-weight:500;color:#e8ebef}
.param-tip .pt-chip em{font-style:normal;color:#ffcf6a;font-variant-numeric:tabular-nums}
.param-tip .pt-chip i{width:11px;height:11px;border-radius:50%;border:1px solid #0006}
.param-tip .pt-warn{background:#3a2a1a;border-left:3px solid #ff9e4a;border-radius:4px;padding:5px 8px;color:#f1d7bd}
.param-tip .pt-warn b{color:#ffb16a;margin-right:4px}
.param-tip .pt-engine{margin-top:6px;background:#1f2c3a;border-left:3px solid #5aa6ff;border-radius:4px;padding:5px 8px;color:#cfe3fb}
.param-tip .pt-engine b{color:#8cc2ff;margin-right:4px}
.has-param{cursor:help}
.node .has-param .bslider,.has-param input,.has-param select{cursor:inherit}
.node .bslider{cursor:ew-resize}
.tip-hint{font-size:.6875rem;color:#ffcf6a}
