:root{--bg: #F4F6FA;--panel: #FFFFFF;--panel-2: #EDF1F7;--border: #D8DFEA;--accent: #2F6FED;--text: #1B2330;--text-dim: #5C6B7E;--danger: #E5484D;--ok: #15A14A}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Sora,system-ui,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}button{font-family:inherit;cursor:pointer;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;padding:8px 14px;font-size:14px}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button:disabled{opacity:.5;cursor:not-allowed}button.linklike{background:none;border:none;color:var(--accent);padding:0;font:inherit;cursor:pointer}button.linklike:hover{text-decoration:underline;border:none}input,select{font-family:inherit;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:14px;width:100%}.app{display:flex;height:100vh}.sidebar{width:210px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;overflow-y:auto}.brand{font-size:20px;font-weight:700;margin-bottom:18px;padding:0 6px}.brand span{color:var(--accent)}.nav-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:8px;color:var(--text-dim);cursor:pointer}.nav-item:hover,.nav-item.active{background:var(--panel-2);color:var(--text)}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:16px 6px 6px}.badge{background:var(--panel-2);color:var(--text-dim);border-radius:999px;padding:1px 8px;font-size:11px}.main{flex:1;overflow-y:auto;padding:24px 28px}.page-title{font-size:22px;font-weight:700;margin:0 0 4px}.page-sub{color:var(--text-dim);margin:0 0 20px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px}.card h3{margin:0;font-size:16px}.card .icon{font-size:26px}.card .meta{color:var(--text-dim);font-size:12px;margin-top:6px}.card .actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}.card .actions button{padding:6px 10px;font-size:12px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--text-dim);font-weight:600;position:sticky;top:0;background:var(--panel)}tr:hover td{background:var(--panel-2)}.ai-mark{color:var(--accent);font-size:11px}.req{color:var(--danger)}.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:16px}.toolbar input{max-width:320px}.center{display:flex;align-items:center;justify-content:center;height:100vh;flex-direction:column;gap:14px}.login-box{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:28px;width:320px;display:flex;flex-direction:column;gap:12px}.pill{border-radius:999px;padding:2px 10px;font-size:11px;border:1px solid var(--border)}.pill.ok{color:var(--ok);border-color:var(--ok)}.pill.pending{color:var(--text-dim)}.pill.failed{color:var(--danger);border-color:var(--danger)}.dropzone{border:2px dashed var(--border);border-radius:14px;padding:40px;text-align:center;color:var(--text-dim)}.dropzone.drag{border-color:var(--accent);color:var(--text)}.error{color:var(--danger);font-size:13px}.topbar,.nav-overlay{display:none}@media (max-width: 860px){.topbar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.topbar .brand{margin:0;font-size:18px}.hamburger{padding:6px 10px;font-size:18px;line-height:1}.app{flex-direction:column;height:auto;min-height:100vh}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:100;width:80%;max-width:280px;transform:translate(-100%);transition:transform .2s ease;box-shadow:2px 0 16px #00000026}.sidebar.open{transform:translate(0)}.nav-overlay.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:90}.main{padding:16px;height:auto}.page-title{font-size:19px}.toolbar{flex-wrap:wrap}.toolbar input{max-width:100%;flex:1 1 160px}.grid{grid-template-columns:1fr}}
