:root{--bg: #0b0f19;--panel: #111827;--panel-2: #0f172a;--border: #1f2a44;--text: #e5e7eb;--muted: #94a3b8;--brand: #22d3ee;--brand-2: #a78bfa;--danger: #f87171;--ok: #34d399;--warn: #fbbf24;--radius: 14px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(1200px 800px at 10% -10%,#17223b 0%,var(--bg) 55%) no-repeat,var(--bg);color:var(--text);font-family:Inter,Noto Sans Thai,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--brand);text-decoration:none}a:hover{opacity:.85}.app-shell{display:flex;min-height:100vh}.sidebar{width:240px;flex-shrink:0;background:linear-gradient(180deg,#0d1424,#0a0f1c);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;letter-spacing:.4px;padding:4px 8px 18px}.brand .dot{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--brand),var(--brand-2));display:grid;place-items:center;color:#001218;font-size:13px;font-weight:900}.navlink{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--muted);font-size:14px;cursor:pointer;border:1px solid transparent}.navlink:hover{background:#131c31;color:var(--text)}.navlink.active{background:#14213a;color:var(--text);border-color:var(--border)}.navlink .badge{margin-left:auto;font-size:11px;background:#1f2a44;padding:1px 8px;border-radius:999px;color:var(--muted)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:60px;display:flex;align-items:center;gap:12px;padding:0 22px;border-bottom:1px solid var(--border);background:#0b0f19cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}.topbar .spacer{flex:1}.coin-pill{display:inline-flex;align-items:center;gap:6px;background:#14213a;border:1px solid var(--border);padding:6px 12px;border-radius:999px;font-size:13px}.coin-pill .coin{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#ffe08a,#d4a017);display:inline-block}.content{padding:26px;display:flex;flex-direction:column;gap:18px}.h1{font-size:22px;margin:0}.subtle{color:var(--muted);font-size:13px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.card+.card{margin-top:14px}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width: 960px){.grid.cols-3,.grid.cols-4{grid-template-columns:1fr 1fr}}@media (max-width: 720px){.app-shell{flex-direction:column}.sidebar{width:100%;flex-direction:row;overflow-x:auto;padding:10px}.brand{padding:4px 8px}.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.content{padding:16px}}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;color:var(--muted)}.field input,.field select,.field textarea{background:#0b1220;border:1px solid var(--border);color:var(--text);padding:10px 12px;border-radius:10px;font-size:14px;font-family:inherit;outline:none;width:100%}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand)}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:10px;background:linear-gradient(135deg,var(--brand),var(--brand-2));border:none;color:#001218;font-weight:700;font-size:14px;cursor:pointer}.btn:hover{opacity:.92}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn.danger{background:#7f1d1d;color:#fecaca}.btn.small{padding:6px 12px;font-size:12px}.alert{padding:10px 14px;border-radius:10px;font-size:13px}.alert.error{background:#f871711a;color:var(--danger);border:1px solid rgba(248,113,113,.3)}.alert.ok{background:#34d3991a;color:var(--ok);border:1px solid rgba(52,211,153,.3)}.alert.info{background:#22d3ee14;color:var(--brand);border:1px solid rgba(34,211,238,.25)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--muted);font-weight:600;padding:8px;border-bottom:1px solid var(--border)}.table td{padding:8px;border-bottom:1px solid var(--border)}.job-tile{display:flex;flex-direction:column;gap:8px}.job-tile .thumb{aspect-ratio:16/9;border-radius:12px;background:linear-gradient(135deg,#1e293b,#0f172a);display:grid;place-items:center;color:var(--muted);font-size:12px;border:1px solid var(--border);overflow:hidden}.job-tile .thumb img,.job-tile .thumb video{width:100%;height:100%;object-fit:cover}.status-badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.status-badge.queued{color:var(--muted)}.status-badge.processing{color:var(--warn);border-color:#fbbf2466}.status-badge.succeeded{color:var(--ok);border-color:#34d39966}.status-badge.failed{color:var(--danger);border-color:#f8717166}.spin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#040810b3;display:grid;place-items:center;z-index:50}.spinner{width:42px;height:42px;border-radius:50%;border:3px solid rgba(148,163,184,.2);border-top-color:var(--brand);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#040810b3;display:grid;place-items:center;padding:20px;z-index:40}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:22px;max-width:480px;width:100%}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:100%;max-width:420px}
