:root{--bg: oklch(.975 .005 220);--surface: oklch(.995 .003 220);--fg: oklch(.24 .02 220);--fg-2: oklch(.5 .015 220);--muted: oklch(.66 .012 220);--border: oklch(.92 .008 220);--accent: oklch(.24 .02 220);--accent-soft: oklch(.955 .012 220);--brand: oklch(.62 .13 195);--brand-strong: oklch(.53 .13 195);--brand-soft: oklch(.95 .04 195);--brand-grad: linear-gradient(135deg, oklch(.66 .13 190), oklch(.6 .13 215));--success: oklch(.62 .15 150);--warn: oklch(.72 .14 75);--danger: oklch(.6 .21 25);--info: oklch(.6 .17 265);--font: "Nunito", system-ui, sans-serif;--font-logo: "Caveat", "Nunito", cursive;--radius: 14px;--radius-sm: 9px}.header-left h1.logo,h1.logo{font-family:var(--font-logo);font-weight:700;font-size:36px;line-height:1;color:var(--brand);letter-spacing:0}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--fg);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit}.app{max-width:420px;margin:0 auto;min-height:100vh;min-height:100dvh;background:var(--bg);position:relative;overflow-x:hidden;padding-bottom:calc(164px + env(safe-area-inset-bottom))}.header{padding:20px 20px 16px;display:flex;align-items:center;justify-content:space-between;background:var(--bg);position:sticky;top:0;z-index:50}.header-left h1{font-size:24px;font-weight:700;letter-spacing:-.03em}.header-left p{font-size:13px;color:var(--muted)}.sub-mode{display:inline-flex;align-items:center;gap:4px}.sub-mode svg{width:13px;height:13px}.header-actions{display:flex;gap:8px}.icon-btn{width:40px;height:40px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;position:relative;color:var(--fg)}.icon-btn:hover{background:var(--fg);color:var(--surface);border-color:var(--fg)}.icon-btn svg{width:20px;height:20px}.notif-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:9px;display:flex;align-items:center;justify-content:center}.stats-strip{display:flex;gap:12px;padding:0 20px;margin-bottom:20px}.stat-box{flex:1;background:var(--surface);border-radius:var(--radius);padding:14px;border:1px solid var(--border);cursor:pointer;transition:all .15s ease}.stat-box:hover{border-color:var(--fg)}.stat-box .value{font-size:22px;font-weight:700;letter-spacing:-.02em}.stat-box .label{font-size:12px;color:var(--muted);margin-top:2px}.stat-box.alert{border-color:var(--danger);background:#fef7f7}.stat-box.alert .value{color:var(--danger)}.priority-section{padding:0 20px;margin-bottom:20px}.priority-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.priority-header svg{width:18px;height:18px;color:var(--danger)}.priority-header h2{font-size:14px;font-weight:600;color:var(--danger);text-transform:uppercase;letter-spacing:.03em}.priority-scroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px}.priority-scroll::-webkit-scrollbar{display:none}.priority-card{flex-shrink:0;width:140px;background:var(--surface);border:1px solid var(--danger);border-radius:var(--radius);padding:12px;cursor:pointer;transition:all .15s ease}.priority-card:hover{background:#fef7f7}.priority-card .name{font-weight:600;font-size:14px;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.priority-card .expiry{font-size:12px;color:var(--danger);font-weight:600}.priority-card .qty{font-size:11px;color:var(--muted);margin-top:4px}.search-row{display:flex;gap:10px;padding:0 20px;margin-bottom:16px}.search-input{flex:1;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:0 14px;height:46px}.search-input svg{width:18px;height:18px;color:var(--muted);flex-shrink:0}.search-input input{flex:1;border:none;background:none;font-size:16px;font-family:inherit;color:var(--fg);outline:none}.search-input input::placeholder{color:var(--muted)}.filter-tabs{display:flex;gap:6px;padding:0 20px;margin-bottom:20px;overflow-x:auto}.filter-tabs::-webkit-scrollbar{display:none}.filter-tab{padding:8px 14px;border-radius:20px;font-size:13px;font-weight:500;background:transparent;border:1px solid var(--border);color:var(--fg-2);cursor:pointer;white-space:nowrap;transition:all .15s ease}.filter-tab:hover{border-color:var(--fg);color:var(--fg)}.filter-tab.active{background:var(--brand);border-color:var(--brand);color:#fff}.product-list{padding:0 20px}.list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.list-title{font-size:14px;font-weight:600;color:var(--fg-2);text-transform:uppercase;letter-spacing:.03em}.list-count{font-size:13px;color:var(--muted)}.product-item{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:8px;cursor:pointer;transition:all .15s ease}.product-item:hover{border-color:var(--fg)}.product-icon{width:44px;height:44px;background:var(--accent-soft);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.product-icon svg{width:22px;height:22px;color:inherit}.product-info{flex:1;min-width:0}.product-name{font-weight:600;font-size:15px;margin-bottom:2px}.product-meta{font-size:13px;color:var(--muted)}.product-right{text-align:right;flex-shrink:0}.product-qty{font-weight:600;font-size:15px;margin-bottom:4px}.status-tag{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.status-tag.ok{background:#e8f5ec;color:var(--success)}.status-tag.soon{background:#fef6e6;color:var(--warn)}.status-tag.urgent,.status-tag.expired{background:#fef2f2;color:var(--danger)}.status-tag.none{background:var(--accent-soft);color:var(--fg-2)}.swipe-wrapper{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px}.swipe-wrapper .product-item{margin-bottom:0;border:none;border-radius:0;position:relative;z-index:2;transition:transform .28s cubic-bezier(.22,1,.36,1)}.swipe-wrapper.swiped-left .product-item{transform:translate(-216px)}.swipe-wrapper.swiped-right .product-item{transform:translate(120px)}.swipe-actions{position:absolute;top:0;bottom:0;display:flex;z-index:1}.swipe-actions.right{right:0;width:216px}.swipe-actions.left{left:0;width:120px}.swipe-qty-picker{display:flex;flex:1;background:var(--danger)}.qty-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:14px;border:none;background:transparent;cursor:pointer;transition:background .15s ease;gap:2px}.qty-btn:hover{background:#00000014}.qty-btn:disabled{opacity:.35;cursor:default}.qty-btn span{font-size:11px;font-weight:400;opacity:.85}.qty-btn.delete-all{background:#0000002e}.qty-btn.waste{flex:1;width:100%;background:var(--warn)}.swipe-hint{display:flex;align-items:center;gap:8px;padding:4px 0 12px;font-size:12px;color:var(--muted)}.swipe-hint svg{width:16px;height:16px}.swipe-wheel{display:flex;align-items:stretch;width:100%;background:var(--danger)}.sw-window{position:relative;flex:1;min-width:0;overflow:hidden}.sw-readout{position:absolute;top:6px;left:0;right:0;text-align:center;color:#fff;font-weight:800;font-size:15px;line-height:1;pointer-events:none;z-index:3;letter-spacing:.01em}.sw-center{position:absolute;top:24px;bottom:8px;left:50%;width:2px;transform:translate(-50%);background:#fff;border-radius:1px;pointer-events:none;z-index:2}.sw-track{position:relative;z-index:1;height:100%;display:flex;align-items:flex-end;overflow-x:scroll;scroll-snap-type:x mandatory;padding:0 calc(50% - var(--iw) / 2);scrollbar-width:none;-webkit-overflow-scrolling:touch}.sw-track::-webkit-scrollbar{display:none}.sw-tick{flex:0 0 var(--iw);width:var(--iw);height:100%;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:8px;scroll-snap-align:center}.sw-mark{width:2px;height:12px;border-radius:1px;background:#ffffff73}.sw-tick.major .sw-mark{height:18px;background:#ffffffb3}.sw-tick.active .sw-mark{background:#fff;height:22px}.sw-lab{margin-top:3px;font-size:10px;font-weight:600;color:#ffffffd9;white-space:nowrap}.sw-go{flex:0 0 56px;display:flex;align-items:center;justify-content:center;border:none;background:#0000002e;color:#fff;cursor:pointer;transition:background .15s ease}.sw-go:active{background:#0000004d}.sw-go svg{width:24px;height:24px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:420px;background:var(--surface);border-top:1px solid var(--border);padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:flex;justify-content:space-around;z-index:100}.nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 12px;background:none;border:none;color:var(--muted);font-size:11px;font-weight:500;cursor:pointer;transition:all .15s ease}.nav-item svg{width:22px;height:22px}.nav-item.active{color:var(--brand)}.nav-item:hover:not(.active){color:var(--fg-2)}.page-header{display:flex;align-items:center;gap:12px;padding:20px;position:sticky;top:0;background:var(--bg);z-index:50}.back-btn{width:40px;height:40px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;color:var(--fg)}.back-btn:hover{background:var(--fg);color:var(--surface);border-color:var(--fg)}.back-btn svg{width:20px;height:20px}.page-header h1{font-size:20px;font-weight:700;letter-spacing:-.02em}.shopping-header{display:flex;align-items:center;justify-content:space-between;padding:0 20px;margin-bottom:16px}.shopping-header h2{font-size:16px;font-weight:600}.shopping-header .count{font-size:13px;color:var(--muted);cursor:pointer}.shopping-category{padding:0 20px;margin-bottom:20px}.shopping-category-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:10px}.shopping-item{display:flex;align-items:center;gap:12px;padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;cursor:pointer;transition:all .15s ease}.shopping-item:hover{border-color:var(--fg)}.shopping-item.checked{opacity:.5}.shopping-item.checked .shopping-name{text-decoration:line-through}.checkbox{width:24px;height:24px;border:2px solid var(--border);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s ease}.checkbox svg{width:14px;height:14px;opacity:0;color:#fff}.shopping-item.checked .checkbox{background:var(--success);border-color:var(--success)}.shopping-item.checked .checkbox svg{opacity:1}.shopping-name{flex:1;font-weight:500}.shopping-qty{font-size:13px;color:var(--muted)}.shopping-source{font-size:11px;padding:3px 8px;background:var(--accent-soft);border-radius:4px;color:var(--fg-2)}.shopping-delete{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px;display:flex;align-items:center}.shopping-delete:hover{color:var(--danger)}.shopping-delete svg{width:16px;height:16px}.generate-list-btn{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 20px 20px;padding:16px;background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);font-size:14px;font-weight:500;color:var(--fg-2);cursor:pointer;transition:all .15s ease;width:calc(100% - 40px)}.generate-list-btn:hover{border-color:var(--fg);color:var(--fg)}.generate-list-btn svg{width:20px;height:20px}.quick-add{padding:4px 20px 16px}.quick-add-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:10px}.quick-add-chips{display:flex;flex-wrap:wrap;gap:8px}.quick-chip{display:inline-flex;align-items:center;gap:5px;padding:7px 12px 7px 9px;background:var(--accent-soft);color:var(--brand);border:1px solid transparent;border-radius:999px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s ease,transform .1s ease}.quick-chip:hover{border-color:var(--brand)}.quick-chip:active{transform:scale(.96)}.quick-chip svg{width:14px;height:14px}.ticket-intro{padding:40px 28px;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}.ticket-illus{width:80px;height:80px;border-radius:20px;background:var(--accent-soft);display:flex;align-items:center;justify-content:center}.ticket-illus svg{width:38px;height:38px;color:var(--brand)}.ticket-intro p{color:var(--muted);font-size:14px;line-height:1.5;max-width:300px}.ticket-intro .btn-primary{width:auto;padding:0 22px}.ticket-list{padding:12px 20px 0;display:flex;flex-direction:column;gap:10px}.ticket-item{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;transition:opacity .15s ease}.ticket-item.off{opacity:.45}.ticket-item .check-box{margin-top:6px}.ticket-fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.ticket-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-sub .form-select{width:auto;flex:1;min-width:0;height:38px}.ticket-price{font-weight:700;font-size:14px;color:var(--brand)}.qty-stepper.small{height:38px}.qty-stepper.small button{width:34px}.qty-stepper.small span{min-width:28px;text-align:center;font-weight:600}.ai-block{padding:4px 0 0}.ai-suggest-card.busy{opacity:.7;pointer-events:none}.ai-text{flex:1;min-width:0}.ai-selects{display:flex;flex-direction:column;gap:6px;flex-shrink:0;align-self:center}.ai-select{border:1px solid var(--border);background:var(--surface);color:var(--brand);font-family:inherit;font-size:12.5px;font-weight:600;padding:7px 9px;border-radius:10px;cursor:pointer;width:110px}.add-cat-hint{flex-shrink:0;font-size:11px;font-weight:600;color:var(--brand);background:var(--accent-soft);padding:3px 8px;border-radius:999px;white-space:nowrap}.qty-row{display:flex;align-items:center;gap:12px;padding:0 20px;margin-bottom:14px}.qty-row-label{font-size:13px;font-weight:600;color:var(--muted);flex-shrink:0}.qty-row-value{font-size:15px;font-weight:700;color:var(--brand);flex-shrink:0;min-width:34px;text-align:right}.qwheel{position:relative;flex:1;min-width:0;height:44px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.qwheel-center{position:absolute;top:6px;bottom:6px;left:50%;width:56px;transform:translate(-50%);background:var(--accent-soft);border-radius:9px;pointer-events:none}.qwheel-track{position:relative;z-index:1;height:100%;display:flex;align-items:center;overflow-x:scroll;scroll-snap-type:x mandatory;padding:0 calc(50% - 28px);scrollbar-width:none;-webkit-overflow-scrolling:touch}.qwheel-track::-webkit-scrollbar{display:none}.qwheel-item{flex:0 0 56px;width:56px;border:none;background:transparent;font-family:inherit;font-size:14px;font-weight:600;color:var(--muted);opacity:.5;scroll-snap-align:center;cursor:pointer;transition:opacity .15s ease,transform .15s ease,color .15s ease;white-space:nowrap}.qwheel-item.active{opacity:1;color:var(--brand);transform:scale(1.2)}.suggest-list{padding:0 20px;margin-bottom:14px;display:flex;flex-direction:column;gap:6px}.suggest-row{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:14px;color:var(--fg);cursor:pointer;text-align:left;transition:border-color .15s ease}.suggest-row:hover{border-color:var(--brand)}.suggest-row svg{width:16px;height:16px;color:var(--brand);flex-shrink:0}.suggest-name{flex:1;font-weight:600}.suggest-cat{font-size:12px;color:var(--muted)}.browse{padding:0 20px;margin-bottom:16px}.browse-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:11px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:13px;font-weight:600;color:var(--fg-2);cursor:pointer}.browse-toggle svg{width:16px;height:16px}.browse-toggle svg:last-child{margin-left:auto;transition:transform .2s ease}.browse-toggle svg.rot{transform:rotate(90deg)}.browse .quick-add-chips{margin-top:12px}.meal-current{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--accent-soft);border-radius:var(--radius);padding:14px 16px}.meal-current-label{font-size:12px;color:var(--muted);margin-bottom:2px}.meal-current-title{font-size:16px;font-weight:700;color:var(--brand)}.check-row{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:14px;color:var(--fg);cursor:pointer;-webkit-user-select:none;user-select:none}.check-box{width:22px;height:22px;border-radius:6px;border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s ease}.check-box.on{background:var(--brand);border-color:var(--brand)}.check-box svg{width:14px;height:14px;color:#fff}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:#0b181c73;display:flex;align-items:flex-end;justify-content:center;animation:sheet-fade .2s ease}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}.drawer{width:100%;max-width:420px;max-height:86vh;display:flex;flex-direction:column;background:var(--surface);border-radius:22px 22px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -10px 30px #0b181c2e;animation:sheet-up .28s cubic-bezier(.22,1,.36,1)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.drawer-handle{width:40px;height:4px;border-radius:2px;background:var(--border);margin:0 auto 14px;flex-shrink:0}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-shrink:0}.drawer-title{font-weight:700;font-size:17px}.drawer-sub{font-size:13px;color:var(--muted);margin-top:2px}.drawer-body{overflow-y:auto;-webkit-overflow-scrolling:touch}.seg{display:flex;gap:4px;background:var(--accent-soft);border-radius:12px;padding:4px;margin-bottom:16px;flex-shrink:0}.seg-btn{flex:1;border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:600;color:var(--muted);padding:9px 0;border-radius:9px;cursor:pointer;transition:all .15s ease}.seg-btn.active{background:var(--surface);color:var(--brand);box-shadow:0 1px 4px #00000014}.ing-row{display:flex;gap:8px;margin-bottom:8px}.ing-row .ing-qty{flex:0 0 80px}.ing-del{flex:0 0 40px;border:1px solid var(--border);background:var(--surface);border-radius:10px;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.ing-del svg{width:16px;height:16px}.ing-add{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:var(--brand);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:4px 0}.ing-add svg{width:16px;height:16px}.form-section{padding:0 20px;margin-bottom:20px}.form-label{display:block;font-size:13px;font-weight:600;color:var(--fg-2);margin-bottom:8px;text-transform:uppercase;letter-spacing:.02em}.form-input,.form-select{width:100%;min-width:0;max-width:100%;height:50px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:0 16px;font-size:16px;font-family:inherit;color:var(--fg);transition:border-color .15s ease}input[type=date].form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;text-align:left}input[type=date].form-input::-webkit-date-and-time-value{text-align:left;margin:0}input[type=date].form-input::-webkit-calendar-picker-indicator{margin-left:auto}.form-input:focus,.form-select:focus{outline:none;border-color:var(--fg)}.form-row{display:flex;gap:12px}.form-row>*{flex:1 1 0;min-width:0}.qty-stepper{display:flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);height:50px;overflow:hidden}.qty-stepper button{width:50px;height:100%;border:none;background:var(--surface);font-size:22px;color:var(--fg);cursor:pointer;transition:background .15s ease}.qty-stepper button:hover{background:var(--accent-soft)}.qty-stepper input{flex:1;height:100%;border:none;text-align:center;font-size:17px;font-weight:600;font-family:inherit;background:none;color:var(--fg);outline:none;min-width:0}.btn-primary{width:100%;height:52px;background:var(--brand);color:#fff;border:none;border-radius:var(--radius);font-size:16px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-primary:hover{opacity:.9}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{width:100%;height:52px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius);font-size:16px;font-weight:600;cursor:pointer;transition:all .15s ease}.btn-secondary:hover{border-color:var(--fg)}.btn-danger{color:var(--danger)}.btn-danger:hover{border-color:var(--danger)}.btn-row{display:flex;gap:12px;padding:0 20px}.btn-row>*{flex:1}.empty-state{text-align:center;padding:48px 24px;color:var(--muted)}.empty-state svg{width:40px;height:40px;margin-bottom:12px;opacity:.5}.empty-state p{font-size:14px}.toast{position:fixed;bottom:100px;left:50%;transform:translate(-50%) translateY(100px);background:var(--fg);color:var(--surface);padding:14px 20px;border-radius:var(--radius);font-size:14px;font-weight:500;z-index:300;opacity:0;transition:all .3s ease;pointer-events:none;white-space:nowrap}.toast.show{transform:translate(-50%) translateY(0);opacity:1}.scan-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;z-index:200;display:flex;flex-direction:column;align-items:center}.scan-topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:calc(16px + env(safe-area-inset-top)) 16px 16px;z-index:2;background:linear-gradient(to bottom,rgba(0,0,0,.6),transparent)}.scan-topbar .back-btn{background:#ffffff26;border-color:transparent;color:#fff}.scan-topbar .back-btn:hover{background:#ffffff4d}.scan-title{color:#fff;font-weight:600;font-size:16px}.scan-video{width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:78%;max-width:320px;aspect-ratio:1.4 / 1;border:3px solid rgba(255,255,255,.9);border-radius:16px;box-shadow:0 0 0 9999px #00000073}.scan-hint{position:absolute;bottom:calc(48px + env(safe-area-inset-bottom));left:0;right:0;text-align:center;color:#fff;font-size:14px;font-weight:500;text-shadow:0 1px 4px rgba(0,0,0,.6)}.scan-error{margin:auto;padding:24px;text-align:center;color:#fff;display:flex;flex-direction:column;align-items:center;gap:16px}.scan-error svg{width:48px;height:48px;color:var(--warn)}.scan-error p{font-size:15px;max-width:300px;line-height:1.5}.notif-tabs{display:flex;gap:4px;margin:0 20px 20px;background:var(--accent-soft);border-radius:var(--radius);padding:4px}.notif-tab{flex:1;padding:10px;border:none;background:transparent;border-radius:var(--radius-sm);font-size:13px;font-weight:500;font-family:inherit;color:var(--fg-2);cursor:pointer;transition:all .15s ease}.notif-tab.active{background:var(--surface);color:var(--fg);box-shadow:0 1px 3px #00000014}.notif-list{padding:0 20px}.notif-item{display:flex;gap:14px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px}.notif-item.unread{border-left:3px solid var(--danger)}.notif-icon{width:40px;height:40px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.notif-icon.danger{background:#fef2f2;color:var(--danger)}.notif-icon.warn{background:#fef6e6;color:var(--warn)}.notif-icon.success{background:#e8f5ec;color:var(--success)}.notif-icon.info{background:#f0f4ff;color:var(--info)}.notif-icon svg{width:20px;height:20px}.notif-content{flex:1}.notif-title{font-weight:600;font-size:14px;margin-bottom:2px}.notif-desc{font-size:13px;color:var(--muted);margin-bottom:4px}.notif-time{font-size:11px;color:var(--muted)}.week-nav{display:flex;align-items:center;justify-content:space-between;padding:0 20px;margin-bottom:20px}.week-nav button{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--fg)}.week-nav button:hover{background:var(--fg);color:var(--surface);border-color:var(--fg)}.week-nav button svg{width:18px;height:18px}.week-nav span{font-weight:600;font-size:15px}.day-card{margin:0 20px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.day-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--accent-soft);border-bottom:1px solid var(--border)}.day-card.today .day-header{background:#eef2ff}.day-name{font-weight:600;font-size:14px}.day-date{font-size:12px;color:var(--muted)}.day-meals{padding:12px}.meal-slot{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.meal-slot:last-child{border-bottom:none}.meal-type{width:60px;font-size:12px;font-weight:500;color:var(--muted)}.meal-content{flex:1;font-size:14px}.meal-content.empty{color:var(--muted);font-style:italic}.meal-add{width:28px;height:28px;border-radius:6px;background:var(--accent-soft);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;color:var(--fg);flex-shrink:0}.meal-add:hover{background:var(--fg);color:var(--surface)}.meal-add svg{width:16px;height:16px}.stats-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 20px;margin-bottom:24px}.stats-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stats-card .value{font-size:28px;font-weight:700;letter-spacing:-.02em}.stats-card .value.success{color:var(--success)}.stats-card .value.danger{color:var(--danger)}.stats-card .value.warn{color:var(--warn)}.stats-card .label{font-size:12px;color:var(--muted);margin-top:4px}.stats-card .trend{display:flex;align-items:center;gap:4px;font-size:12px;margin-top:8px}.stats-card .trend.up{color:var(--success)}.stats-card .trend.down{color:var(--danger)}.stats-card .trend svg{width:14px;height:14px}.chart-section{padding:0 20px;margin-bottom:24px}.chart-title{font-size:14px;font-weight:600;margin-bottom:12px}.chart-placeholder{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);height:160px;display:flex;align-items:flex-end;padding:20px;gap:8px}.chart-bar{flex:1;background:var(--accent-soft);border-radius:4px 4px 0 0;position:relative;min-height:4px}.chart-bar:after{content:attr(data-label);position:absolute;bottom:-20px;left:50%;transform:translate(-50%);font-size:10px;color:var(--muted)}.history-section{padding:0 20px}.history-title{font-size:14px;font-weight:600;margin-bottom:12px}.history-item{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--border)}.history-date{width:44px;text-align:center}.history-date .day{font-size:18px;font-weight:700}.history-date .month{font-size:11px;color:var(--muted)}.history-content{flex:1}.history-action{font-size:14px;margin-bottom:2px}.history-time{font-size:12px;color:var(--muted)}.budget-overview{margin:0 20px 24px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.budget-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.budget-spent{font-size:32px;font-weight:700;letter-spacing:-.02em}.budget-limit{font-size:14px;color:var(--muted)}.budget-period{font-size:12px;color:var(--muted);padding:4px 10px;background:var(--accent-soft);border-radius:20px}.budget-bar{height:8px;background:var(--accent-soft);border-radius:4px;overflow:hidden;margin-bottom:8px}.budget-bar-fill{height:100%;background:var(--success);border-radius:4px;transition:width .3s ease}.budget-bar-fill.warning{background:var(--warn)}.budget-bar-fill.danger{background:var(--danger)}.budget-remaining{font-size:13px;color:var(--muted)}.budget-categories{padding:0 20px}.budget-cat-title{font-size:14px;font-weight:600;margin-bottom:12px}.budget-cat-item{display:flex;align-items:center;gap:14px;padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px}.budget-cat-icon{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--accent-soft);display:flex;align-items:center;justify-content:center;flex-shrink:0}.budget-cat-icon svg{width:20px;height:20px;color:var(--fg-2)}.budget-cat-info{flex:1}.budget-cat-name{font-weight:500;font-size:14px;margin-bottom:4px}.budget-cat-bar{height:4px;background:var(--accent-soft);border-radius:2px;overflow:hidden}.budget-cat-bar-fill{height:100%;background:var(--fg);border-radius:2px}.budget-cat-amount{font-weight:600;font-size:14px}.waste-score{margin:0 20px 24px;padding:24px;background:linear-gradient(135deg,#e8f5ec,#d1fae5);border-radius:var(--radius);text-align:center}.waste-score .value{font-size:56px;font-weight:700;color:var(--success);line-height:1}.waste-score .label{font-size:14px;color:var(--success);font-weight:500;margin-top:4px}.waste-score .desc{font-size:13px;color:var(--fg-2);margin-top:12px}.waste-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 20px;margin-bottom:24px}.waste-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;text-align:center}.waste-stat .value{font-size:24px;font-weight:700}.waste-stat .value.success{color:var(--success)}.waste-stat .value.danger{color:var(--danger)}.waste-stat .label{font-size:12px;color:var(--muted);margin-top:4px}.tips-section{padding:0 20px}.tips-title{font-size:14px;font-weight:600;margin-bottom:12px}.tip-card{display:flex;gap:14px;padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px}.tip-icon{width:40px;height:40px;border-radius:var(--radius-sm);background:#fef6e6;display:flex;align-items:center;justify-content:center;color:var(--warn);flex-shrink:0}.tip-icon svg{width:20px;height:20px}.tip-content h4{font-size:14px;font-weight:600;margin-bottom:4px}.tip-content p{font-size:13px;color:var(--muted)}.recipe-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px;cursor:pointer;transition:all .15s ease}.recipe-card:hover{border-color:var(--fg)}.recipe-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.recipe-title{font-weight:600;font-size:16px;margin-bottom:4px}.recipe-meta{font-size:13px;color:var(--muted)}.fav-btn{width:32px;height:32px;border-radius:50%;background:none;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--border);transition:all .2s ease;flex-shrink:0}.fav-btn:hover,.fav-btn.active{color:var(--danger)}.fav-btn svg{width:20px;height:20px}.recipe-tags{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}.recipe-tag{padding:4px 10px;background:var(--accent-soft);border-radius:4px;font-size:12px;color:var(--fg-2)}.recipe-tag.available{background:#e8f5ec;color:var(--success)}.recipe-adaptations{display:flex;gap:6px;flex-wrap:wrap}.adaptation{padding:4px 10px;background:#fef6e6;border-radius:4px;font-size:12px;color:var(--warn)}.ai-suggest-card{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,#f0f0f0,#e8e8e8);border-radius:var(--radius);padding:20px;margin-top:8px;cursor:pointer;transition:all .2s ease}.ai-suggest-card:hover{transform:translateY(-2px)}.ai-icon{width:48px;height:48px;background:var(--fg);color:var(--surface);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ai-icon svg{width:24px;height:24px}.ai-title{font-weight:600;font-size:15px;margin-bottom:4px}.ai-desc{font-size:13px;color:var(--muted)}.ingredient-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.ingredient-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.ingredient-item:last-child{border-bottom:none}.ingredient-status{width:10px;height:10px;border-radius:50%;flex-shrink:0}.ingredient-status.in-stock{background:var(--success)}.ingredient-status.missing{background:var(--danger)}.ingredient-qty{margin-left:auto;font-size:13px;color:var(--muted)}.adaptation-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:10px}.adaptation-member{display:flex;align-items:center;gap:10px;margin-bottom:8px}.adaptation-note{font-size:13px;color:var(--fg-2);padding-left:42px}.member-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;color:#fff;flex-shrink:0}.member-avatar.large{width:56px;height:56px;font-size:22px}.family-member{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:10px;cursor:pointer;transition:all .15s ease}.family-member:hover{border-color:var(--fg)}.member-info{flex:1}.member-name{font-weight:600;font-size:16px;margin-bottom:2px}.member-diet{font-size:13px;color:var(--muted)}.member-badges{display:flex;gap:6px;flex-wrap:wrap}.diet-badge{padding:4px 10px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase}.diet-badge.veg{background:#e8f5ec;color:var(--success)}.diet-badge.allergy{background:#fef2f2;color:var(--danger)}.chevron{width:20px;height:20px;color:var(--muted);flex-shrink:0}.add-member-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:18px;background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);font-size:14px;font-weight:500;color:var(--muted);cursor:pointer;transition:all .15s ease}.add-member-btn:hover{border-color:var(--fg);color:var(--fg)}.add-member-btn svg{width:20px;height:20px}.diet-options,.restriction-options{display:flex;flex-wrap:wrap;gap:8px}.diet-option{padding:10px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:inherit;font-weight:500;color:var(--fg-2);cursor:pointer;transition:all .15s ease}.diet-option:hover{border-color:var(--fg);color:var(--fg)}.diet-option.active{background:var(--brand);border-color:var(--brand);color:#fff}.restriction-option{padding:8px 14px;background:var(--surface);border:1px solid var(--border);border-radius:20px;font-size:13px;font-family:inherit;color:var(--fg-2);cursor:pointer;transition:all .15s ease}.restriction-option:hover{border-color:var(--fg);color:var(--fg)}.restriction-option.active{background:var(--danger);border-color:var(--danger);color:#fff}.form-group{margin-bottom:20px}.menu-item{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:10px;cursor:pointer;transition:all .15s ease}.menu-item:hover{border-color:var(--fg)}.menu-icon{width:44px;height:44px;background:var(--accent-soft);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.menu-icon svg{width:22px;height:22px;color:var(--fg-2)}.menu-info{flex:1}.menu-title{font-weight:600;font-size:15px;margin-bottom:2px}.menu-desc{font-size:13px;color:var(--muted)}.menu-badge{background:var(--danger);color:#fff;font-size:11px;font-weight:600;padding:3px 8px;border-radius:10px;margin-right:8px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:10px}.setting-text{flex:1}.setting-title{font-weight:600;font-size:15px;margin-bottom:2px}.setting-desc{font-size:13px;color:var(--muted)}.switch{position:relative;width:46px;height:28px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch .slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border);border-radius:999px;transition:.2s;cursor:pointer}.switch .slider:before{content:"";position:absolute;width:22px;height:22px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}.switch input:checked+.slider{background:var(--success)}.switch input:checked+.slider:before{transform:translate(18px)}.add-bar{position:fixed;bottom:calc(90px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:100%;max-width:420px;padding:0 29px;z-index:150;pointer-events:none}.add-btn{pointer-events:auto;width:100%;height:56px;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--brand-grad);color:#fff;border:none;border-radius:var(--radius);font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 6px 16px #009b9b4d;box-shadow:0 6px 16px oklch(.62 .13 195 / .3);transition:transform .15s ease}.add-btn:active{transform:scale(.98)}.add-btn svg{width:22px;height:22px}.fab{display:none}.fab-menu{position:fixed;bottom:calc(160px + env(safe-area-inset-bottom));right:calc(50% - 190px);display:flex;flex-direction:column;gap:10px;z-index:199;opacity:0;pointer-events:none;transform:translateY(20px);transition:all .25s ease}.fab-menu.open{opacity:1;pointer-events:auto;transform:translateY(0)}@media(max-width:460px){.fab,.fab-menu{right:20px}}.fab-option{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;white-space:nowrap;box-shadow:0 4px 12px #00000014;transition:all .15s ease}.fab-option:hover{border-color:var(--fg);transform:translate(-4px)}.fab-option.soon{opacity:.6}.fab-option-icon{width:40px;height:40px;background:var(--accent-soft);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.fab-option-icon svg{width:20px;height:20px;color:var(--fg)}.fab-option-text{font-weight:500;font-size:14px}.fab-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:198;opacity:0;pointer-events:none;transition:opacity .25s ease}.fab-backdrop.open{opacity:1;pointer-events:auto}.opt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.opt-grid.two{grid-template-columns:repeat(2,1fr)}.opt-btn{padding:12px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-weight:500;font-family:inherit;color:var(--fg-2);cursor:pointer;transition:all .15s ease;text-align:center}.opt-btn:hover{border-color:var(--fg);color:var(--fg)}.opt-btn.active{background:var(--brand);border-color:var(--brand);color:#fff}.opt-btn .sub{display:block;font-size:11px;font-weight:400;opacity:.75;margin-top:3px}.opt-btn.date{text-align:left;padding:12px 14px}.health-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.health-head{display:flex;justify-content:space-between;align-items:center}.health-score{font-size:30px;font-weight:800;letter-spacing:-.02em}.health-score span{font-size:14px;color:var(--muted);font-weight:600}.health-verdict{font-size:13px;color:var(--fg-2);margin-top:2px}.health-bar{display:flex;height:12px;border-radius:6px;overflow:hidden;gap:2px;margin:14px 0 10px;background:var(--accent-soft)}.health-bar .hb{min-width:8px}.health-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--fg-2)}.health-legend span{display:inline-flex;align-items:center;gap:5px}.health-legend .dot{width:10px;height:10px;border-radius:3px}.health-note{font-size:12px;color:var(--muted);margin-top:10px}.hb.ns-a,.dot.ns-a{background:#038141}.hb.ns-b,.dot.ns-b{background:#85bb2f}.hb.ns-c,.dot.ns-c{background:#fecb02}.hb.ns-d,.dot.ns-d{background:#ee8100}.hb.ns-e,.dot.ns-e{background:#e63e11}.enrich-card{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px}.enrich-photo{width:56px;height:56px;border-radius:var(--radius-sm);object-fit:cover;background:var(--accent-soft);flex-shrink:0}.enrich-info{flex:1;min-width:0}.enrich-badges{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.nutri-badge{font-weight:800;color:#fff;border-radius:6px;padding:3px 9px;font-size:14px;letter-spacing:.02em}.nutri-badge.ns-a{background:#038141}.nutri-badge.ns-b{background:#85bb2f}.nutri-badge.ns-c{background:#fecb02;color:#3a2e00}.nutri-badge.ns-d{background:#ee8100}.nutri-badge.ns-e{background:#e63e11}.meta-badge{background:var(--accent-soft);color:var(--fg-2);border-radius:6px;padding:3px 9px;font-size:12px;font-weight:600}.allergen-warn{display:flex;gap:6px;align-items:center;margin-top:8px;color:var(--danger);font-size:12px;font-weight:600}.allergen-warn svg{width:16px;height:16px;flex-shrink:0}.estimate-hint{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;margin-top:8px;padding:10px 14px;background:#f0f4ff;border:1px solid #dde5ff;border-radius:var(--radius-sm);font-size:13px;color:var(--fg-2);font-family:inherit;cursor:pointer;text-align:left;transition:all .15s ease}.estimate-hint:hover{border-color:var(--info)}.estimate-hint .estimate-apply{flex-shrink:0;font-weight:600;color:var(--info)}.screen-fade{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
