:root{--bg:#0b0b0d;--panel:#141518;--raise:#1d1f24;--line:#2a2d34;--text:#e9e7e2;--dim:#9a9ca3;--accent:#ffb224;--accent-ink:#1a1200;--danger:#ff6b5e;--ok:#6fd08c;--radius:8px;--scenebar:44px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}button,input,select{font:inherit;color:inherit}h2{margin:0 0 12px;font-size:16px}h3{letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:20px 0 8px;font-size:11px;font-weight:600}p{margin:0 0 10px}#app{grid-template:"top top top""left stage right"minmax(0,1fr)/270px minmax(0,1fr) 310px;height:100dvh;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--line);grid-area:top;align-items:center;gap:8px;min-width:0;padding:8px 12px;display:flex}.brand{letter-spacing:.02em;white-space:nowrap;font-weight:600}.brand b{background:var(--accent);color:var(--accent-ink);border-radius:4px;padding:2px 6px}.spacer{flex:1}.group{gap:2px;display:flex}.design-name{background:0 0;border:1px solid #0000;border-radius:6px;flex-shrink:1;width:190px;min-width:60px;padding:6px 8px;font-weight:600}.design-name:hover,.design-name:focus{border-color:var(--line);background:var(--raise);outline:none}.status{color:var(--dim);white-space:nowrap;font-size:12px}.status[data-state=saved-cloud]:before,.status[data-state=saved-local]:before{content:"● ";color:var(--ok)}.status[data-state=error],.status[data-state=conflict]{color:var(--danger)}button{background:var(--raise);border:1px solid var(--line);cursor:pointer;border-radius:6px;min-height:34px;padding:7px 11px}button:hover:not(:disabled){background:#24272d;border-color:#454953}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.primary:hover:not(:disabled){background:#ffc24f;border-color:#ffc24f}button.ghost{background:0 0}button.ghost[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.icon{padding:4px 9px;font-size:16px;line-height:1}button.danger{color:var(--danger)}.seg{display:flex}.seg button{border-radius:0;margin-left:-1px;padding:7px 10px}.seg button:first-child{border-radius:6px 0 0 6px;margin-left:0}.seg button:last-child{border-radius:0 6px 6px 0}.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);position:relative}.panel{background:var(--panel);overscroll-behavior:contain;overflow-y:auto}.panel.left{border-right:1px solid var(--line);grid-area:left}.panel.right{border-left:1px solid var(--line);grid-area:right}@media (min-width:861px){#app[data-right=hidden]{grid-template-columns:270px minmax(0,1fr) 0}#app[data-right=hidden] .panel.right{display:none}}.inspector{padding:14px}.section{border-bottom:1px solid var(--line)}.section summary{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);padding:11px 14px;font-size:11px;font-weight:600}.section-body{padding:0 14px 14px}.field{grid-template-columns:1fr 76px;align-items:center;gap:2px 8px;margin-bottom:10px;display:grid}.field>span:first-child{color:var(--dim);grid-column:1/-1;font-size:12px}.field.wide{grid-template-columns:1fr}.field input[type=text],.field select,.numbox input{background:var(--raise);border:1px solid var(--line);border-radius:6px;width:100%;min-height:32px;padding:6px 8px}.numbox{display:block;position:relative}.numbox input{font-variant-numeric:tabular-nums;appearance:textfield;padding-right:22px}.numbox input::-webkit-inner-spin-button{display:none}.numbox i{color:var(--dim);pointer-events:none;font-size:12px;font-style:normal;position:absolute;top:50%;right:7px;transform:translateY(-50%)}input[type=range]{width:100%;accent-color:var(--accent);min-width:0;height:28px;margin:0}.checks{gap:6px;margin-top:4px;display:grid}.check{cursor:pointer;align-items:center;gap:8px;display:flex}.check input{accent-color:var(--accent);width:16px;height:16px}.hint{color:var(--dim);font-size:12px}.hint-list{color:var(--dim);margin:0 0 12px;padding-left:16px;font-size:12px}.hint-list li{margin-bottom:4px}.perf-row{align-items:center;gap:8px;margin-top:6px;display:flex}.perf-row .check{flex:1}.perf-row .count{text-align:right;opacity:.7;font-variant-numeric:tabular-nums;min-width:1.5em}.perf-row button.small{padding:3px 10px;font-size:13px}.labels span.perf{border-radius:4px;font-style:italic}.adders{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;display:grid}.adders button{padding:6px;font-size:13px}.tree{gap:2px;display:grid}.row{text-align:left;background:0 0;border-color:#0000;align-items:center;gap:8px;width:100%;min-height:32px;padding:5px 8px;display:flex}.row.on{background:#3a2c0c;border-color:#6b5010}.row .grow,.lib-row .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.row.pos{margin-top:4px;font-weight:600}.row .kind{text-transform:uppercase;letter-spacing:.06em;color:var(--dim);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:10px;font-weight:500}.row .count{color:var(--dim);font-size:12px;font-weight:400}.row .swatch{border-radius:50%;flex:none;width:12px;height:12px;box-shadow:0 0 0 1px #0008}.row.fx{border:1px solid #0000;border-radius:6px;gap:2px;padding:0 0 0 14px}.row.fx>button{background:0 0;border:0;min-height:30px}.row.fx>.grow{text-align:left;align-items:center;gap:8px;padding:5px 8px 5px 4px;display:flex}.row.fx .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row.fx>.swatch{width:24px;height:30px;box-shadow:none;border-radius:6px;place-items:center;padding:0;display:grid}.row.fx>.swatch:before{content:"";background:var(--c);width:12px;height:12px;opacity:var(--o);border-radius:50%;box-shadow:0 0 0 1px #0008}.row.fx>.swatch:hover{background:var(--raise)}.row.fx>.swatch[aria-pressed=false]:before{opacity:1;box-sizing:border-box;border:2px solid var(--c);box-shadow:none;background:linear-gradient(135deg, transparent calc(50% - 1px), var(--c) calc(50% - 1px) calc(50% + 1px), transparent calc(50% + 1px))}.row.fx.off .grow{color:var(--dim)}.level-row{grid-template-columns:1fr auto;align-items:end;gap:10px;display:grid}.level-row .check{padding-bottom:8px}.row.prop{padding-left:8px}.row.prop .dot{background:var(--c);border-radius:3px;flex:none;width:12px;height:12px;box-shadow:0 0 0 1px #fff3}.prop-kinds button{padding:6px 8px;font-size:13px;line-height:1.25}.prop-list:not(:empty){margin-top:4px}.with-btn{grid-template-columns:1fr auto;align-items:end;gap:8px;display:grid}.with-btn>button{margin-bottom:10px;padding:6px 10px}.row .ch{color:var(--dim);font-variant-numeric:tabular-nums;min-width:20px;font-size:12px}.stats{grid-template-columns:1fr auto;gap:6px 12px;margin:0 0 14px;display:grid}.stats dt{color:var(--dim)}.stats dd{font-variant-numeric:tabular-nums;text-align:right;margin:0;font-weight:600}.type-grid,.prop-kinds{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;display:grid}.type-grid button,.prop-kinds button{text-align:left;gap:2px;padding:8px;display:grid}.type-grid b{font-size:13px;font-weight:600}.type-grid small{color:var(--dim)}.actions{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.actions button{flex:1}.wide-btn{width:100%;margin-bottom:12px}.wide-btn.armed{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.gels{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.gel{aspect-ratio:1;border:2px solid #0006;border-radius:50%;min-height:0;padding:0}.gel.on{box-shadow:0 0 0 2px var(--accent);border-color:#fff}.gel-row{justify-content:space-between;align-items:center;gap:8px;margin:8px 0 0;display:flex}.gobo-label{color:var(--dim);font-size:12px}.gobo-section[hidden]{display:none}.gobos{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.gobo{aspect-ratio:1;background:#000;border:2px solid #0006;border-radius:50%;min-height:0;padding:0;overflow:hidden}.gobo img{width:100%;height:100%;display:block}.gobo[aria-pressed=true]{box-shadow:0 0 0 2px var(--accent);border-color:#fff}.gobo-name{margin-bottom:10px}.gobo-section [hidden]{display:none}.gel-name{color:var(--text);background:var(--raise);border:1px solid var(--line);border-radius:6px;flex:1;min-width:0;padding:4px 8px;font-size:12px}.readout{background:var(--raise);border:1px solid var(--line);border-radius:var(--radius);margin:2px 0 12px;padding:8px 10px;font-size:12px}.readout p{color:var(--dim);margin:0}.readout .from{color:var(--text);margin-bottom:4px;font-weight:600}.readout dl{grid-template-columns:auto 1fr auto 1fr;gap:2px 8px;margin:0;display:grid}.readout dt{color:var(--dim)}.readout dd{font-variant-numeric:tabular-nums;margin:0}.readout .warn{color:var(--accent);margin-top:6px}dialog.plot-dialog{width:min(1180px,96vw)}.plot-layout{grid-template-columns:240px 1fr;align-items:start;gap:16px;display:grid}.plot-opts h3{margin-top:14px}.plot-preview{background:#fff;border-radius:4px;width:100%;height:auto;box-shadow:0 2px 12px #0008}.print-sheet{display:none}@media print{body>:not(.print-sheet){display:none!important}.print-sheet,.print-sheet img{display:block}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body{color:#111;margin:0;background:#fff!important}}.paperwork{color:#111;background:#fff;padding:12mm;font:10pt/1.35 system-ui,-apple-system,Segoe UI,sans-serif}.paperwork header{border-bottom:1.5pt solid #111;margin-bottom:6mm;padding-bottom:2mm;display:block}.paperwork h1{margin:0 0 1mm;font-size:16pt}.paperwork header p{color:#444;margin:0}.paperwork h2{break-after:avoid;margin:6mm 0 2mm;font-size:12pt}.paperwork section{break-inside:auto}.paperwork table{border-collapse:collapse;width:100%}.paperwork th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:#444;border-bottom:1pt solid #111;padding:1mm 1.5mm;font-size:8.5pt}.paperwork td{vertical-align:top;border-bottom:.5pt solid #ccc;padding:1mm 1.5mm}.paperwork tr{break-inside:avoid}.paperwork .n{text-align:right;font-variant-numeric:tabular-nums}.paperwork .note,.paperwork .none{color:#444;margin:2mm 0 0;font-size:9pt}.paperwork .foot{color:#888;text-align:right;margin-top:8mm;font-size:8pt}dialog.paper-dialog{width:min(1100px,96vw)}.paper-preview{border-radius:4px;max-height:62vh;overflow:auto;box-shadow:0 2px 12px #0008}.paper-opts .check{margin-bottom:6px}.paper-opts .check small{color:var(--dim);display:block}@media print{.print-sheet .paperwork{padding:0}.print-sheet thead{display:table-header-group}}dialog.cue-dialog{width:min(980px,94vw)}.cue-wrap{max-height:60vh;margin:8px 0 12px;overflow:auto}table.cues{border-collapse:collapse;width:100%;font-size:13px}table.cues th{text-align:left;color:var(--dim);background:var(--panel);padding:4px;font-size:12px;font-weight:600;position:sticky;top:0}table.cues td{padding:3px 4px}table.cues tr.on td:first-child{box-shadow:inset 3px 0 var(--accent)}table.cues input{background:var(--raise);border:1px solid var(--line);border-radius:6px;width:100%;min-height:30px;padding:4px 6px}table.cues input.q{text-align:right;font-variant-numeric:tabular-nums;width:64px}table.cues input.page{width:80px}table.cues td.num input{text-align:right;width:72px}details.sub{border-top:1px solid var(--line);margin:12px 0 4px;padding-top:8px}details.sub>summary{cursor:pointer;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin-bottom:8px;font-size:12px;font-weight:600}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pair .field{grid-template-columns:1fr}.pair .field input{background:var(--raise);border:1px solid var(--line);border-radius:6px;width:100%;min-height:32px;padding:6px 8px}.custom{color:var(--dim);align-items:center;gap:6px;font-size:12px;display:flex}.custom input{border:1px solid var(--line);background:0 0;border-radius:6px;width:34px;height:28px;padding:0}.stage{grid-area:stage;min-width:0;min-height:0;position:relative}.viewport{inset:0 0 var(--scenebar) 0;position:absolute;overflow:hidden}.scenebar{height:var(--scenebar);background:var(--panel);border-top:1px solid var(--line);scrollbar-width:thin;align-items:center;gap:6px;padding:0 8px;display:flex;position:absolute;bottom:0;left:0;right:0;overflow-x:auto}.scenebar>button,.scenebar .chips>*{flex:none;min-height:30px}.scenebar .icon{padding:2px 10px;font-size:18px}.scenebar .hint{white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.scenebar .scene-save{white-space:nowrap;padding:4px 10px}.chips{scrollbar-width:none;flex:0 auto;align-items:center;gap:4px;min-width:0;display:flex;overflow-x:auto}.chip{white-space:nowrap;text-overflow:ellipsis;max-width:220px;padding:3px 10px;overflow:hidden}.chip b{color:var(--dim);font-variant-numeric:tabular-nums;font-weight:600}.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.chip.on b{color:var(--accent-ink)}.chip-more{margin-left:-2px;padding:2px 8px}.chip-edit{background:var(--raise);border:1px solid var(--accent);border-radius:6px;width:160px;min-height:30px;padding:4px 8px}.scope{color:var(--accent);margin:-4px 0 10px;font-size:11px}.scope[hidden]{display:none}.viewport canvas{touch-action:none;display:block}.focusing .viewport canvas{cursor:crosshair}.labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.labels span{font-variant-numeric:tabular-nums;background:#000b;border:1px solid #fff5;border-radius:9px;padding:0 6px;font-size:11px;position:absolute;top:0;left:0}.fatal{color:var(--dim);max-width:420px;padding:40px}.toast{border:1px solid var(--line);border-radius:var(--radius);opacity:0;pointer-events:none;z-index:30;background:#26282e;max-width:min(92vw,460px);padding:10px 14px;transition:all .2s;position:fixed;bottom:60px;left:50%;transform:translate(-50%,20px);box-shadow:0 8px 30px #000a}.toast.show{opacity:1;transform:translate(-50%)}dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:12px;width:min(92vw,480px);max-height:86dvh;padding:18px}dialog::backdrop{background:#000a}dialog header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}dialog header h2{margin:0}dialog.help{width:min(92vw,620px)}dialog.help section h3{margin-top:16px}dialog.help section:first-of-type h3{margin-top:4px}dialog.help .hint-list{color:var(--text);font-size:13px}kbd{background:var(--raise);border:1px solid var(--line);white-space:nowrap;border-bottom-width:2px;border-radius:4px;padding:2px 5px;font:12px/1 ui-monospace,SFMono-Regular,Menlo,monospace}table.keys{border-collapse:collapse;width:100%;margin-bottom:8px;font-size:13px}table.keys td{vertical-align:top;padding:4px 8px 4px 0}table.keys td:first-child{white-space:nowrap;width:1%}.lib{gap:6px;max-height:42dvh;margin-bottom:4px;display:grid;overflow:auto}.lib-row{gap:6px;display:flex}.lib-row .grow,.export button{text-align:left;gap:2px;padding:9px 11px;display:grid}.lib-row.on .grow{opacity:1;background:#3a2c0c;border-color:#6b5010}.lib-row small,.export small{color:var(--dim);font-size:12px}.export{gap:8px;display:grid}.export h3{margin:6px 0 -2px}.export h3:first-child{margin-top:0}.share{margin-bottom:16px}.copy{gap:6px;display:flex}.copy input{background:var(--raise);border:1px solid var(--line);border-radius:6px;flex:1;min-width:0;padding:6px 8px;font-size:12px}.mobile-nav,.narrow-only{display:none}@media (max-width:860px){#app{grid-template:"top""stage"minmax(0,1fr)"sheet""nav"/minmax(0,1fr)}.topbar{flex-wrap:wrap;gap:6px;padding:6px 8px}.topbar button{padding:6px 8px;font-size:13px}.topbar .seg button{padding:6px 7px}.brand,.status,.spacer,.topbar .wide-only{display:none}.topbar .narrow-only{display:inline-block}.design-name{flex:100px;order:-3}.topbar .group{order:-2}.topbar .primary{order:-1}.panel.left,.panel.right{border:0;border-top:1px solid var(--line);grid-area:sheet;max-height:44dvh;display:none}#app[data-sheet=left] .panel.left,#app[data-sheet=right] .panel.right{display:block}.mobile-nav{background:var(--panel);border-top:1px solid var(--line);grid-area:nav;display:flex}.mobile-nav button{min-height:48px;color:var(--dim);background:0 0;border:0;border-radius:0;flex:1;font-size:14px}#app[data-sheet=left] .mobile-nav button[data-for=left],#app[data-sheet=right] .mobile-nav button[data-for=right]{color:var(--accent);font-weight:600}.panel button,.field input[type=text],.field select,.numbox input{min-height:40px}.panel .gel{min-height:0}.toast{bottom:64px}}@media (prefers-reduced-motion:reduce){.toast{transition:none}}
