:root{--bg: #eef1f4;--surface: #ffffff;--surface-2: #eef1f5;--ink: #161a1f;--ink-2: #444b54;--muted: #7b828b;--line: #e4e8ed;--radius: 18px;--tabbar-h: 66px;--accent: #0050aa;--accent-press: #003f87;--accent-soft: rgba(0, 80, 170, .1);font-family:Quicksand,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.app[data-store=lidl]{--accent: #0050aa;--accent-press: #003f87;--accent-soft: rgba(0, 80, 170, .1)}.app[data-store=kaufland]{--accent: #e10915;--accent-press: #b30710;--accent-soft: rgba(225, 9, 21, .1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);overscroll-behavior-y:none}button,input,select{font-family:inherit;font-weight:600;color:inherit}button{cursor:pointer;border:none;background:none}.app{display:flex;flex-direction:column;min-height:100%;max-width:560px;margin:0 auto;background:var(--bg)}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(env(safe-area-inset-top) + 14px) 16px 12px;background:#ffffffdb;-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px;font-size:23px;font-weight:700;letter-spacing:-.01em}.brand-pin{width:15px;height:15px;border-radius:50% 50% 50% 2px;transform:rotate(45deg);background:var(--accent);box-shadow:inset 0 0 0 3px #fff;transition:background .25s ease}.switch{display:flex;padding:4px;gap:3px;background:var(--surface-2);border-radius:999px;border:1px solid var(--line)}.switch-btn{padding:9px 16px;border-radius:999px;font-size:14px;font-weight:700;color:var(--muted);transition:color .18s,background .18s,box-shadow .18s}.switch-btn.on{color:#fff}.switch-btn.on{box-shadow:0 3px 10px #141e322e}.screen{flex:1;padding:6px 14px calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 26px)}.screen-head{padding:16px 4px 6px}.screen-head h1{margin:0;font-size:30px;font-weight:700;letter-spacing:-.02em}.muted{color:var(--muted);font-weight:600}.sub{margin:5px 0 0;color:var(--muted);font-size:14px}.progress{height:8px;margin-top:13px;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;overflow:hidden}.progress-fill{height:100%;min-width:0;background:var(--accent);border-radius:999px;transition:width .4s cubic-bezier(.2,.7,.2,1),background .25s}.celebrate{text-align:center;margin-top:10px;padding:30px 22px 26px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 6px 22px var(--accent-soft);animation:rise .4s ease both}.celebrate-emoji{font-size:46px;line-height:1;animation:pop .5s ease both}.celebrate h2{margin:12px 0 4px;font-size:23px;letter-spacing:-.01em}.celebrate p{margin:0 0 16px;color:var(--muted);font-size:15px}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@keyframes pop{0%{transform:scale(.6)}55%{transform:scale(1.16)}to{transform:scale(1)}}.route{margin-top:8px}.zone{margin-bottom:20px}.zone-head{display:flex;align-items:center;gap:9px;padding:4px 2px 10px}.zone-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent);transition:background .25s ease}.zone-name{font-size:13px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2)}.zone-items{display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:4px 6px 4px 4px;box-shadow:0 1px 2px #141e320a;transition:background .12s,border-color .12s}.row:active{background:var(--surface-2)}.check,.add-row{flex:1;min-width:0;display:flex;align-items:center;gap:14px;min-height:54px;padding:8px 4px 8px 10px;text-align:left;font-size:17px;color:var(--ink)}.add-row:disabled{opacity:.55}.name{flex:1;min-width:0;line-height:1.25}.box{flex:none;width:28px;height:28px;border-radius:9px;border:2px solid #cfd5dc;display:grid;place-items:center;color:#fff;transition:background .15s,border-color .15s}.box svg{width:19px;height:19px}.list-row.checked .box{background:var(--accent);border-color:var(--accent);animation:pop .26s ease}.list-row.checked .name{text-decoration:line-through;text-decoration-color:var(--muted);color:var(--muted)}.qty{flex:none;display:flex;align-items:center;gap:2px;background:var(--surface-2);border-radius:999px;padding:3px}.qty-btn{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:var(--accent);background:var(--surface);box-shadow:0 1px 2px #141e3214}.qty-btn svg{width:18px;height:18px}.qty-btn:active{background:var(--accent);color:#fff}.qty-btn:disabled{color:#c2c8cf;background:transparent;box-shadow:none}.qty-num{min-width:26px;text-align:center;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.list-row .check{gap:12px;padding-right:2px}.list-row .icon-btn.ghost{width:42px;height:42px}.list-row.checked .qty{opacity:.6}.addbox{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.addbox svg{width:18px;height:18px}.addbox.added{background:var(--accent);color:#fff}.tag{flex:none;font-size:11.5px;font-weight:700;color:var(--accent);background:var(--accent-soft);padding:4px 9px;border-radius:999px}.icon-btn{flex:none;width:46px;height:46px;border-radius:12px;display:grid;place-items:center;color:var(--muted)}.icon-btn svg{width:22px;height:22px}.icon-btn.ghost:active{background:var(--surface-2);color:var(--ink-2)}.icon-btn.heart.on{color:var(--accent)}.icon-btn.heart.big{width:54px;height:54px;background:var(--surface-2);border:1px solid var(--line)}.icon-btn.heart.big.on{background:var(--accent-soft);border-color:transparent}.icon-btn.heart.big svg{width:26px;height:26px}.done{margin-top:24px;padding-top:18px;border-top:1px dashed var(--line)}.done .zone-items{padding-left:0;opacity:.62}.done-head{display:flex;align-items:center;justify-content:space-between;padding:0 4px 12px}.done-title{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.done-title svg{width:16px;height:16px}.link{font-size:13px;font-weight:700;color:var(--accent)}.search{position:relative;display:flex;align-items:center;margin-top:14px}.search>svg{position:absolute;left:15px;width:20px;height:20px;color:var(--muted);pointer-events:none}.search-input{width:100%;height:52px;padding:0 50px 0 46px;background:var(--surface);border:1px solid var(--line);border-radius:999px;font-size:16px;box-shadow:0 1px 2px #141e320a}.search-input::-webkit-search-cancel-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.search-input::placeholder{color:var(--muted)}.search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.search-clear{position:absolute;right:7px;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}.search-clear svg{width:20px;height:20px}.search-clear:active{background:var(--surface-2);color:var(--ink-2)}.no-results{text-align:center;padding:34px 20px;color:var(--muted)}.no-results p{margin:0 0 14px;font-size:15px}.addform{margin-top:12px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px #141e320a}.input{width:100%;height:54px;padding:0 16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-size:16px;color:var(--ink)}.input::placeholder{color:var(--muted)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.addform-row{display:flex;gap:8px;margin-top:10px}.select{flex:1;min-width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none' stroke='%237b828b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 8l5 5 5-5'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:38px}.btn{height:54px;padding:0 18px;border-radius:12px;font-size:16px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn svg{width:20px;height:20px}.btn.block{width:100%;margin-top:10px}.btn.primary{background:var(--accent);color:#fff;box-shadow:0 6px 16px var(--accent-soft)}.btn.primary:disabled{opacity:.45;box-shadow:none}.btn.primary:active{background:var(--accent-press);transform:translateY(1px)}.empty{text-align:center;padding:64px 26px;display:flex;flex-direction:column;align-items:center;gap:6px}.empty-mark{width:78px;height:78px;border-radius:24px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:10px}.empty h2{margin:0;font-size:23px;letter-spacing:-.01em}.empty p{margin:0 0 16px;color:var(--muted);font-size:15px;line-height:1.5;max-width:320px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;max-width:560px;margin:0 auto;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#ffffffeb;-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-top:1px solid var(--line)}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--muted);font-size:11.5px;font-weight:700;transition:color .18s}.tab svg{width:25px;height:25px}.tab.on{color:var(--accent)}.toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 18px);transform:translate(-50%);z-index:20;max-width:88%;padding:12px 18px;background:#1b1f24;color:#fff;font-size:14px;font-weight:600;border-radius:999px;box-shadow:0 12px 30px #141e3247;animation:toast-in .22s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60;overflow:hidden}.confetti i{position:absolute;top:-18px;width:9px;height:14px;opacity:0;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.2,.6,.3,1);animation-fill-mode:forwards}@keyframes confetti-fall{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:1;transform:translate(var(--dx),104vh) rotate(var(--r))}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
