:root{
  --bg:#0b0c10; --card:#151a21; --text:#eaf0f6; --muted:#9aa4af;
  --accent:#6aa1ff; --danger:#ff6a6a; --border:#242a33;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.4 system-ui, -apple-system, Segoe UI, Roboto, sans-serif}
a{color:var(--accent);text-decoration:none}
.container{max-width:420px;margin:8vh auto;padding:16px}
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;box-shadow:0 8px 24px rgba(0,0,0,.2);margin-bottom:16px}
label{display:block;margin:10px 0}
input,select,button{width:100%;padding:10px 12px;background:#0f1218;border:1px solid var(--border);border-radius:12px;color:var(--text)}
button{background:var(--accent);border:none;color:#0b0c10;font-weight:700;cursor:pointer;margin-top:8px;border-radius:12px;padding:12px}
button.ghost{background:transparent;border:1px solid var(--border);color:#fff}
.alert{background:#2a1212;border:1px solid #5a1d1d;color:#ffcccc;border-radius:12px;padding:10px;margin:10px 0}
.muted{color:var(--muted)}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);background:rgba(0,0,0,.3);position:sticky;top:0}
.logo{font-weight:800;letter-spacing:.5px}
.main{max-width:1100px;margin:16px auto;padding:0 16px}
.uploader h2,.filters h2,.results h2{margin:0 0 10px 0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
table{width:100%;border-collapse:collapse}
th,td{border-bottom:1px solid var(--border);padding:8px;text-align:left}
th{color:#b7c2cf;font-weight:600}
td .button{padding:6px 10px}
