:root{--bg:#0b1018;--bg-elev:#121a26;--bg-elev-2:#182332;--border:#233044;--text:#e6ecf5;--text-dim:#8fa1b8;--accent:#3b82f6;--green:#22c55e;--yellow:#eab308;--orange:#f97316;--red:#ef4444;--violet:#8b5cf6}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;min-height:100vh}.sidebar{width:210px;flex-shrink:0;background:var(--bg-elev);border-right:1px solid var(--border);padding:20px 12px;display:flex;flex-direction:column;gap:4px}.sidebar .brand{font-weight:700;font-size:15px;padding:0 10px 16px;color:var(--text)}.sidebar a.nav-item{display:block;padding:9px 10px;border-radius:8px;color:var(--text-dim)}.sidebar a.nav-item:hover{background:var(--bg-elev-2);text-decoration:none}.sidebar a.nav-item.active{background:var(--bg-elev-2);color:var(--text)}.main{flex:1 1;padding:28px 32px;max-width:1200px}h1{font-size:20px;margin:0 0 18px}h2{font-size:15px;margin:24px 0 10px;color:var(--text)}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:16px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px}.stat-value{font-size:26px;font-weight:700}.stat-label{color:var(--text-dim);font-size:13px;margin-top:2px}table.data{width:100%;border-collapse:collapse;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;overflow:hidden}table.data th{text-align:left;color:var(--text-dim);font-weight:500;font-size:12px}table.data td,table.data th{padding:10px 12px;border-bottom:1px solid var(--border)}table.data tr:last-child td{border-bottom:none}.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.chip-blue{background:rgba(59,130,246,.15);color:#7eb1ff}.chip-green{background:rgba(34,197,94,.15);color:#5fdd8d}.chip-yellow{background:rgba(234,179,8,.15);color:#f0cd55}.chip-orange{background:rgba(249,115,22,.16);color:#ff9d5c}.chip-red{background:rgba(239,68,68,.15);color:#ff7d7d}.chip-violet{background:rgba(139,92,246,.16);color:#b49aff}.chip-gray{background:rgba(143,161,184,.15);color:var(--text-dim)}.btn{border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;background:var(--bg-elev-2);color:var(--text)}.btn:hover{filter:brightness(1.15)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-approve{background:rgba(34,197,94,.18);border-color:rgba(34,197,94,.4);color:#5fdd8d}.btn-reject{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.4);color:#ff7d7d}input.field,textarea.field{background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:8px 10px;font:inherit;width:100%}.muted{color:var(--text-dim)}.notice{padding:10px 12px;border-radius:8px;font-size:13px}.notice-ok{background:rgba(34,197,94,.12);color:#5fdd8d}.notice-warn{background:rgba(234,179,8,.12);color:#f0cd55}.notice-err{background:rgba(239,68,68,.12);color:#ff7d7d}.progress{background:var(--bg);border-radius:999px;height:6px;overflow:hidden;min-width:80px}.progress>div{background:var(--accent);height:100%}.tag{display:inline-flex;align-items:center;padding:1px 8px;border-radius:6px;font-size:11px;font-weight:500;line-height:18px;background:var(--bg-elev-2);color:var(--text-dim);border:1px solid var(--border);white-space:nowrap;font-family:inherit}.tag:before{content:"#";opacity:.4;margin-right:1px}.tag-btn{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tag-btn:hover{color:var(--text);border-color:var(--text-dim)}.tag-btn[data-active=true]{background:rgba(59,130,246,.14);border-color:rgba(59,130,246,.55);color:#9cc4ff}.tagbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 16px}.tagbar-label{color:var(--text-dim);font-size:12px;margin-right:2px}.tag-reset{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:11px;padding:2px 9px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-dim)}.tag-reset:hover{color:var(--text);border-color:var(--text-dim)}.tag-reset[data-active=true]{background:rgba(59,130,246,.14);border-color:rgba(59,130,246,.55);color:#9cc4ff}