:root{--bg: #111418;--panel: #1a1f25;--line: #2b323b;--text: #e6e9ee;--muted: #8b95a3;--accent: #3b82f6;--ok: #2aa198;--warn: #d4a017;--err: #e5534b;font:13px/1.4 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);overflow:hidden}button,select,input{font:inherit;color:var(--text);background:#232a32;border:1px solid var(--line);border-radius:4px;padding:3px 8px}button{cursor:pointer}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent)}kbd{font:11px ui-monospace,monospace;background:#0b0d10;border:1px solid var(--line);border-radius:3px;padding:0 4px}code{font-family:ui-monospace,monospace}.muted{color:var(--muted)}.app{display:grid;grid-template-rows:40px 1fr 30px;height:100vh}.topbar{display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--line)}.topbar>*{white-space:nowrap}.topbar .spacer{flex:1}.topbar .name{width:120px}.progress{display:flex;align-items:center;gap:6px;color:var(--muted)}.save{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);min-width:52px}.save-dirty,.save-saving{color:var(--warn)}.save-error{color:var(--err)}.main{display:grid;grid-template-columns:1fr 340px;min-height:0}.small{font-size:11px}button.danger{border-color:#7f2a26}.progress.warn{color:var(--warn)}.zoombar{position:absolute;left:8px;bottom:8px;display:flex;align-items:center;gap:6px;padding:4px 6px;background:#111418d9;border:1px solid var(--line);border-radius:6px}.zoombar button{padding:2px 6px;font-size:12px}.zoom-level{min-width:40px;text-align:center;font-variant-numeric:tabular-nums}.banner{position:absolute;top:8px;left:50%;transform:translate(-50%);background:#3a2f0b;color:#f5d77a;border:1px solid #6b5514;padding:4px 10px;border-radius:6px}.attr-block{margin:6px 0}.attr-title{margin-bottom:3px}.segmented{display:flex;gap:2px}.segmented button{flex:1;padding:2px 4px}.segmented button.active,.compass button.active{border-color:var(--accent);background:#1d3557}.compass{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;width:100%}.compass button{padding:2px 0;font-size:12px}.canvas-wrap{position:relative;min-width:0;min-height:0;overflow:hidden;background:#000}.canvas-wrap.empty{display:grid;place-items:center;color:var(--muted)}.sidebar{background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;padding:8px 12px}.sidebar section{padding:8px 0;border-bottom:1px solid var(--line)}.sidebar h3{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.row{display:flex;align-items:center;gap:8px}.row input[type=range]{flex:1}.buttons{flex-wrap:wrap;margin-top:8px}.classes{display:grid;grid-template-columns:1fr 1fr;gap:4px}.classes button{display:flex;align-items:center;gap:5px;text-align:left;padding:3px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.classes button.active{border-color:var(--accent);background:#1d3557}.swatch{width:10px;height:10px;border-radius:2px;flex:none}.attr{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0}.attr select{min-width:120px}.timeline{display:flex;align-items:center;gap:1px;padding:0 8px;background:var(--panel);border-top:1px solid var(--line);overflow-x:auto;overflow-y:hidden}.cell{flex:none;width:6px;height:16px;background:#3a424d;cursor:pointer}.cell.in_progress{background:var(--warn)}.cell.reviewed{background:var(--ok)}.cell.skipped{background:#6c71c4}.cell.shot-start{margin-left:4px}.cell.current{outline:2px solid #fff;outline-offset:1px}.toast{position:fixed;bottom:44px;left:50%;transform:translate(-50%);background:#0b0d10;border:1px solid var(--line);padding:6px 12px;border-radius:6px;pointer-events:none}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center}.help{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px 20px;max-width:980px;max-height:90vh;overflow:auto}.help h2{margin:0 0 4px;font-size:16px}.help-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px 24px}.help table{border-collapse:collapse;width:100%}.help td{padding:2px 6px 2px 0;vertical-align:top}.help td:first-child{white-space:nowrap}.fatal{padding:40px;color:var(--err)}.jobs{width:min(900px,94vw);display:grid;gap:14px}.jobs.dragging{outline:2px dashed var(--accent);outline-offset:-6px}.jobs section{display:grid;gap:8px}.jobs h3{margin:0;font-size:13px}.jobs .row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.jobs .row.end{justify-content:flex-end}.jobs .grow{flex:1;min-width:200px}.jobs table.list{border-collapse:collapse;width:100%}.jobs table.list th{text-align:left;font-weight:500;color:var(--muted);padding:2px 8px 2px 0}.jobs table.list td{padding:3px 8px 3px 0;border-top:1px solid var(--line);max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jobs .err,.job-failed{color:var(--err)}.job-running,.job-queued{color:var(--warn)}.job-done{color:var(--ok)}button.busy{border-color:var(--warn);color:var(--warn)}.empty-msg{display:grid;gap:10px;justify-items:center;text-align:center;max-width:420px}
