:root{--bg:#f4f1ea;--ink:#1c1917;--muted:#78716c;--line:#e7e5e4;--card:#fffdf8;--accent:#0f766e;--accent-soft:#ccfbf1;--sidebar:#1c1917;--danger:#b91c1c;--ok:#166534;color:var(--ink);background:var(--bg);font-family:PingFang SC,Hiragino Sans GB,Noto Sans SC,system-ui,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0}#root{min-height:100vh}a{color:var(--accent)}.layout{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.nav{background:var(--sidebar);color:#fafaf9;flex-direction:column;gap:18px;padding:22px 16px;display:flex}.brand{flex-direction:column;gap:2px;padding:0 8px;display:flex}.brand strong{letter-spacing:.02em;font-size:16px}.brand span{color:#a8a29e;font-size:12px}.nav nav{flex-direction:column;flex:1;gap:4px;display:flex}.nav a{color:#e7e5e4;border-radius:8px;padding:8px 10px;text-decoration:none}.nav a:hover,.nav a.active{color:#fff;background:#292524}.nav a.active{background:var(--accent)}.nav button{color:#e7e5e4;cursor:pointer;background:0 0;border:1px solid #44403c;border-radius:8px;padding:8px 10px}.nav button:hover{background:#292524}.content{max-width:1180px;padding:28px 32px 48px}h1{margin:0 0 6px;font-size:24px;font-weight:650}.lead{color:var(--muted);margin:0 0 18px;font-size:14px}h2{margin:28px 0 10px;font-size:16px}h3{margin:0 0 10px;font-size:15px}.muted{color:var(--muted)}.ok{color:var(--ok)}.error{color:var(--danger);margin:0 0 12px}.empty{text-align:center;color:var(--muted);background:var(--card);border:1px dashed var(--line);border-radius:12px;margin:0;padding:28px 16px}.cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 16px 14px;box-shadow:0 1px #1c191708}.card+.card{margin-top:12px}.cards .card+.card{margin-top:0}.card h2,.card h3{margin:0 0 10px}.metric{letter-spacing:-.03em;margin:0;font-size:36px;font-weight:650}.counts,.kv{gap:6px 16px;margin:0;display:grid}.counts{grid-template-columns:1fr}.kv{background:var(--card);border:1px solid var(--line);border-radius:14px;grid-template-columns:140px 1fr;padding:14px 16px}.card .kv{background:0 0;border:0;border-radius:0;padding:0}.counts div,.kv{align-items:baseline}.kv dt,.counts dt{color:var(--muted);font-size:13px}.kv dd,.counts dd{margin:0}.filters,.actions{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:16px;display:flex}.filters{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px}.filters label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.filters input,.filters select,.filters button,.actions button,.pager button,.login input,.login button{color:var(--ink);font:inherit;background:#fff;border:1px solid #d6d3d1;border-radius:8px;padding:8px 10px}.filters button,.actions button,.login button{background:var(--accent);color:#fff;border-color:var(--accent);cursor:pointer}.filters button.on{background:#115e59;box-shadow:inset 0 0 0 1px #99f6e4}.actions button.danger{color:var(--danger);background:#fff;border-color:#fecaca}.filters button:disabled,.actions button:disabled,.pager button:disabled,.login button:disabled{opacity:.55;cursor:default}.table-wrap{border:1px solid var(--line);background:var(--card);border-radius:14px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 12px}tr:last-child td{border-bottom:0}td code{color:var(--muted);font-size:12px}td .muted{margin-top:4px;font-size:12px}td button{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;font:inherit;border-radius:8px;padding:6px 10px}td button:disabled{opacity:.55;cursor:default}th{color:#57534e;background:#faf7f2;font-size:13px;font-weight:600}.pager{color:var(--muted);align-items:center;gap:12px;margin-top:14px;font-size:14px;display:flex}.pager button{cursor:pointer}.badge{color:#44403c;background:#f5f5f4;border-radius:999px;padding:1px 8px;font-size:12px;line-height:1.7;display:inline-block}.badge-ready,.badge-done{color:#166534;background:#dcfce7}.badge-running,.badge-generating{color:#1d4ed8;background:#dbeafe}.badge-pending,.badge-queued,.badge-raw{color:#92400e;background:#fef3c7}.badge-failed{color:#b91c1c;background:#fee2e2}.badge-empty{color:#57534e;background:#f5f5f4}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--card);border:1px solid var(--line);border-radius:18px;width:min(400px,100%);padding:28px 24px 24px;box-shadow:0 12px 40px #1c19170f}.login h1{margin-bottom:4px}.login form{flex-direction:column;gap:12px;margin-top:18px;display:flex}.login label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.stack{flex-direction:column;gap:12px;display:flex}.back{margin:0 0 8px;font-size:14px}@media (width<=800px){.layout{grid-template-columns:1fr}.nav{flex-direction:row;align-items:center;padding:12px;overflow-x:auto}.nav nav{flex-direction:row}.brand span{display:none}.content{padding:18px 14px 32px}.kv{grid-template-columns:1fr}}
