:root {
  --page:#f3f3f6; --surface:#fff; --ink:#1b1626; --mute:#6b6478; --line:#e3e1ea; --soft:#f1eff6;
  --brand:#5a2a86; --brand-ink:#fff; --brand-soft:#efe6f8; --brand-deep:#3d1a5e;
  --sticker:#ffd400; --sticker-ink:#1b1626; --sale:#d1202f; --best:#13804a; --best-soft:#e3f4ea; --warn:#b4470b; --warn-soft:#fff1e4;
  --r:12px; --r-sm:8px; --shadow:0 1px 2px rgba(27,22,38,.06), 0 4px 14px rgba(27,22,38,.05);
}
@media (prefers-color-scheme: dark) { :root {
  --page:#121016; --surface:#1c1922; --ink:#efecf4; --mute:#a39db0; --line:#2e2a37; --soft:#26222e;
  --brand:#b48be0; --brand-ink:#16121c; --brand-soft:#2e2340; --brand-deep:#241736;
  --sale:#ff6b73; --best:#4fcf8a; --best-soft:#15301f; --warn:#f2995a; --warn-soft:#33200f;
  --shadow:none; } }
* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body { margin:0; background:var(--page); color:var(--ink); font:15px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
main { max-width:1240px; margin:0 auto; padding:22px 20px 56px; min-height:70vh; }
a { color:inherit; }
:focus-visible { outline:2px solid var(--brand); outline-offset:2px; border-radius:4px; }
h1 { font-size:28px; line-height:1.15; font-weight:850; letter-spacing:-.025em; margin:0 0 16px; }
h2 { font-size:20px; font-weight:800; letter-spacing:-.02em; margin:0 0 14px; }
h3 { font-size:16px; font-weight:750; margin:0; }
small, .mute { color:var(--mute); font-size:13px; }
small { display:block; line-height:1.35; }
.num { font-variant-numeric:tabular-nums; white-space:nowrap; }
.hint { color:var(--mute); font-size:13.5px; margin:8px 0 0; max-width:66ch; }
.warn { color:var(--warn); }
.err { color:var(--warn); min-height:1.4em; margin:8px 0 0; }
svg { display:block; }

/* ---- header */
.hd { background:var(--surface); position:sticky; top:0; z-index:30; box-shadow:0 1px 0 var(--line); }
.hd-in { max-width:1240px; margin:0 auto; padding:12px 20px; display:flex; align-items:center; gap:20px; }
.logo { display:flex; align-items:center; gap:8px; color:var(--brand); text-decoration:none; font-weight:900; font-size:24px; letter-spacing:-.04em; }
.logo svg { width:30px; height:30px; }
.gsearch { flex:1; display:flex; max-width:640px; margin:0 auto; }
.gsearch input { flex:1; border:2px solid var(--brand); border-right:0; border-radius:99px 0 0 99px; padding:10px 18px; font-size:15px; min-height:44px; background:var(--surface); }
.gsearch button { border-radius:0 99px 99px 0; padding:0 18px; min-height:44px; }
.gsearch button svg { width:20px; height:20px; }
.who { font-size:14px; white-space:nowrap; display:flex; gap:10px; align-items:center; }
.who a { text-decoration:none; font-weight:650; }
.who button { padding:6px 12px; min-height:0; font-size:13px; }
.bk { display:flex; align-items:center; gap:8px; background:var(--brand); color:var(--brand-ink); text-decoration:none; border-radius:99px; padding:8px 16px 8px 12px; font-weight:750; position:relative; white-space:nowrap; }
.bk svg { width:22px; height:22px; }
.bk-n { position:absolute; left:26px; top:2px; background:var(--sticker); color:var(--sticker-ink); font-size:11px; font-weight:850; min-width:18px; height:18px; border-radius:99px; display:grid; place-items:center; padding:0 4px; }
.bk-n:empty, .bk-n[data-z] { display:none; }
.bk.bump { animation:bump .35s ease; }
@keyframes bump { 40% { transform:scale(1.08); } }
.nv { background:var(--brand); }
.nv-in { max-width:1240px; margin:0 auto; padding:0 20px; display:flex; gap:2px; overflow-x:auto; scrollbar-width:none; }
.nv a { color:var(--brand-ink); text-decoration:none; padding:10px 14px; font-weight:650; font-size:14px; white-space:nowrap; opacity:.85; border-bottom:3px solid transparent; }
.nv a:hover { opacity:1; } .nv a.on { opacity:1; border-color:var(--sticker); }
.nv .sep { flex:1; }
@media (prefers-color-scheme: dark) { .nv { background:var(--brand-deep); } .nv a { color:var(--ink); } }
@media (max-width:760px) {
  .hd-in { flex-wrap:wrap; gap:10px 12px; padding:10px 14px; }
  .logo { font-size:21px; } .who { margin-left:auto; } .bk-t { display:none; } .bk { padding:8px 12px; }
  .gsearch { order:5; flex-basis:100%; max-width:none; }
  .nv-in { padding:0 8px; } main { padding:16px 14px 48px; } h1 { font-size:24px; }
}

/* ---- controls */
input[type=search], input[type=text], input[type=password], input[type=number], input[type=file], select, textarea {
  font:inherit; color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:9px 12px; min-height:42px; min-width:0; }
input:focus, select:focus, textarea:focus { outline:2px solid var(--brand); outline-offset:-1px; }
textarea { width:100%; min-height:120px; resize:vertical; }
input[type=checkbox] { width:18px; height:18px; accent-color:var(--brand); margin:0; }
button, .btn { font:inherit; font-weight:750; background:var(--brand); color:var(--brand-ink); border:0; border-radius:99px; padding:10px 20px; min-height:42px; cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; gap:8px; white-space:nowrap; }
button:hover, .btn:hover { filter:brightness(1.1); }
button.ghost, .btn.ghost { background:transparent; color:var(--ink); border:1px solid var(--line); font-weight:600; }
button.ghost:hover, .btn.ghost:hover { border-color:var(--ink); filter:none; }
button.link { background:none; color:var(--brand); padding:0; min-height:0; font-weight:650; border-radius:0; }
button:disabled { opacity:.4; cursor:default; }
.bar { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; align-items:center; }
.bar input[type=search], .bar input[type=text] { flex:1; min-width:180px; }
.card { background:var(--surface); border-radius:var(--r); padding:20px; margin-bottom:16px; box-shadow:var(--shadow); border:1px solid var(--line); }
.card.warn { background:var(--warn-soft); border-color:transparent; color:var(--ink); }
.crumbs { font-size:13.5px; color:var(--mute); margin:0 0 14px; } .crumbs a { color:var(--mute); }
ul.plain { list-style:none; padding:0; margin:0; }
ul.plain li { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 0; border-top:1px solid var(--line); }
ul.plain li:first-child { border-top:0; }
ul.plain li > span:first-child { display:flex; align-items:center; gap:10px; min-width:0; }
.tablewrap { overflow-x:auto; } table { width:100%; border-collapse:collapse; }
th, td { text-align:left; padding:10px 8px; border-top:1px solid var(--line); vertical-align:middle; }
th { color:var(--mute); font-weight:650; font-size:13px; border-top:0; }
details > summary { cursor:pointer; }

/* ---- store pill, stickers, prices */
.st { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:750; color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:99px; padding:2px 9px 2px 7px; white-space:nowrap; }
.st::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--dot, #888); }
.st[data-s=continente] { --dot:#e2001a; } .st[data-s=pingodoce] { --dot:#3a9b35; } .st[data-s=auchan] { --dot:#ee7203; } .st[data-s=lidl] { --dot:#0050aa; } .st[data-s=intermarche] { --dot:#9b1b30; }
.off { background:var(--sticker); color:var(--sticker-ink); font-weight:900; font-size:13px; padding:3px 8px; border-radius:6px; letter-spacing:-.01em; }
.tag { font-size:11.5px; font-weight:700; padding:1px 8px; border-radius:99px; background:var(--soft); color:var(--mute); white-space:nowrap; display:inline-block; }
.tag.sale { background:var(--sticker); color:var(--sticker-ink); } .tag.best { background:var(--best-soft); color:var(--best); }
.pr { display:flex; flex-direction:column; line-height:1.15; }
.pr b { font-size:21px; font-weight:850; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
.pr.sale b { color:var(--sale); }
.pr s { font-size:12.5px; color:var(--mute); }
.pr i { font-style:normal; font-size:12px; color:var(--mute); font-variant-numeric:tabular-nums; }
.pr.xl b { font-size:40px; } .pr.xl i, .pr.xl s { font-size:14px; }

/* ---- product images */
.pic { width:56px; height:56px; flex:none; object-fit:contain; background:#fff; border-radius:var(--r-sm); }
.pic.sm { width:44px; height:44px; border:1px solid var(--line); } .pic.lg { width:100%; height:380px; }
.noimg { background:var(--soft); position:relative; }
.noimg::after { content:""; position:absolute; inset:30%; border-radius:50%; background:var(--line); opacity:.6; }

/* ---- product cards (the shelf) */
.shelf { display:grid; grid-template-columns:repeat(auto-fill, minmax(196px, 1fr)); gap:14px; }
.pc { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:12px; display:flex; flex-direction:column; gap:8px; position:relative; box-shadow:var(--shadow); }
.pc:hover { border-color:var(--brand); }
.pc .im { display:block; position:relative; }
.pc .pic { width:100%; height:150px; }
.pc .off { position:absolute; left:0; top:0; }
.pc .st { position:absolute; right:0; top:0; }
.pc .nm { font-size:14px; line-height:1.3; font-weight:600; text-decoration:none; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.6em; }
.pc .nm:hover { color:var(--brand); text-decoration:underline; }
.pc .meta { font-size:12.5px; color:var(--mute); min-height:1.3em; }
.pc .buy { margin-top:auto; display:flex; align-items:flex-end; justify-content:space-between; gap:8px; }
.add { padding:8px 14px; min-height:38px; font-size:14px; }
.add svg { width:16px; height:16px; }
.add.done { background:var(--best); }
.rail-h { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:34px 0 14px; }
.rail-h h2 { margin:0; } .rail-h a { font-weight:700; color:var(--brand); text-decoration:none; }
.pager { display:flex; gap:14px; align-items:center; justify-content:center; margin-top:26px; color:var(--mute); }

/* ---- home */
.hero { background:var(--brand); color:var(--brand-ink); border-radius:18px; padding:40px 40px 34px; display:grid; grid-template-columns:minmax(0, 1.3fr) minmax(0, 1fr); gap:30px; align-items:center; overflow:hidden; position:relative; }
@media (prefers-color-scheme: dark) { .hero { background:var(--brand-deep); color:var(--ink); } }
.hero h1 { font-size:44px; line-height:1.02; letter-spacing:-.04em; margin:0 0 12px; max-width:13ch; }
.hero p { margin:0 0 22px; font-size:17px; opacity:.9; max-width:44ch; }
.hero form { display:flex; background:var(--surface); border-radius:99px; padding:5px; max-width:520px; }
.hero form input { flex:1; min-width:0; border:0; background:transparent; padding:8px 16px; font-size:16px; color:var(--ink); }
.hero form input:focus { outline:0; }
.hero form button { background:var(--sticker); color:var(--sticker-ink); }
.quick { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.quick a { background:rgba(255,255,255,.14); color:inherit; text-decoration:none; font-weight:600; padding:6px 14px; border-radius:99px; font-size:14px; }
.quick a:hover { background:rgba(255,255,255,.24); }
.quick button { background:rgba(255,255,255,.14); color:inherit; font-weight:600; padding:6px 14px; min-height:34px; font-size:14px; }
.quick button:hover { background:rgba(255,255,255,.24); filter:none; }
.receipt:empty { visibility:hidden; }
.receipt { background:#fff; color:#1b1626; border-radius:6px 6px 0 0; padding:18px 20px 22px; transform:rotate(2deg); box-shadow:0 16px 40px rgba(0,0,0,.22); font-size:14px; position:relative; max-width:330px; justify-self:center; width:100%; }
.receipt::after { content:""; position:absolute; left:0; right:0; top:100%; height:10px; background:linear-gradient(135deg, #fff 50%, transparent 50%) 0 0/14px 10px, linear-gradient(225deg, #fff 50%, transparent 50%) 0 0/14px 10px; }
.receipt b { font-size:13px; letter-spacing:.02em; }
.receipt .r { display:flex; justify-content:space-between; gap:10px; padding:5px 0; border-bottom:1px dashed #d8d4e0; }
.receipt .r span:last-child { font-variant-numeric:tabular-nums; font-weight:700; }
.receipt .r .st { font-size:11px; }
.receipt .tot { display:flex; justify-content:space-between; padding-top:10px; font-weight:900; font-size:18px; }
.receipt .sv { margin-top:8px; background:var(--sticker); padding:4px 10px; border-radius:6px; font-weight:800; display:inline-block; }
@media (max-width:860px) { .hero { grid-template-columns:minmax(0, 1fr); padding:28px 22px; } .hero h1 { font-size:34px; } .receipt { display:none; } }
.steps { display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; counter-reset:s; }
.steps div { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:18px; counter-increment:s; }
.steps div::before { content:counter(s); display:grid; place-items:center; width:30px; height:30px; border-radius:50%; background:var(--brand-soft); color:var(--brand); font-weight:900; margin-bottom:10px; }
.steps b { display:block; margin-bottom:4px; }
@media (max-width:760px) { .steps { grid-template-columns:1fr; } }
.stores { display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:14px; }
.sc { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:18px; text-decoration:none; display:flex; flex-direction:column; gap:6px; box-shadow:var(--shadow); border-top:5px solid var(--dot, #888); }
.sc:hover { border-color:var(--brand); border-top-color:var(--dot); }
.sc b { font-size:19px; font-weight:850; letter-spacing:-.02em; }
.sc[data-s=continente] { --dot:#e2001a; } .sc[data-s=pingodoce] { --dot:#3a9b35; } .sc[data-s=auchan] { --dot:#ee7203; } .sc[data-s=lidl] { --dot:#0050aa; } .sc[data-s=intermarche] { --dot:#9b1b30; }

/* ---- listing pages: filters + shelf */
.lay { display:grid; grid-template-columns:230px 1fr; gap:24px; align-items:start; }
.side { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:16px; position:sticky; top:130px; max-height:calc(100vh - 150px); overflow:auto; }
.side h3 { font-size:13px; color:var(--mute); margin:0 0 8px; }
.side + div { min-width:0; }
.flt { display:flex; flex-direction:column; gap:2px; margin-bottom:18px; }
.flt a { padding:7px 10px; border-radius:var(--r-sm); text-decoration:none; font-size:14px; display:flex; justify-content:space-between; gap:8px; }
.flt a:hover { background:var(--soft); } .flt a.on { background:var(--brand-soft); color:var(--brand); font-weight:750; }
.flt a span { color:var(--mute); font-weight:400; }
.res-h { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.res-h h1 { margin:0; }
@media (max-width:860px) { .lay { grid-template-columns:1fr; } .side { position:static; max-height:none; padding:10px; } .flt { flex-direction:row; overflow-x:auto; margin-bottom:8px; } .flt a { white-space:nowrap; } }
.banner { border-radius:var(--r); padding:22px 24px; margin-bottom:20px; background:var(--surface); border:1px solid var(--line); border-left:8px solid var(--dot, var(--brand)); display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.banner h1 { margin:0; }
.banner[data-s=continente] { --dot:#e2001a; } .banner[data-s=pingodoce] { --dot:#3a9b35; } .banner[data-s=auchan] { --dot:#ee7203; } .banner[data-s=lidl] { --dot:#0050aa; } .banner[data-s=intermarche] { --dot:#9b1b30; }
.empty { text-align:center; padding:48px 20px; }
.empty b { display:block; font-size:18px; margin-bottom:6px; }
.empty p { color:var(--mute); margin:0 auto 16px; max-width:46ch; }
.loading { color:var(--mute); padding:30px 0; }

/* ---- product page */
.pd { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:30px; }
.pd .gal { background:#fff; border-radius:var(--r); border:1px solid var(--line); padding:20px; position:relative; }
.pd .gal .off { position:absolute; left:16px; top:16px; font-size:16px; }
.pd .info { display:flex; flex-direction:column; gap:14px; align-items:flex-start; }
.pd .info h1 { font-size:30px; margin:0; }
.pd .buybox { width:100%; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:18px; display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.pd .buybox button { padding:13px 26px; font-size:16px; }
@media (max-width:860px) { .pd { grid-template-columns:1fr; } .pic.lg { height:260px; } }
.cmp .row { display:grid; grid-template-columns:44px minmax(0, 1fr) auto auto; gap:14px; align-items:center; padding:12px 0; border-top:1px solid var(--line); }
.cmp .row:first-child { border-top:0; }
.cmp .row.best { background:var(--best-soft); margin:0 -20px; padding:12px 20px; border-top-color:transparent; }
.cmp .row a { font-weight:600; text-decoration:none; } .cmp .row a:hover { text-decoration:underline; }
@media (max-width:560px) { .cmp .row { grid-template-columns:44px 1fr auto; } .cmp .row .add { grid-column:2 / -1; justify-self:start; } }
.spark { width:100%; height:110px; margin:4px 0 12px; } .spark polyline { fill:none; stroke:var(--brand); stroke-width:2.5; vector-effect:non-scaling-stroke; stroke-linejoin:round; }
.spark .area { fill:var(--brand-soft); stroke:none; }

/* ---- basket / checkout */
.ck { display:grid; grid-template-columns:minmax(0, 1fr) 360px; gap:24px; align-items:start; }
@media (max-width:960px) { .ck { grid-template-columns:1fr; } }
.addrow { display:flex; gap:8px; margin-bottom:6px; }
.addrow input { flex:1; font-size:16px; padding:12px 16px; min-height:48px; border-radius:99px; border:2px solid var(--line); }
.addrow input:focus { border-color:var(--brand); outline:0; }
.addrow button { min-height:48px; }
.bl { display:flex; flex-direction:column; gap:10px; margin-top:16px; }
.li { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--shadow); }
.li-m { display:grid; grid-template-columns:64px minmax(0, 1fr) auto auto; gap:14px; align-items:center; padding:14px; }
.li-m .pic { width:64px; height:64px; }
.li-t input { border:1px solid transparent; background:transparent; font-weight:750; font-size:16px; padding:3px 6px; margin-left:-7px; width:100%; min-height:0; }
.li-t input:hover { border-color:var(--line); } .li-t input:focus { border-color:var(--brand); background:var(--surface); }
.li-t .wn { font-size:13.5px; color:var(--mute); margin-top:2px; display:flex; flex-wrap:wrap; gap:4px 8px; align-items:center; }
.li-t .wn a { color:var(--ink); text-decoration:none; } .li-t .wn a:hover { text-decoration:underline; }
.qty { display:flex; align-items:center; border:1px solid var(--line); border-radius:99px; }
.qty button { background:none; color:var(--ink); padding:0; width:34px; min-height:34px; font-size:18px; font-weight:600; }
.qty button:hover { background:var(--soft); filter:none; }
.qty span { min-width:22px; text-align:center; font-weight:750; font-variant-numeric:tabular-nums; }
.li-p { text-align:right; } .li-p b { font-size:20px; font-weight:850; letter-spacing:-.02em; display:block; }
.li-x { position:absolute; }
.li-f { display:flex; gap:14px; align-items:center; padding:0 14px 12px 92px; flex-wrap:wrap; font-size:13.5px; }
.li-f button.link { font-size:13.5px; }
.li-c { border-top:1px solid var(--line); padding:12px 14px 14px; }
.li-c .chips { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 12px; align-items:center; }
.chip { background:var(--soft); color:var(--ink); border:1px solid transparent; padding:3px 12px; min-height:30px; font-size:13px; font-weight:600; }
.chip span { color:var(--mute); font-weight:400; } .chip:hover { border-color:var(--brand); filter:none; }
.opts-t { width:100%; }
.opts-t td { padding:8px 6px; } .opts-t tr.best td { background:var(--best-soft); } .opts-t tr.best td:first-child { border-radius:var(--r-sm) 0 0 var(--r-sm); } .opts-t tr.best td:last-child { border-radius:0 var(--r-sm) var(--r-sm) 0; }
.opts-t select { width:100%; font-size:13px; padding:5px 8px; min-height:34px; }
.opts-t td.c { text-align:right; font-weight:800; }
@media (max-width:620px) {
  .li-m { grid-template-columns:52px minmax(0, 1fr) auto; } .li-m .pic { width:52px; height:52px; }
  .li-m .qty { grid-column:2; grid-row:2; justify-self:start; } .li-p { grid-column:3; grid-row:1 / span 2; }
  .li-f { padding-left:14px; } .opts-t td:nth-child(2) small { display:none; }
}
.sum { position:sticky; top:130px; }
.sum .tot { display:flex; justify-content:space-between; align-items:baseline; font-weight:900; font-size:30px; letter-spacing:-.03em; margin:4px 0 8px; }
.sum .tot span:first-child { font-size:16px; letter-spacing:0; font-weight:750; }
.save { background:var(--sticker); color:var(--sticker-ink); border-radius:var(--r-sm); padding:10px 12px; font-size:14px; margin-bottom:14px; }
.save b { font-size:16px; }
.split { margin:6px 0 14px; } .split li { font-size:14.5px; } .split li > span:first-child { gap:8px; }
.sum .go { width:100%; margin-top:4px; padding:13px; font-size:16px; }
.sum details { border-top:1px solid var(--line); margin-top:16px; padding-top:12px; }
.sum summary { font-weight:700; }
.optl { display:flex; flex-direction:column; gap:10px; margin-top:12px; font-size:14px; }
.optl label { display:flex; align-items:center; gap:8px; cursor:pointer; }
.optl input[type=number] { width:80px; min-height:34px; padding:4px 8px; }
.stl { display:flex; flex-wrap:wrap; gap:6px; }
.stl label { border:1px solid var(--line); border-radius:99px; padding:4px 12px; font-size:13px; font-weight:650; }
.stl label:has(input:checked) { background:var(--brand-soft); border-color:var(--brand); color:var(--brand); }
.stl input { position:absolute; opacity:0; width:0; height:0; } .stl label:has(input:focus-visible) { outline:2px solid var(--brand); outline-offset:2px; }

/* ---- my lists: one card per shop */
.lc { border-top:6px solid var(--dot, var(--brand)); padding:16px 20px 6px; }
.lc[data-s=continente] { --dot:#e2001a; } .lc[data-s=pingodoce] { --dot:#3a9b35; } .lc[data-s=auchan] { --dot:#ee7203; } .lc[data-s=lidl] { --dot:#0050aa; } .lc[data-s=intermarche] { --dot:#9b1b30; }
.lc-h { display:flex; align-items:baseline; gap:12px; padding-bottom:8px; }
.lc-h h2 { margin:0; } .lc-h b { margin-left:auto; font-size:20px; font-weight:850; }
.lr { display:grid; grid-template-columns:56px minmax(0, 1fr) auto auto; gap:14px; align-items:center; padding:12px 0; border-top:1px solid var(--line); }
.lr-t a { font-weight:650; text-decoration:none; } .lr-t a:hover { text-decoration:underline; }
.lr-p { text-align:right; display:flex; flex-direction:column; align-items:flex-end; gap:2px; } .lr-p b { font-size:18px; font-weight:850; }
.alt { margin-top:6px; font-size:13px; background:var(--best-soft); color:var(--ink); border-radius:var(--r-sm); padding:6px 10px; }
.alt a { font-weight:500; color:var(--mute); } .alt button.link { margin-left:4px; font-size:13px; color:var(--best); }
@media (max-width:620px) { .lr { grid-template-columns:48px minmax(0, 1fr) auto; } .lr .pic { width:48px; height:48px; } .lr .qty { grid-column:2; grid-row:2; justify-self:start; } .lr-p { grid-column:3; grid-row:1 / span 2; } }

.tag.down { background:var(--best-soft); color:var(--best); } .tag.up { background:var(--warn-soft); color:var(--warn); }
.chg { margin:0 0 10px; font-size:14px; } .chg .down { color:var(--best); font-weight:750; } .chg .up { color:var(--warn); font-weight:750; }
.saved { margin-top:24px; max-width:860px; } .saved ul.plain li > span:first-child { flex-direction:column; align-items:flex-start; gap:0; }

/* ---- shopping trip */
.trip { display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:16px; }
.trip .card { border-top:6px solid var(--dot, var(--brand)); padding-top:16px; }
.trip .card[data-s=continente] { --dot:#e2001a; } .trip .card[data-s=pingodoce] { --dot:#3a9b35; } .trip .card[data-s=auchan] { --dot:#ee7203; } .trip .card[data-s=lidl] { --dot:#0050aa; } .trip .card[data-s=intermarche] { --dot:#9b1b30; }
.trip h2 { display:flex; justify-content:space-between; }
.trip li label { display:flex; gap:12px; align-items:center; cursor:pointer; flex:1; min-width:0; }
.trip li input { width:22px; height:22px; flex:none; }
.trip li:has(input:checked) .tn { text-decoration:line-through; color:var(--mute); }

/* ---- receipts + account reuse .card/.bar/table */
.auth { max-width:420px; margin:0 auto; } .auth label { display:block; margin:12px 0; font-size:14px; font-weight:650; } .auth input { width:100%; display:block; margin-top:6px; }
details.rc { border-top:1px solid var(--line); padding:12px 0; } details.rc:first-of-type { border-top:0; }

.toast { position:fixed; left:50%; bottom:24px; transform:translate(-50%, 20px); background:var(--ink); color:var(--surface); padding:12px 18px; border-radius:99px; font-weight:650; font-size:14px; opacity:0; pointer-events:none; z-index:50; display:flex; gap:14px; align-items:center; box-shadow:0 8px 30px rgba(0,0,0,.25); max-width:calc(100vw - 28px); }
.toast.on { opacity:1; transform:translate(-50%, 0); pointer-events:auto; }
.toast a { color:var(--sticker); font-weight:800; white-space:nowrap; }
.ft { max-width:1240px; margin:0 auto; padding:20px 20px 40px; color:var(--mute); font-size:12.5px; border-top:1px solid var(--line); }
@media (prefers-reduced-motion: no-preference) { .toast { transition:opacity .18s, transform .18s; } .pc, .sc { transition:border-color .12s; } }
@media (prefers-reduced-motion: reduce) { .bk.bump { animation:none; } }
@media print { .hd, .ft, .noprint { display:none !important; } body { background:#fff; } .card { box-shadow:none; } }
