:root{--bg: #000;--side: #111113;--s1: #1c1c1e;--s2: #2c2c2e;--track: #48484a;--segsel: #636366;--sep: rgba(84, 84, 88, .65);--text: #fff;--muted: rgba(235, 235, 245, .6);--accent: #ff9f0a;--accent-ink: #000;--live: #ff453a;--ok: #30d158;--focus: #0a84ff;--glass: rgba(28, 28, 30, .62);--sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", Inter, "IBM Plex Sans Thai", "Noto Sans Thai", "Leelawadee UI", "Thonburi", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.4 var(--sans);overflow:hidden;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}[hidden]{display:none!important}.ic{display:inline-flex;flex:none}.shell{height:100%;display:flex}.side{flex:0 0 232px;background:var(--side);border-right:.5px solid var(--sep);padding:calc(env(safe-area-inset-top,0px) + 20px) 12px 16px;display:flex;flex-direction:column;gap:22px;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:0 8px}.brand .mark{width:34px;height:34px;border-radius:9px;background:var(--s2);color:var(--accent);display:grid;place-items:center}.brand b{display:block;font-size:15px;font-weight:600}.brand small{display:block;font-size:12px;color:var(--muted)}.nav{display:flex;flex-direction:column;gap:2px}.nav button{height:36px;border:0;border-radius:8px;padding:0 10px;display:flex;align-items:center;gap:10px;text-align:left;font-size:14px;font-weight:500;background:transparent;color:#ebebf5d9}.nav button:hover{background:#ffffff0f}.nav button.on{background:#ff9f0a29;color:var(--accent)}.nav .lb{flex:1}.nav .badge{font-size:12px;color:var(--muted)}.libwrap{display:flex;flex-direction:column;gap:4px}.libwrap .cap{padding:0 10px 4px}.lib{display:flex;flex-direction:column;gap:2px}.lib button{height:34px;border:0;border-radius:8px;padding:0 10px;display:flex;align-items:center;gap:10px;text-align:left;font-size:14px;background:transparent}.lib button:hover{background:#ffffff0f}.lib button.on{background:#ffffff1a}.lib .key{font-size:12px;color:var(--muted)}.sdot{width:10px;height:10px;border-radius:50%;flex:none;background:#8e8e93;display:inline-block}.sdot.bridge{background:var(--ok)}.sdot.local{background:var(--accent)}.sdot.connecting,.sdot.reconnecting{background:#ffd60a}.bridge{margin-top:auto;background:var(--s1);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}.bridge b{font-size:13px;font-weight:600}.bridge small{font-size:12px;color:var(--muted)}.main{flex:1;min-width:0;display:flex;gap:20px;padding:calc(env(safe-area-inset-top,0px) + 20px) 24px 20px}.stagecol{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}.stagehead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;min-height:44px}.stagehead .ttl{display:flex;flex-direction:column;gap:2px;min-width:0}.stagehead h1{margin:0;font-size:24px;font-weight:700;letter-spacing:-.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modeline{font-size:13px;color:var(--muted)}.modeline.live{color:var(--live);font-weight:600}.stagehead .acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.segm{display:flex;padding:3px;border-radius:10px;background:var(--s1)}.segm button{height:32px;min-width:84px;padding:0 12px;border:0;border-radius:8px;font-size:13px;font-weight:600;background:transparent;color:#ebebf5b3;display:flex;align-items:center;justify-content:center;gap:6px}.segm button.on{background:var(--segsel);color:#fff}.segm button.live.on{background:var(--live);animation:livepulse 2s ease-in-out infinite}.segm button:disabled{opacity:.45;cursor:not-allowed}.ldot{width:7px;height:7px;border-radius:50%;background:var(--live)}.segm button.live.on .ldot{background:#fff}@keyframes livepulse{50%{box-shadow:0 0 0 4px #ff453a40}}.tbtn{height:38px;padding:0 14px;border-radius:10px;border:0;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;background:var(--s1);color:#fff}.tbtn:hover{background:var(--s2)}.tbtn.bo.on{background:var(--live)}.badge-art{background:#bf5af2;color:#fff;font:600 11px var(--mono);padding:3px 7px;border-radius:999px}body.is-live .viewport{box-shadow:inset 0 0 0 2px var(--live)}.viewport{position:relative;flex:1;min-height:240px;border-radius:20px;overflow:hidden;background:radial-gradient(120% 90% at 50% 40%,#121826,#05070c 70%)}#stage{position:absolute;inset:0;touch-action:none}#stage canvas{display:block}.glass{background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:.5px solid rgba(255,255,255,.14)}.tools{position:absolute;top:14px;right:14px;display:flex;gap:2px;padding:4px;border-radius:12px;z-index:2}.tools button{width:36px;height:36px;border:0;border-radius:8px;background:transparent;color:#fff;display:grid;place-items:center}.tools button:hover{background:#ffffff14}.tools button.on{background:#ff9f0a38;color:var(--accent)}.hint{position:absolute;left:16px;bottom:14px;padding:6px 10px;border-radius:8px;font-size:12px;color:#ebebf5cc;z-index:2;pointer-events:none;border:0}.ptag{position:absolute;left:14px;top:14px;padding:6px 6px 6px 12px;border-radius:999px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px;z-index:2}.ptag .x{border:0;width:26px;height:26px;border-radius:50%;background:#ffffff1f}.loading{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:1;color:var(--muted);font-size:13px}.banner{position:absolute;left:50%;top:64px;transform:translate(-50%);z-index:3;background:#3a2408eb;border:.5px solid #a16207;color:#fde68a;padding:6px 12px;border-radius:10px;font-size:12.5px;display:flex;gap:10px;align-items:center;max-width:calc(100% - 24px)}.place-hint{position:absolute;left:50%;top:64px;transform:translate(-50%);background:var(--accent);color:var(--accent-ink);padding:8px 12px;border-radius:10px;font-weight:600;z-index:4;font-size:13px;text-align:center;max-width:calc(100% - 32px)}#labels{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:5}.lbl{position:absolute;left:0;top:0;font:600 10px/1 var(--mono);color:#fff;background:#000000b3;border:.5px solid var(--sep);padding:2px 4px;border-radius:4px;white-space:nowrap}.lbl.sel{background:var(--accent);color:var(--accent-ink)}#boxsel{position:fixed;border:1.5px dashed var(--accent);background:#ff9f0a14;pointer-events:none;display:none;z-index:6}.timeline{background:var(--s1);border-radius:16px;padding:10px 14px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.timeline .play{flex:none;width:40px;height:40px;border-radius:20px;border:0;background:var(--accent);color:#000;display:grid;place-items:center}.tl-sm{flex:none;width:32px;height:32px;border-radius:16px;border:0;background:var(--s2);color:#fff;display:grid;place-items:center}.tl-sm .ic svg{width:14px;height:14px}.time{font-size:13px;font-variant-numeric:tabular-nums;color:#ebebf5bf;min-width:76px}.clips{flex:1 1 240px;min-width:0;display:grid;gap:4px}.clip{position:relative;height:28px;border:0;border-radius:6px;padding:0 8px;font-size:12px;font-weight:500;text-align:left;overflow:hidden;background:var(--s2);color:#ebebf5d9}.clip span{position:relative;z-index:1;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clip.on{background:#ff9f0a73;color:#000;font-weight:600}.clip .fill{position:absolute;inset:0 auto 0 0;width:0;background:var(--accent);transition:width .25s linear}.kbd{font-size:12px;color:var(--muted)}.inspector{flex:0 0 340px;min-width:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.body{display:flex;flex-direction:column;gap:18px;padding-bottom:24px}.sec{display:flex;flex-direction:column;gap:8px}.cap{padding:0 4px;font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:8px}.row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.grow{flex:1;min-width:0}.muted{color:var(--muted);font-size:12.5px}.mono{font-family:var(--mono);font-size:12px}.group,.card{background:var(--s1);border-radius:14px;padding:6px 16px;display:flex;flex-direction:column}.group>*+*{border-top:.5px solid var(--sep)}.card{padding:12px 16px;gap:10px;border:0}.card.hl{box-shadow:inset 0 0 0 1.5px #ff9f0a99}.modal .card{background:var(--s1);max-width:340px;width:100%}.btn{background:var(--s1);border:0;border-radius:10px;padding:7px 12px;font-size:13px;font-weight:500;white-space:nowrap;min-height:36px}.card .btn,.group .btn{background:var(--s2)}.btn:hover{filter:brightness(1.2)}.btn.on,.btn.primary{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn.danger{color:var(--live)}.btn.big{min-height:48px;font-size:16px;font-weight:700;padding:0 18px;border-radius:12px}.btn:disabled{opacity:.4;cursor:not-allowed;filter:none}.btn.sm{min-height:30px;padding:4px 10px;font-size:12.5px;border-radius:8px}.kv{display:grid;grid-template-columns:minmax(96px,38%) 1fr 52px;align-items:center;gap:10px;font-size:14px;min-height:44px;padding:4px 0}.kv output,.val{font:500 12px var(--mono);color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}.card .kv{min-height:36px;font-size:13px}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:28px;margin:0;min-width:0;background:transparent;--p: 50%}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--accent) var(--p),var(--track) var(--p))}input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--track)}input[type=range]::-moz-range-progress{height:4px;border-radius:2px;background:var(--accent)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:-10px;border-radius:50%;background:#fff;border:0;box-shadow:0 2px 6px #0006}input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#fff;border:0;box-shadow:0 2px 6px #0006}input[type=color]{width:30px;height:30px;padding:0;border:.5px solid rgba(255,255,255,.25);border-radius:50%;background:none;cursor:pointer;flex:none}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none;border-radius:50%}input[type=color]::-moz-color-swatch{border:none;border-radius:50%}input[type=text],input[type=number],input[type=password],select,textarea{background:var(--s2);border:0;border-radius:10px;padding:7px 10px;min-height:36px;min-width:0}input[type=number]{width:76px}select{max-width:100%}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{width:28px;height:28px;border-radius:50%;border:.5px solid rgba(255,255,255,.25);padding:0}.chip.k{width:auto;border-radius:14px;padding:0 9px;font:600 11px/28px var(--mono);color:#1a140c}.capsules{display:flex;flex-wrap:wrap;gap:6px}.capsule{height:30px;padding:0 12px;border-radius:15px;border:0;font-size:13px;font-weight:500;background:var(--s1);color:#fff}.capsule.on{background:#fff;color:#000}.sw{position:relative;display:inline-block;width:51px;height:31px;flex:none;justify-self:end}.sw input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer;z-index:1}.sw span{position:absolute;inset:0;border-radius:999px;background:#39393d;transition:background .2s;pointer-events:none}.sw span:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #0000004d;transition:transform .2s}.sw input:checked+span{background:var(--ok)}.sw input:checked+span:after{transform:translate(20px)}.sw input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}.seg{display:inline-flex;padding:2px;border-radius:9px;background:var(--s2);max-width:100%;overflow-x:auto}.seg button{border:0;background:none;padding:5px 10px;font-size:12.5px;color:#ebebf5bf;min-height:30px;border-radius:7px;white-space:nowrap}.seg button.on{background:var(--segsel);color:#fff;font-weight:600}.group .seg,.card .seg{background:#3a3a3c}.scenes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.scene{background:var(--s1);border-radius:14px;padding:8px;display:flex;flex-direction:column;gap:8px;box-shadow:inset 0 0 0 2px transparent}.scene.prev{box-shadow:inset 0 0 0 2px var(--accent)}.scene.on .nm:after{content:" ● เล่นอยู่";color:var(--accent);font-size:11px;font-weight:600}.swatch{display:block;height:44px;border-radius:9px}.scene .nm{font-size:13px;font-weight:600;padding:0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scene .acts{display:flex;gap:4px}.pill{flex:1;height:30px;border:0;border-radius:15px;background:var(--s2);font-size:12.5px;font-weight:600;white-space:nowrap}.pill.accent{background:var(--accent);color:#000;flex:0 0 auto;padding:0 14px}.pill[aria-pressed=true]{background:#fff;color:#000}.groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}.gbtn{text-align:left;border:0;border-radius:12px;background:var(--s1);padding:8px 12px;display:flex;flex-direction:column;gap:2px;min-height:48px}.gbtn small{color:var(--muted);font:500 11px var(--mono)}.gbtn.on{background:#ff9f0a33;box-shadow:inset 0 0 0 1.5px var(--accent)}.gbtn.part{box-shadow:inset 0 0 0 1.5px #ff9f0a73}.fxgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px}.fxgrid button{min-height:44px;white-space:normal;line-height:1.2}.cues{display:flex;flex-direction:column;gap:6px}.cue{border-radius:12px;background:var(--s1);overflow:hidden}.cue.cur{box-shadow:inset 0 0 0 1.5px var(--accent)}.cue .head{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:center;padding:8px 12px;position:relative}.cue .no{font:600 12px var(--mono);color:var(--accent)}.cue .nm{min-width:0;text-align:left;border:0;background:none;padding:0}.cue .nm b{display:block;font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cue .nm small{display:block;color:var(--muted);font-size:11.5px}.cue .prog{position:absolute;left:0;bottom:0;height:2px;background:var(--accent)}.cue .edit{border-top:.5px solid var(--sep);padding:10px 12px;display:flex;flex-direction:column;gap:8px}.transport{display:grid;grid-template-columns:auto auto 1fr;gap:8px}.transport .go{background:var(--ok);color:#00230d}table.health{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--s1);border-radius:12px;overflow:hidden}table.health td,table.health th{padding:6px 8px;border-bottom:.5px solid var(--sep);text-align:left}table.health th{color:var(--muted);font-weight:500;font-size:11.5px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#636366}.dot.on{background:var(--ok)}.dot.off{background:var(--live)}.media-prev{width:100%;max-height:180px;object-fit:contain;background:#000;border-radius:12px}.progress{height:6px;border-radius:3px;background:var(--s2);overflow:hidden}.progress>div{height:100%;background:var(--accent);width:0}.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 28px);transform:translate(-50%);background:#2c2c2ef2;color:#fff;padding:10px 16px;border-radius:14px;font-size:13px;font-weight:600;z-index:50;max-width:calc(100% - 32px);box-shadow:0 8px 24px #00000080}.toast.err{background:var(--live)}.modal{position:fixed;inset:0;background:#0009;display:grid;place-items:center;z-index:40;padding:16px}@media(max-width:1180px){.side{display:contents}.side>:not(.nav){display:none}.nav{position:fixed;z-index:20;left:calc((100% - 372px)/2);transform:translate(-50%);bottom:96px;flex-direction:row;gap:2px;padding:4px;border-radius:16px;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:.5px solid rgba(255,255,255,.14)}.nav button{flex-direction:column;gap:2px;height:50px;min-width:62px;justify-content:center;font-size:11px;padding:0 8px}.nav .badge{display:none}.main{padding-left:16px;padding-right:16px;gap:16px}.inspector{flex-basis:340px}.viewport{border-radius:24px}.kbd{display:none}}@media(max-width:860px){body{overflow:hidden}.main{flex-direction:column;gap:10px;padding:calc(env(safe-area-inset-top,0px) + 10px) 12px 0;height:100%}.stagecol{flex:0 0 auto;gap:8px}.stagehead{gap:8px;min-height:0}.stagehead h1{font-size:20px}.stagehead .acts{width:100%;gap:6px}.segm{flex:1}.segm button{flex:1;min-width:0;height:36px}.tbtn{height:42px;padding:0 12px}.tbtn span:not(.ic){display:none}.tbtn.bo span:not(.ic){display:inline}.viewport{flex:none;height:40vh;min-height:220px;border-radius:18px}.hint{display:none}.timeline{padding:8px 10px;gap:8px;border-radius:14px}.clips{flex-basis:100%;order:9}.inspector{flex:1 1 auto;min-height:0;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 92px)}.nav{left:0;right:0;bottom:0;transform:none;border-radius:0;justify-content:space-around;padding:4px 4px calc(env(safe-area-inset-bottom,0px) + 4px);border-width:.5px 0 0;background:#161618db}.nav button{flex:1;min-width:0;height:52px;padding:0;background:none!important;color:#ebebf599}.nav button.on{color:var(--accent)}.nav .ic svg{width:24px;height:24px}.kv{grid-template-columns:minmax(84px,36%) 1fr 48px}.banner,.place-hint{top:56px}}@media(prefers-reduced-motion:reduce){.sw span,.sw span:after,.clip .fill{transition:none}.segm button.live.on{animation:none}}.cap.sub{padding-top:6px;text-transform:none;font-size:13px;color:#ebebf5cc}.scene .note{font-size:11.5px;color:var(--muted);padding:0 2px;margin-top:-6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.libcat{padding:10px 10px 2px;font-size:11.5px;color:var(--muted)}.lib button{height:30px;font-size:13.5px}.fxpresets{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:6px}.fxp{height:36px;border:0;border-radius:10px;background:var(--s1);display:flex;align-items:center;gap:8px;padding:0 10px;font-size:13px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fxp:hover{background:var(--s2)}.fxp:active{transform:scale(.97)}.fixgrid{display:flex;flex-direction:column;gap:6px}.fixchips{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:5px}.fixchip{height:32px;border:0;border-radius:8px;background:var(--s1);font:500 12px var(--mono);display:flex;align-items:center;justify-content:center;gap:5px}.fixchip i{width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 1px #ffffff40}.fixchip.on{background:#ff9f0a38;box-shadow:inset 0 0 0 1.5px var(--accent)}.cp{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:12px;background:#303033}.cp-sv{--hue: 30;position:relative;height:150px;border-radius:8px;touch-action:none;cursor:crosshair;background:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,hsl(var(--hue),100%,50%))}.cp-knob{position:absolute;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000080;pointer-events:none}.cp-row{display:flex;align-items:center;gap:8px}.cp-swatch{flex:none;width:34px;height:34px;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff4d}.cp-eye{flex:none;width:30px;height:30px;border:0;border-radius:8px;background:transparent;font-size:18px;color:#fff}.cp-eye:hover{background:#ffffff14}.cp-hue{flex:1;-webkit-appearance:none;appearance:none;height:12px;border-radius:6px;margin:0;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)!important}.cp-hue::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:0;box-shadow:0 1px 4px #00000080}.cp-hue::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:0}.cp-num{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted)}.cp-num input,.cp-hex{width:100%;height:32px;border-radius:6px;border:1px solid rgba(255,255,255,.25);background:transparent;text-align:center;font:500 13px var(--mono);-moz-appearance:textfield}.cp-num input::-webkit-inner-spin-button,.cp-num input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cp-hex{flex:1.3;align-self:flex-start}
