:root{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", "Roboto Mono", Menlo, Consolas, monospace;--text-2xs:.625rem;--text-xs:.6875rem;--text-sm:.8125rem;--text-md:.9375rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--leading-tight:1.2;--leading-normal:1.45;--weight-medium:600;--weight-bold:700;--weight-black:800;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-pill:999px;--elev-1:0 1px 2px #211a140f, 0 2px 6px -2px #211a1414;--elev-2:0 1px 2px #211a140f, 0 10px 24px -12px #211a143d;--elev-3:0 -2px 6px #211a140a, 0 -12px 32px -16px #211a1447;--on-accent:#fff;--media-bg:#fff;--scan-bg:#fff;--scan-ink:#000;--scrim:#211a1473;--chrome:color-mix(in srgb, var(--bg) 86%, transparent);--ease-out:cubic-bezier(.2, .8, .2, 1);--dur-fast:.12s;--dur-med:.22s;--shell-max:520px;--topbar-h:3.25rem;--tabbar-h:4.25rem}@media (prefers-color-scheme:dark){:root{--elev-1:0 1px 2px #0000004d, 0 2px 6px -2px #0006;--elev-2:0 1px 2px #0000004d, 0 12px 26px -14px #0009;--elev-3:0 -12px 32px -16px #000000b3;--media-bg:#f6f1eb;--scrim:#0009}}:root[data-theme=dark]{--elev-1:0 1px 2px #0000004d, 0 2px 6px -2px #0006;--elev-2:0 1px 2px #0000004d, 0 12px 26px -14px #0009;--elev-3:0 -12px 32px -16px #000000b3;--media-bg:#f6f1eb;--scrim:#0009}:root[data-theme=light]{--elev-1:0 1px 2px #211a140f, 0 2px 6px -2px #211a1414;--elev-2:0 1px 2px #211a140f, 0 10px 24px -12px #211a143d;--elev-3:0 -2px 6px #211a140a, 0 -12px 32px -16px #211a1447;--media-bg:#fff;--scrim:#211a1473}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-sm);font:var(--weight-bold) var(--text-sm) / 1 var(--font-sans);cursor:pointer;transition:background var(--dur-fast), transform var(--dur-fast);border:1px solid #0000;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-strong)}.btn-secondary{background:var(--surface);border-color:var(--border);color:var(--ink)}.btn-ghost{color:var(--accent-strong);background:0 0}.btn-sm{min-height:34px;padding:0 var(--space-3);font-size:var(--text-xs)}.btn-icon{border-radius:var(--radius-pill);width:36px;min-height:36px;padding:0}.btn-block{width:100%}.chip{align-items:center;gap:var(--space-2);min-height:36px;font:var(--weight-medium) var(--text-sm) / 1 var(--font-sans);padding:0 var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--ink-soft);cursor:pointer;white-space:nowrap;transition:background var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast);flex:none;display:inline-flex}.chip:hover{border-color:var(--ink-faint)}.chip.is-active{background:var(--ink);border-color:var(--ink);color:var(--bg)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--elev-1);color:inherit;overflow:hidden}.card-interactive{cursor:pointer;transition:box-shadow var(--dur-med) var(--ease-out), transform var(--dur-med) var(--ease-out)}@media (hover:hover){.card-interactive:hover{box-shadow:var(--elev-2);transform:translateY(-2px)}}.card-interactive:active{transform:scale(.985)}.badge{align-items:center;gap:var(--space-1);height:20px;padding:0 var(--space-2);border-radius:var(--radius-xs);font:var(--weight-black) var(--text-xs) / 1 var(--font-sans);font-variant-numeric:tabular-nums;white-space:nowrap;display:inline-flex}.badge-deal{background:var(--deal);color:var(--on-accent)}.badge-soft{background:var(--deal-bg);color:var(--deal)}.badge-neutral{background:var(--surface-alt);color:var(--ink-soft)}.badge-accent{background:var(--accent-tint);color:var(--accent-strong)}.price-tag{align-items:baseline;column-gap:var(--space-2);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.price-tag-now{font-size:var(--text-xl);font-weight:var(--weight-black);letter-spacing:-.02em;color:var(--ink);line-height:1}.price-tag.is-deal .price-tag-now{color:var(--deal)}.price-tag-was{font-size:var(--text-xs);color:var(--ink-faint);text-decoration:line-through}.price-tag-sm .price-tag-now{font-size:var(--text-lg)}.store-logo{--logo-size:1.375rem;width:var(--logo-size);height:var(--logo-size);font:var(--weight-black) calc(var(--logo-size) * .38) / 1 var(--font-sans);letter-spacing:-.02em;color:#fff;background:var(--ink-faint);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.store-logo-sm{--logo-size:1rem}.logo-albert_heijn{background:#0093d0}.logo-jumbo{color:#211a14;background:#fcd200}.logo-plus{background:#e2231a}.logo-dekamarkt{background:#f39200}.logo-hoogvliet{background:#ee7c00}.logo-aldi{background:#1d4e89}.logo-lidl{color:#fff200;background:#0a5eb4}.logo-dirk{background:#e30613}.logo-ekoplaza{background:#4c7c2e}.logo-vomar{background:#c8102e}.logo-boons_markt{background:#d31144}.logo-poiesz{background:#f18700}.logo-nettorama{background:#1e9bd7}.logo-boni{background:#db0200}.logo-coop{background:#f79501}.logo-gewoon_coop{background:#f3920d}.logo-mcd{background:#05408c}.logo-dagwinkel{background:#7a4fa0}.logo-spar{background:#007a33}.chip.is-active .store-logo{box-shadow:0 0 0 2px var(--bg)}.ui-sheet-scrim{z-index:50;background:var(--scrim);animation:ui-fade var(--dur-med) ease-out;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.ui-sheet{overscroll-behavior:contain;background:var(--bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:560px;max-height:92dvh;box-shadow:var(--elev-3);padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom));animation:ui-up .26s var(--ease-out);position:relative;overflow-y:auto}.ui-sheet-grab{z-index:2;border-radius:var(--radius-pill);background:var(--border);width:40px;height:4px;margin:8px auto -12px;position:sticky;top:0}@keyframes ui-up{0%{transform:translateY(40%)}}@keyframes ui-fade{0%{opacity:0}}
