:root{--bg:#f4f6f8;--card:#fff;--text:#18202a;--muted:#6b7280;--line:#dfe4ea;--accent:#1f5eff;--accent2:#1748c9;--danger:#b42318;--success:#147a4b;--shadow:0 12px 34px rgba(24,32,42,.08)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}.topbar{height:68px;background:#111827;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:10}.topbar strong{font-size:18px}.top-sub{margin-left:12px;color:#9ca3af;font-size:13px}.topbar nav{display:flex;gap:8px}.topbar nav a{text-decoration:none;padding:10px 13px;border-radius:9px;color:#d1d5db}.topbar nav a:hover,.topbar nav a.active{background:#253047;color:#fff}.page{max-width:1500px;margin:0 auto;padding:30px}.hero{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.hero.compact h1{margin:6px 0 5px;font-size:30px}.hero p{margin:0;color:var(--muted)}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;color:var(--accent)}.user-chip{background:#e7edff;color:#2046a8;border-radius:999px;padding:9px 13px;font-size:13px;font-weight:700}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:20px;margin-bottom:20px}.filter-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:14px}.filter-grid label,.stack-form label{font-size:13px;font-weight:700;color:#384250}.filter-grid input,.stack-form input{display:block;width:100%;margin-top:7px;border:1px solid #cfd6df;border-radius:10px;padding:11px 12px;font:inherit;outline:none;background:#fff}.filter-grid input:focus,.stack-form input:focus{border-color:#7d9bff;box-shadow:0 0 0 3px rgba(31,94,255,.1)}.filter-actions{display:flex;align-items:center;gap:14px;margin-top:16px}.btn{border:0;border-radius:10px;padding:11px 16px;font-weight:750;cursor:pointer;font:inherit}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent2)}.btn.secondary{background:#eef1f5;color:#334155}.success-btn{background:#168254;color:#fff}.table-card{padding:0;overflow:hidden}.table-wrap{overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:1050px}.table-wrap th{background:#f8fafc;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#687386;padding:13px 15px;border-bottom:1px solid var(--line);white-space:nowrap}.table-wrap td{padding:13px 15px;border-bottom:1px solid #edf0f3;font-size:14px}.table-wrap tbody tr:hover{background:#f9fbff}.empty{text-align:center!important;color:var(--muted);padding:35px!important}.badge{display:inline-block;padding:4px 8px;border-radius:99px;font-size:12px;font-weight:750}.badge.on{background:#e8f7ef;color:#147a4b}.badge.off{background:#f3f4f6;color:#6b7280}.muted{color:var(--muted)}.small{font-size:13px}.alert{border-radius:12px;padding:14px 16px;margin-bottom:18px}.alert.error{background:#fff1f0;border:1px solid #f3c3be;color:#8e241b}.alert.success{background:#edfbf3;border:1px solid #b8e6cc;color:#12613d}.alert ul{margin:8px 0 0 20px}.expected-header{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.expected-header code{background:#f3f5f7;padding:8px 10px;border-radius:8px}.expected-header small{width:100%;color:var(--muted)}.upload-form{display:flex;align-items:center;gap:12px;margin-top:18px;flex-wrap:wrap}.file-drop{border:1px dashed #aab4c0;border-radius:10px;padding:10px 12px;background:#fafbfc}.file-drop input{margin-left:10px}.preview-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.preview-head h2{margin:5px 0}.preview-head p{margin:0;color:var(--muted)}.preview-actions{display:flex;gap:8px}.preview-actions form{margin:0}.preview-table{margin-top:18px;border:1px solid var(--line);border-radius:10px}.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#eef3ff,#f6f7f9)}.login-card{width:min(420px,calc(100% - 30px));background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:30px}.login-card h1{margin:12px 0 5px}.brand-mark{width:45px;height:45px;display:grid;place-items:center;border-radius:12px;background:#111827;color:#fff;font-weight:900}.stack-form{display:grid;gap:15px;margin-top:22px}.error-text{color:var(--danger)}
@media(max-width:1000px){.filter-grid{grid-template-columns:repeat(2,1fr)}.top-sub{display:none}}@media(max-width:650px){.page{padding:18px}.topbar{padding:0 15px}.topbar nav a{padding:9px 8px;font-size:13px}.filter-grid{grid-template-columns:1fr}.hero{display:block}.user-chip{display:inline-block;margin-top:12px}.upload-form{align-items:stretch;flex-direction:column}.file-drop input{display:block;margin:9px 0 0}.preview-head{display:block}.preview-actions{margin-top:14px}}
