:root{--bg:#0b0b10;--panel:#14141c;--line:#262633;--text:#f3f3f7;--muted:#9a9aab;--accent:#ff4d2e;--accent2:#ff8a3d}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.5 Inter,-apple-system,Segoe UI,Roboto,sans-serif}h1{margin:0 0 20px;font-size:26px}h2{margin:30px 0 12px;font-size:17px}.shell{min-height:100vh;display:flex}aside{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;width:230px;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0}.brand{letter-spacing:.18em;margin:0 8px 26px;font-size:17px;font-weight:800}.brand b{background:linear-gradient(90deg,var(--accent),var(--accent2));color:#0000;-webkit-background-clip:text;background-clip:text}.brand small{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:500;display:block}aside button{text-align:left;color:var(--muted);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:8px;padding:10px 12px;font-weight:600}aside button:hover{color:var(--text);background:#1d1d29}aside button.on{color:var(--text);box-shadow:inset 3px 0 var(--accent);background:#22222f}aside .out{margin-top:auto}main{flex:1;max-width:1200px;padding:32px 40px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px}table.card{border-collapse:separate;border-spacing:0;width:100%;padding:6px 10px}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:10px 8px;font-size:12px;font-weight:600}td{border-top:1px solid var(--line);vertical-align:middle;padding:10px 8px}.thumb{object-fit:cover;background:#222;border-radius:5px;width:38px;height:56px}input,textarea,button{font:inherit}input:not([type=checkbox]),textarea{width:100%;color:var(--text);border:1px solid var(--line);background:#0e0e15;border-radius:8px;outline:none;padding:10px 12px}input:focus,textarea:focus{border-color:var(--accent)}input.inline{background:0 0;border-color:#0000;padding:4px 6px;font-weight:600}input.inline:hover{border-color:var(--line)}button{color:var(--text);border:1px solid var(--line);cursor:pointer;background:#22222f;border-radius:8px;padding:8px 14px}button:hover{background:#2b2b3b}button.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:0;font-weight:700}button.danger{color:#ff7b7b}button:disabled{opacity:.6;cursor:wait}.form{flex-direction:column;gap:12px;max-width:640px;display:flex}.form.inline{flex-direction:row;align-items:center;max-width:none;margin-bottom:14px}.two{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stats{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;display:grid}.stat span{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12px}.stat b{margin-top:4px;font-size:34px;display:block}.line{border-top:1px solid var(--line);justify-content:space-between;padding:8px 0;display:flex}.line:first-child{border-top:0}.pill{background:#2b2b3b;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:700}.pill.ready,.pill.done{color:#46d369;background:#12361f}.pill.processing,.pill.queued{color:#f5a524;background:#3a2e10}.pill.failed{color:#ff7b7b;background:#3a1414}.bar{background:#262633;border-radius:5px;height:8px;overflow:hidden}.bar i{background:linear-gradient(90deg,var(--accent),var(--accent2));height:100%;transition:width .3s;display:block}.bar.sm{width:140px}.muted{color:var(--muted)}.err{color:#ff7b7b}.ok{color:#46d369}code{background:#0e0e15;border-radius:5px;padding:2px 6px;font-size:12px}.trunc{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:260px;display:inline-block;overflow:hidden}.login{background:radial-gradient(60% 60% at 20% 20%,#ff4d2e40,transparent 70%),var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login .card{flex-direction:column;gap:12px;width:360px;padding:30px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.toolbar input[type=search]{width:240px}.toolbar select{color:var(--text);border:1px solid var(--line);background:#0e0e15;border-radius:8px;padding:10px 12px}.toolbar .spacer{flex:1}.viewtoggle{border:1px solid var(--line);border-radius:8px;display:flex;overflow:hidden}.viewtoggle button{background:#0e0e15;border:0;border-radius:0}.viewtoggle button.on{color:var(--text);background:#22222f}.bulkbar{background:var(--panel);border:1px solid var(--accent);border-radius:10px;align-items:center;gap:8px;margin-bottom:16px;padding:10px 16px;display:flex}.bulkbar b{margin-right:4px}.bulkbar .spacer{flex:1}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:18px;display:grid}.gcard{background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:10px;transition:transform .12s,border-color .12s;position:relative;overflow:hidden}.gcard:hover{border-color:var(--accent);transform:translateY(-3px)}.gcard.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.gcard img.poster{aspect-ratio:2/3;object-fit:cover;background:#1a1a24;width:100%;display:block}.gcard .meta{padding:9px 10px 11px}.gcard .meta b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.gcard .meta small{color:var(--muted);margin-top:2px;font-size:11px;display:block}.gcard .check{z-index:2;width:20px;height:20px;position:absolute;top:8px;left:8px}.gcard .badges{z-index:2;flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute;top:8px;right:8px}.gcard .badges .pill{padding:2px 8px;font-size:10px}.gcard .star{color:#f5a524}.dropzone{border:2px dashed var(--line);text-align:center;color:var(--muted);cursor:pointer;border-radius:12px;padding:36px 20px;transition:border-color .15s,background .15s,color .15s}.dropzone.drag{border-color:var(--accent);color:var(--text);background:#ff4d2e12}.dropzone input[type=file]{display:none}.detail{z-index:50;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.detail .card{flex-direction:column;gap:12px;width:520px;max-height:85vh;display:flex;overflow:auto}.detail .close{position:absolute;top:18px;right:18px}
