:root{--bg:#0f1115;--panel:#171a21;--panel2:#1e222b;--text:#e6e8ec;--muted:#9aa3b2;--accent:#5b8cff;--accent2:#3aa675;--danger:#e5484d;--border:#2a2f3a}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}.container{max-width:1100px;margin:0 auto;padding:24px}.nav{display:flex;gap:18px;align-items:center;padding:12px 24px;border-bottom:1px solid var(--border);background:var(--panel)}.nav .brand{font-weight:700;letter-spacing:.3px}.nav .spacer{flex:1 1}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px}.btn{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:10px 16px;font-weight:600;cursor:pointer}.btn:disabled{opacity:.5;cursor:default}.btn.secondary{border:1px solid var(--border)}.btn.secondary,.input{background:var(--panel2)}.input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);color:var(--text)}label{display:block;font-size:13px;color:var(--muted);margin:12px 0 6px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px;gap:12px}.tile{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--panel2);border:1px solid var(--border)}.tile img{width:100%;height:100%;object-fit:cover}.badge{position:absolute;top:6px;left:6px;font-size:11px;padding:2px 7px;border-radius:999px;background:rgba(0,0,0,.6);color:#fff}.badge.analyzed{background:var(--accent2)}.badge.processing,.badge.queued,.badge.uploaded{background:#b8860b}.badge.error{background:var(--danger)}.dropzone{border:2px dashed var(--border);border-radius:12px;padding:40px;text-align:center;color:var(--muted);background:var(--panel2)}.row{display:flex;gap:10px;align-items:center}.muted{color:var(--muted)}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:8px;border-bottom:1px solid var(--border);font-size:14px}.progressbar{height:6px;background:var(--panel2);border-radius:4px;overflow:hidden}.progressbar>div{height:100%;background:var(--accent);transition:width .2s}