*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0a0a;--surface:#161616;--surface-hi:#222;--border:#2a2a2a;--text:#e8e8e8;--text-dim:#9a9a9a;--accent:#4d9cff;--danger:#ff5b5b;--success:#51cf66;--warning:#ffd43b}body{background:var(--bg);color:var(--text);font:15px/1.5 -apple-system,BlinkMacSystemFont,Helvetica Neue,system-ui,sans-serif;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;background:var(--surface-hi);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer}button:hover{background:#2c2c2c}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:white;border-color:var(--accent)}button.danger{background:var(--danger);color:white;border-color:var(--danger)}input,select,textarea{font:inherit;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;width:100%}table{width:100%;border-collapse:collapse;font-size:14px}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}th{color:var(--text-dim);font-weight:600}.nav,th,tr:hover td{background:var(--surface)}.nav{display:flex;gap:16px;padding:14px 24px;border-bottom:1px solid var(--border)}.nav a{color:var(--text-dim);font-weight:500}.nav a.active{color:var(--text)}.container{max-width:1200px;margin:0 auto;padding:24px}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:16px}.muted{color:var(--text-dim);font-size:13px}.row{gap:8px;align-items:center}.col,.row{display:flex}.col{flex-direction:column;gap:4px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:16px;gap:16px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px}.stat-value{font-size:28px;font-weight:600}.stat-label{font-size:13px;margin-top:4px}.badge,.stat-label{color:var(--text-dim)}.badge{display:inline-block;padding:2px 8px;font-size:12px;border-radius:4px;background:var(--surface-hi)}.badge.manual{background:#ffd43b22;color:var(--warning)}.badge.kassal{background:#4d9cff22;color:var(--accent)}.badge.openfoodfacts{background:#51cf6622;color:var(--success)}.badge.upcitemdb{background:#b97aff22;color:#b97aff}.badge.barcodelookup{background:#ff8a5b22;color:#ff8a5b}