@font-face{font-family:StudioCode;src:url("studio-code.woff2") format("woff2");font-display:swap}
:root{color-scheme:dark;--bg:#080808;--panel:#141414;--ink:#eeeeee;--muted:#aaaaaa;--accent:#b1ff49;--line:#303030}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:12px/1.5 StudioCode,"Cascadia Code",Consolas,"Microsoft YaHei",monospace;font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}button,select,input[type=text],input[type=number]{background:#111;border:0;border-radius:0;padding:4px 6px;min-height:26px}button{position:relative;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}button:hover{background:#181818;color:var(--accent)}button:disabled{opacity:.4;cursor:default}button[aria-pressed=true]{color:var(--accent)}input{caret-color:var(--accent)}input[type=checkbox]{accent-color:var(--accent)}input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible,canvas:focus-visible{outline:1px solid var(--accent);outline-offset:3px}::selection{background:var(--accent);color:#080808}::placeholder{color:#999}a{color:inherit}p{margin:0}h1,h2,h3{font:inherit;margin:0}button,select{font-size:11px}[hidden]{display:none!important}
.studio{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:24px;margin:16px 24px 10px;align-items:start}.workbench{min-width:0}.studio-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.studio-heading h1{font-size:24px;font-weight:500;letter-spacing:-.03em}.studio-heading p{display:none}.cursor{color:var(--accent);animation:cursor 1.2s steps(2,end) infinite}.heading-actions{display:flex;gap:6px;align-items:center}#code-signal{width:88px;text-align:center;color:var(--accent);font-size:11px}#language-toggle{color:var(--accent)}
.studio-stage{position:relative;background:#000;border:0;height:calc(100dvh - 178px);min-height:380px;overflow:hidden}.studio-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.studio-stage canvas:active{cursor:grabbing}.studio-overlay{position:absolute;top:12px;left:14px;right:14px;display:flex;justify-content:space-between;gap:10px;align-items:start;pointer-events:none}.studio-overlay span{font-size:11px;color:var(--muted)}.view-actions{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;pointer-events:auto}.view-actions button{background:#101010df;font-size:11px}.studio-caption{position:absolute;bottom:62px;left:14px;right:14px;display:flex;justify-content:space-between;gap:12px;pointer-events:none;color:var(--muted);font-size:11px}#reference-panel{position:absolute;right:12px;bottom:90px;width:32%;padding:6px;border:0;background:#111;pointer-events:none}#reference-panel img{display:block;width:100%}#reference-panel span{font-size:11px;color:var(--muted)}#render-error{position:absolute;inset:0;padding:64px 20px;z-index:3;background:var(--panel)}
.transport{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;margin:8px 0 3px;color:var(--muted);font-size:11px}.transport label{display:flex;align-items:center;gap:6px}.duration-label input{width:56px}#play{color:var(--accent);min-width:38px}.timeline{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted)}.timeline label,.timeline output{white-space:nowrap}.timeline input{flex:1}.timeline output{min-width:110px;text-align:right}#action-status{display:block;margin:5px 0;font-size:11px;color:var(--muted);min-height:15px}.port-notes{border-top:0;padding-top:3px}.port-notes summary{font-size:11px;color:var(--muted);cursor:pointer}.port-notes p{max-width:75ch;font-size:11px;color:var(--muted);line-height:1.8;margin:10px 0}
.studio-panel{height:calc(100dvh - 62px);min-height:380px;display:flex;flex-direction:column;position:sticky;top:16px;min-width:0}.parameter-dock{flex:none;padding-bottom:10px;border-bottom:0}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.panel-title h2{font-size:12px;color:var(--accent)}.panel-title h2:before{content:"// ";color:var(--muted)}.preset-tools{border-bottom:1px solid #252525;padding-bottom:8px;display:grid;grid-template-columns:26px repeat(3,minmax(0,1fr));gap:4px}.preset-tools button{font-size:11px;padding:4px 2px}.local-presets{margin-top:12px}.local-presets h3{font-size:11px;margin-bottom:5px}.preset-create{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px}.preset-create input{width:100%;min-width:0;font-size:11px}.local-presets p{font-size:11px;color:var(--muted);line-height:1.5;margin-top:5px}#local-preset-list{display:flex;flex-wrap:wrap;gap:4px;max-height:88px;overflow:auto;margin-top:6px}.saved-preset{display:flex;min-width:0;max-width:100%}.saved-preset button{font-size:11px}.saved-preset button:first-child{max-width:125px;overflow:hidden;text-overflow:ellipsis}.saved-preset .preset-update,.saved-preset .preset-remove{border-left:0;padding:3px 5px}.parameter-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:8px;scrollbar-width:thin;scrollbar-color:#555 transparent}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{background:#555}.param-group{border-bottom:1px solid #252525;margin-bottom:2px;padding-bottom:5px}.param-group summary{display:flex;justify-content:space-between;align-items:center;list-style:none;cursor:pointer;padding:10px 0;font-size:11px}.param-group summary:before{content:"+";color:var(--accent);margin-right:8px}.param-group[open] summary:before{content:"−"}.param-group summary svg{width:12px;height:12px;stroke:var(--muted);margin-left:auto}.param-group[open] summary svg{transform:rotate(180deg)}.group-hint{display:none}.field{display:grid;grid-template-columns:minmax(100px,1.1fr) minmax(40px,1fr) 84px;gap:8px;align-items:center;min-height:28px;margin-bottom:2px}.field-row{display:contents}.field-row label{grid-column:1;grid-row:1;font-size:11px}.field-row input{grid-column:3;grid-row:1;width:84px;min-width:0;font-size:11px;padding:3px 4px;color:var(--accent)}.field>input[type=range]{grid-column:2;grid-row:1}.field-select,.field-check{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;min-height:28px;margin-bottom:2px}.field-select select{max-width:170px;min-width:0}.field-check input{margin-right:2px;width:14px;height:14px}.field-color{display:grid;grid-template-columns:minmax(0,1fr) 26px 76px;gap:8px;align-items:center;min-height:28px;margin-bottom:3px}.field-color label{font-size:11px}.field-color input[type=color]{width:26px;height:23px;padding:1px;background:#111;border:1px solid var(--line);cursor:pointer}.field-color input[type=text]{width:76px;font-size:11px;min-height:23px}.field-color input[aria-invalid=true]{outline:1px solid var(--accent)}
input[type=range]{appearance:none;-webkit-appearance:none;width:100%;min-width:0;height:22px;margin:0;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:1px;background:linear-gradient(to right,#555 0,#555 calc(var(--range-position,50%) - 6px),transparent calc(var(--range-position,50%) - 6px),transparent calc(var(--range-position,50%) + 6px),#555 calc(var(--range-position,50%) + 6px),#555 100%)}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:2px;height:14px;margin-top:-6.5px;background:var(--accent);border:0;border-radius:0}input[type=range]::-moz-range-track{height:1px;background:linear-gradient(to right,#555 0,#555 calc(var(--range-position,50%) - 6px),transparent calc(var(--range-position,50%) - 6px),transparent calc(var(--range-position,50%) + 6px),#555 calc(var(--range-position,50%) + 6px),#555 100%)}input[type=range]::-moz-range-thumb{width:2px;height:14px;border:0;border-radius:0;background:var(--accent)}.light-direction{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:8px}.light-direction h3{font-size:11px;margin-bottom:4px}.light-direction p{display:none}.light-direction output{display:block;white-space:pre-line;font-size:11px;color:var(--muted);margin-bottom:5px}.light-direction canvas{width:100px;height:100px;touch-action:none;cursor:grab}.light-direction canvas:active{cursor:grabbing}
footer{border-top:0;padding:6px 24px;display:flex;justify-content:space-between;gap:12px;font-size:10px;color:var(--muted)}.footer-live{color:var(--accent)}@keyframes cursor{50%{visibility:hidden}}
@media(min-width:1600px){.studio{grid-template-columns:minmax(0,1fr) 390px}}@media(max-width:1050px){.studio{grid-template-columns:minmax(0,1fr) 320px;gap:16px;margin:12px 16px}.studio-heading h1{font-size:20px}#code-signal{width:64px;font-size:10px}.studio-caption span:last-child{display:none}.studio-overlay{flex-direction:column;gap:6px}.field{grid-template-columns:minmax(100px,1.2fr) minmax(35px,1fr) 84px}.field-row input{width:84px}}
@media(max-width:760px){.studio{display:block;margin:12px}.studio-heading{gap:6px}.studio-heading h1{font-size:20px}.heading-actions{gap:4px}.heading-actions button{font-size:11px;padding:4px}.studio-stage{height:52dvh;min-height:300px}.studio-panel{height:80dvh;min-height:360px;top:8px;margin-top:18px;background:var(--bg)}.parameter-scroll{padding-right:6px}.timeline{gap:6px}.timeline output{min-width:98px;font-size:10px}.view-actions button{min-height:28px}.saved-preset button{min-height:28px}footer{padding:6px 12px;flex-wrap:wrap;font-size:10px}footer span:nth-child(2){order:3;flex-basis:100%}}
@media(prefers-reduced-motion:reduce){.cursor{animation:none}button{transition:none}}

input[type=number]{appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}@media(max-width:760px){#code-signal{display:none}}

/* Boundary hierarchy: one four-corner stage, quiet fields, unframed actions. */
button{padding-left:8px;padding-right:8px;background:transparent}
.studio-stage::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background-image:linear-gradient(#777,#777),linear-gradient(#777,#777),linear-gradient(#777,#777),linear-gradient(#777,#777),linear-gradient(#777,#777),linear-gradient(#777,#777),linear-gradient(#777,#777),linear-gradient(#777,#777);background-size:9px 1px,1px 9px,9px 1px,1px 9px,9px 1px,1px 9px,9px 1px,1px 9px;background-position:left top,left top,right top,right top,left bottom,left bottom,right bottom,right bottom;background-repeat:no-repeat}
input[type=number]{background:transparent;border:0;border-bottom:1px solid #252525}
input[type=text],select{background:#101010;border:1px solid #303030}
input[type=number]:hover{border-bottom-color:#555}
.parameter-dock{border-bottom:1px solid #252525;margin-bottom:5px;padding-bottom:12px}
.saved-preset{border:1px solid #303030;background:#101010;gap:0}
.saved-preset:has(button[aria-pressed=true]){border-color:color-mix(in srgb,var(--accent) 45%,#303030);background:color-mix(in srgb,var(--accent) 8%,#080808)}
.saved-preset button{background:transparent}
.view-actions{background:#000a;padding:2px}
.view-actions button{background:transparent}
footer{border-top:1px solid #202020}
.viewport-controls{position:absolute;bottom:12px;left:14px;right:14px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:8px 0;background:#000d;z-index:1}
.viewport-controls .timeline{min-width:0}.viewport-quality label{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:11px}.viewport-quality select{width:132px}
.saved-preset .preset-update,.saved-preset .preset-remove{border:0}
@media(max-width:1050px){.viewport-controls{gap:12px}.viewport-controls .timeline label{display:none}.viewport-quality select{width:112px}.viewport-controls .timeline output{min-width:100px}}
@media(max-width:760px){.viewport-controls{left:14px;right:14px;grid-template-columns:1fr;gap:5px;padding:5px 0}.viewport-quality{grid-row:1;justify-self:end}.viewport-quality select{width:130px}.viewport-controls .timeline{grid-row:2}.viewport-controls .timeline label{display:block}.studio-caption{bottom:94px}.timeline output{min-width:98px}#reference-panel{bottom:114px}}

@media(max-width:420px){.transport{gap:4px}.transport button{padding-left:6px;padding-right:6px}.transport #play{min-width:28px}.duration-label input{width:44px}.transport label{gap:4px}}

/* Live phase instruments oppose one another across the render field. */
.phase-telemetry{position:absolute;inset:0;pointer-events:none;z-index:1}
.phase-readout{position:absolute;min-width:148px;color:var(--ink);font-variant-numeric:tabular-nums;padding:0 0 0 12px}
.phase-one{left:22px;top:92px}
.phase-two{right:22px;bottom:112px;text-align:right;padding:0 12px 0 0}
.phase-label{display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--muted);font-size:11px;letter-spacing:.04em;margin-bottom:5px}
.phase-unit{font-size:10px;color:#aaa}
.phase-readout output{display:flex;align-items:baseline;gap:3px;white-space:nowrap;line-height:1}
.phase-two output{justify-content:flex-end}
.phase-integer{font-size:38px;letter-spacing:-.06em;color:var(--accent)}
.phase-fraction{font-size:20px;letter-spacing:-.03em}
.phase-cycle{font-size:10px;color:#999;margin-top:7px;letter-spacing:.1em}
.phase-readout::before{content:"";position:absolute;top:0;bottom:0;left:0;width:1px;background:#383838}
.phase-readout::after{content:"";position:absolute;top:24px;left:-3px;width:7px;height:1px;background:var(--accent)}
.phase-two::before{left:auto;right:0}.phase-two::after{left:auto;right:-3px;top:auto;bottom:22px}
@media(max-width:1050px){.phase-one{top:108px;left:18px}.phase-two{right:18px;bottom:110px}.phase-readout{min-width:118px}.phase-integer{font-size:30px}.phase-fraction{font-size:16px}}
@media(max-width:760px){.phase-one{left:14px;top:94px}.phase-two{right:14px;top:116px;bottom:auto}.phase-readout{min-width:105px;padding-left:9px}.phase-two{padding-left:0;padding-right:9px}.phase-integer{font-size:25px}.phase-fraction{font-size:13px}.phase-label{gap:10px;font-size:10px;margin-bottom:4px}.phase-unit{font-size:10px}.phase-cycle{font-size:9px;margin-top:5px}.phase-readout::after{top:22px}.phase-two::after{top:auto;bottom:16px}}

.icon-button{display:inline-flex;align-items:center;justify-content:center;padding:4px;min-width:26px;flex:none}.icon-button svg{display:block;width:16px;height:16px}.preset-export-group{display:flex;align-items:center;min-width:0;gap:2px}.preset-export-group #save-preset{flex:1;min-width:0}.preset-export-group #save-all-presets{min-width:24px}
.studio-stage:fullscreen{width:100vw;height:100dvh;min-height:0;background:#000;overflow:hidden}
.studio-stage::backdrop{background:#000}
#action-status:empty{display:none}

.accent-control{position:relative;display:flex;align-items:center}
#accent-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:5;display:grid;grid-template-columns:26px 82px auto;gap:7px;align-items:center;padding:10px;background:#101010;border:1px solid #303030;min-width:236px}
#accent-panel label{grid-column:1/-1;font-size:11px;color:var(--muted)}
#ui-accent{width:26px;height:26px;border:1px solid #303030;padding:1px;background:#101010;cursor:pointer}
#ui-accent-hex{width:82px;min-width:0;font-size:11px}
#ui-accent-hex[aria-invalid=true]{outline:1px solid var(--accent)}
.studio-stage:fullscreen #view-fullscreen{color:var(--accent)}
@media(max-width:760px){#accent-panel{right:-28px}.heading-actions{gap:2px}}
