:root{
  --bg:#0f1115; --card:#1a1d24; --card2:#22262f; --text:#e6e9ef; --muted:#9aa3b2;
  --line:#2b303b; --primary:#4f8cff; --primary-t:#1c2c4a; --ok:#3ecf8e; --warn:#ffb454;
  --danger:#ff5d5d; --best:#16351f; --best-line:#3ecf8e; --pill:#2b303b; --radius:10px;
}
html[data-theme="light"]{
  --bg:#f4f6fa; --card:#ffffff; --card2:#f0f2f7; --text:#1a1d24; --muted:#6a7280;
  --line:#e2e6ee; --primary:#2f6bff; --primary-t:#e4edff; --best:#e3f9ee; --best-line:#1a9e63; --pill:#eef1f6;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:.2em 0 .5em}
main{max-width:1100px;margin:0 auto;padding:1rem}
.muted{color:var(--muted)}
.small{font-size:.85em}
.r{text-align:right}
.grow{flex:1}
.hidden{display:none}
.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:720px){.grid2{grid-template-columns:1fr}}

.topbar{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:700;font-size:1.1rem;color:var(--text)}
.topbar nav{display:flex;gap:.3rem;flex-wrap:wrap;flex:1}
.topbar nav a{padding:.35rem .6rem;border-radius:8px;color:var(--muted)}
.topbar nav a.active,.topbar nav a:hover{background:var(--card2);color:var(--text);text-decoration:none}
.topright{display:flex;align-items:center;gap:.5rem}
.user{color:var(--muted);font-size:.9em}
.badge{background:var(--danger);color:#fff;border-radius:10px;padding:0 .4em;font-size:.75em}
.tabbar{display:flex;align-items:center;gap:.3rem;padding:.4rem 1rem;background:var(--card2);border-bottom:1px solid var(--line);overflow-x:auto}
.tab-chip{padding:.3rem .8rem;border-radius:8px 8px 0 0;background:var(--card);color:var(--muted);white-space:nowrap;border:1px solid var(--line);border-bottom:none;font-size:.9em}
.tab-chip.active{background:var(--bg);color:var(--text);font-weight:600}
.tab-chip:hover{text-decoration:none;color:var(--text)}
.tab-chip.tab-add{font-weight:700;padding:.3rem .7rem}
.tab-edit-hint a{color:inherit;opacity:.7}
.shop-picker{display:flex;flex-direction:column;gap:.3rem;margin:.4rem 0 1rem}
.tick{width:9px;height:9px;border-radius:50%;background:var(--line);display:inline-block}
.tick.working{background:var(--warn);animation:pulse 1s infinite}
.tick.done{background:var(--ok)}
@keyframes pulse{50%{opacity:.3}}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}
.card.empty{color:var(--muted);text-align:center;padding:2rem}
.btn{display:inline-block;background:var(--card2);color:var(--text);border:1px solid var(--line);border-radius:8px;
  padding:.45rem .8rem;cursor:pointer;font-size:.9rem}
.btn:hover{border-color:var(--primary);text-decoration:none}
.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn.small{padding:.25rem .5rem;font-size:.8rem}
.btn.danger{color:var(--danger);border-color:var(--danger)}
.btn.danger:hover{background:var(--danger);color:#fff}

input,select,textarea{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem;font:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid var(--primary-t);border-color:var(--primary)}
label{display:block;margin:.5rem 0}
label input,label select,label textarea{display:block;width:100%;margin-top:.2rem}
label.inline{display:inline-flex;align-items:center;gap:.4rem}
label.inline input{width:auto;margin:0}
textarea{resize:vertical}

.filters{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.filters input,.filters select{margin:0}

.msg{padding:.6rem .9rem;border-radius:8px;margin-bottom:.8rem;border:1px solid var(--line)}
.msg.ok{background:var(--best);border-color:var(--best-line)}
.msg.error{background:#3a1c1c;border-color:var(--danger)}
html[data-theme="light"] .msg.error{background:#fde8e8}
.msg.warn{background:#3a301c;border-color:var(--warn)}
html[data-theme="light"] .msg.warn{background:#fff4e0}

.pill{background:var(--pill);border-radius:20px;padding:.1rem .6rem;font-size:.8rem;color:var(--muted)}
.tag{font-size:.72rem;padding:.05rem .4rem;border-radius:6px;background:var(--pill);color:var(--muted)}
.tag.ok{background:var(--best);color:var(--best-line)}
.tag.warn{background:#3a301c;color:var(--warn)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--primary);display:inline-block}

.product-list .product{padding:.8rem 1rem}
.product-head{display:flex;gap:.8rem;align-items:center}
.thumb{width:52px;height:52px;object-fit:cover;border-radius:8px;background:var(--card2)}
.thumb.big{width:110px;height:110px}
.thumb.placeholder{display:flex;align-items:center;justify-content:center;color:var(--muted)}
.product h3{margin:0;font-size:1rem}
.meta{display:flex;gap:.6rem;align-items:center;margin-top:.3rem;flex-wrap:wrap}
.price-best{font-weight:700;color:var(--ok)}
.unit{color:var(--muted);font-size:.85rem}
.actions{display:flex;gap:.4rem}
.product.multi{border-left:3px solid var(--primary)}

table.offers{width:100%;border-collapse:collapse;margin-top:.6rem;font-size:.9rem}
table.offers th{text-align:left;color:var(--muted);font-weight:500;border-bottom:1px solid var(--line);padding:.35rem .4rem}
table.offers td{padding:.35rem .4rem;border-bottom:1px solid var(--line)}
table.offers tr.best td{background:var(--best)}
table.offers tr.oos td{opacity:.55}
table.offers.full{font-size:.9rem}

.dup .dup-score{color:var(--muted);font-size:.85rem;margin-bottom:.4rem}
.dup-cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:.6rem}
.dup-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.dup-actions form{margin:0}

.apikey{display:block;background:var(--bg);padding:.5rem;border-radius:8px;border:1px solid var(--line);
  word-break:break-all;font-family:ui-monospace,monospace;margin:.5rem 0}
tr.seen{opacity:.6}

.foot{max-width:1100px;margin:1rem auto;padding:1rem;color:var(--muted);font-size:.85rem;border-top:1px solid var(--line)}
.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh}
.auth-card{width:340px;max-width:92vw}
.report h2{border-bottom:2px solid var(--line);padding-bottom:.3rem;margin-top:1.5rem}
.rep-product{margin-bottom:1rem}
table.rep-table{width:100%;border-collapse:collapse;font-size:.9rem}
table.rep-table th,table.rep-table td{padding:.3rem .5rem;border-bottom:1px solid var(--line);text-align:left}
table.rep-table tr.best td{background:var(--best);font-weight:600}
code{background:var(--card2);padding:.1rem .3rem;border-radius:4px;font-family:ui-monospace,monospace}
