:root{--bg:#14161a;--panel:#1d2026;--line:#2c313a;--text:#e8eaed;--mute:#9aa3ad;--accent:#4c8dff;--ok:#3ecf8e;--warn:#f5a524;--bad:#ef5350}
@media (prefers-color-scheme:light){:root{--bg:#f4f5f7;--panel:#fff;--line:#dcdfe4;--text:#1b1f24;--mute:#66707a}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,"Apple SD Gothic Neo",system-ui,sans-serif}
header{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel)}
header .brand{font-weight:700;cursor:pointer}header .sp{flex:1}
main{padding:16px;max-width:1280px;margin:0 auto}
a{color:var(--accent);cursor:pointer;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer}
button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.on{border-color:var(--accent);color:var(--accent)}
input,select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 10px;width:100%}
textarea{resize:vertical;min-height:70px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grow{flex:1}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.login{max-width:340px;margin:12vh auto}.login input{margin-bottom:8px}
.err{color:var(--bad);margin:6px 0}.mute{color:var(--mute)}
table{width:100%;border-collapse:collapse}td,th{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left}
.tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.badge{display:inline-block;padding:1px 8px;border-radius:99px;font-size:12px;border:1px solid var(--line)}
.badge.approved{color:var(--ok);border-color:var(--ok)}.badge.changes{color:var(--warn);border-color:var(--warn)}
.drop{border:2px dashed var(--line);border-radius:10px;padding:14px;text-align:center;color:var(--mute);margin-bottom:12px}
.drop.over{border-color:var(--accent);color:var(--accent)}
.review{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px}
@media (max-width:900px){.review{grid-template-columns:1fr}}
.stage{position:relative;background:#000;width:100%;margin:0 auto;max-height:70vh}
.stage video,.stage canvas{position:absolute;inset:0;width:100%;height:100%}
.stage canvas{cursor:crosshair}
.ctrl{display:flex;gap:8px;align-items:center;margin-top:8px}
.bar{position:relative;flex:1;height:26px}
.bar input[type=range]{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;background:none;border:0;z-index:1;accent-color:var(--accent)}
.mark{position:absolute;top:0;width:4px;height:100%;background:var(--warn);border-radius:2px;z-index:2;cursor:pointer;transform:translateX(-2px)}
.mark.done{background:var(--ok)}
.fb{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:8px;cursor:pointer}
.fb.sel{border-color:var(--accent)}.fb.done{opacity:.55}
.fb .t{color:var(--accent);font-weight:600}.fb img{width:100%;border-radius:6px;margin-top:6px}
.list{max-height:46vh;overflow:auto}
.tc{width:92px;font-variant-numeric:tabular-nums;text-align:center;padding:5px 6px}
.ctrl .bar{min-width:120px}
.hovertip{display:none;position:absolute;bottom:30px;transform:translateX(-50%);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px;pointer-events:none;z-index:3}
.mark.sel{background:var(--accent);width:6px;transform:translateX(-3px)}
