:root{--bg:#1e1f21;--panel:#2a2b2e;--panel2:#323437;--line:#44474b;--text:#d9dadc;--dim:#8e9298;--acc:#5fb0e8;--acc2:#e8b05f;--danger:#e0705f}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--text);font:12px/1.35 system-ui,Segoe UI,sans-serif;display:flex;flex-direction:column;overflow:hidden}
header{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--line)}
h1{font-size:15px;margin:0 12px 0 0;font-weight:600;letter-spacing:.02em}h1 span{color:var(--acc);font-weight:300}
.spacer{flex:1}.dim{color:var(--dim)}.sep{width:1px;height:18px;background:var(--line);margin:0 4px}
button,.btn,select,input[type=text],input[type=number]{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:3px;padding:3px 8px;font:inherit;cursor:pointer}
button:hover,.btn:hover{border-color:var(--acc)}
button:disabled{opacity:.4;cursor:default}
button.on{background:var(--acc);color:#10202c;border-color:var(--acc)}
button.on2{background:var(--acc2);color:#2c2010;border-color:var(--acc2)}
input[type=text]{cursor:text}
input[type=range]{accent-color:var(--acc);height:14px;margin:0;vertical-align:middle}
input[type=checkbox]{accent-color:var(--acc);margin:0;vertical-align:middle}
input[type=color]{width:26px;height:20px;padding:0;border:1px solid var(--line);background:none;border-radius:3px;cursor:pointer}
label.inline{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
main{flex:1;display:flex;min-height:0}
#work{flex:1;min-width:0;overflow:auto;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.readout b,#measureText,#exagText{font-family:ui-monospace,Consolas,monospace;font-weight:500;min-width:52px;display:inline-block}
.seg{display:inline-flex}.seg button{border-radius:0}.seg button:first-child{border-radius:3px 0 0 3px}.seg button:last-child{border-radius:0 3px 3px 0;border-left:0}
.viewports{display:grid;grid-template-columns:1fr 1fr;gap:10px}
figure{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:4px;overflow:hidden}
figcaption{display:flex;align-items:center;gap:10px;padding:5px 8px;border-bottom:1px solid var(--line);min-height:30px}
.cwrap{height:calc(100vh - 200px);min-height:320px;position:relative;background:#121315}
.cwrap canvas{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:none}
.cwrap canvas:active{cursor:grabbing}
.solo{color:var(--acc2);font-weight:600}
#probe{font-family:ui-monospace,Consolas,monospace;min-height:16px}
#lutPanel{flex:none;max-height:58%;overflow-y:auto;border-top:2px solid var(--line);padding:6px 8px 8px;background:var(--panel)}
#cvL{display:block;width:100%;height:300px;margin-top:4px;cursor:crosshair;touch-action:none}
#lutSlice{display:flex;flex-direction:column;gap:3px;margin:2px 0}
#lutProbe{font-family:ui-monospace,Consolas,monospace;font-size:11px;min-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#lutControls{display:flex;flex-direction:column;gap:4px}
#lutPanel .row{display:grid;grid-template-columns:84px 1fr 64px;align-items:center;gap:6px}
#lutPanel .row select{width:100%;grid-column:2/4}
#lutPanel .row input[type=range]{width:100%}
#lutPanel .row.held{grid-template-columns:130px 1fr 44px}
#lutPanel .row.held span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dim)}
#lutPanel .row.slice span:first-child{color:var(--acc2);font-weight:600}
#lutPanel .val{font-family:ui-monospace,Consolas,monospace;font-size:11px;text-align:right}
#lutPanel h4{margin:5px 0 0;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);font-weight:600}
.phead{display:flex;align-items:center;gap:8px}
#attribution{font-size:11px;padding-bottom:8px}
#stack{width:450px;flex:none;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
#stackScroll{flex:1;min-height:120px;overflow-y:auto;padding:0 8px 24px}
.sticky{position:sticky;top:0;z-index:5;background:var(--panel);padding:8px 2px;border-bottom:1px solid var(--line);margin-bottom:6px}
.layer{border:1px solid var(--line);border-radius:4px;margin-bottom:6px;background:var(--panel2);position:relative}
.layer.hidden>.lhead .name,.mask.off>.mhead .mname{opacity:.45}
.lhead,.mhead{display:flex;align-items:center;gap:4px;padding:4px 5px}
.lhead .name{flex:1;min-width:40px;background:transparent;border-color:transparent;font-weight:600;padding:2px 4px}
.lhead .name:hover,.lhead .name:focus{border-color:var(--line);background:var(--bg)}
.grip{cursor:grab;color:var(--dim);padding:0 3px;user-select:none;font-size:14px;line-height:1}
.ib{padding:1px 5px;min-width:22px;font-size:11px;line-height:16px}
.ib.del:hover{border-color:var(--danger);color:var(--danger)}
.lbody{padding:4px 8px 8px;border-top:1px solid var(--line)}
.masksHead{display:flex;align-items:center;gap:6px;margin:6px 0 4px}
.masksHead span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);font-weight:600}
.masks{min-height:14px;border-radius:3px}
.masks.empty{border:1px dashed var(--line);padding:6px;color:var(--dim);text-align:center}
.mask{border:1px solid var(--line);border-radius:3px;margin-bottom:3px;background:var(--panel);position:relative}
.mask.soloed,.layer.soloed{border-color:var(--acc2)}
.mhead .mname{flex:1;min-width:30px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.tag{display:inline-block;min-width:18px;text-align:center;font:600 10px ui-monospace,Consolas,monospace;padding:1px 3px;border-radius:2px;background:var(--bg);color:var(--acc);margin-right:4px}
.mhead select{padding:1px 2px;font-size:11px;max-width:86px}
.mbody{padding:4px 8px 6px;border-top:1px solid var(--line)}
.prow{display:grid;grid-template-columns:88px 1fr 64px;align-items:center;gap:6px;min-height:20px}
.prow>span:first-child{color:var(--dim);cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .val{font-family:ui-monospace,Consolas,monospace;font-size:11px;text-align:right}
.prow input[type=range]{width:100%}
.prow select{grid-column:2/4}
details.levels{margin-top:4px;border-top:1px dashed var(--line);padding-top:3px}
details.levels summary{cursor:pointer;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:600;user-select:none}
details.levels summary.mod{color:var(--acc2)}
.lvgrid{display:grid;grid-template-columns:1fr 76px;gap:8px;align-items:start;margin-top:3px}
.lvgrid canvas{width:76px;height:76px;background:var(--bg);border:1px solid var(--line);border-radius:2px}
.lvbtns{display:flex;gap:4px;margin-top:3px;align-items:center}
.dropBefore::before,.dropAfter::after{content:"";position:absolute;left:0;right:0;height:2px;background:var(--acc);z-index:3}
.dropBefore::before{top:-3px}.dropAfter::after{bottom:-3px}
.masks.dropInto{outline:2px solid var(--acc)}
.baseRow{display:flex;align-items:center;gap:8px;padding:6px;color:var(--dim)}
#toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);background:#000c;border:1px solid var(--line);padding:8px 14px;border-radius:4px;max-width:70vw;white-space:pre-wrap;z-index:50}
@media(max-width:1100px){#stack{width:360px}.viewports{grid-template-columns:1fr}}
