*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:#1a2b1c;-webkit-font-smoothing:antialiased;background:#f0f4f1;margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c2d5c4;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#9ab89d}:root{--green:#2f9e44;--green-dark:#25793a;--green-light:#ebf7ed;--green-mid:#d4edda;--purple:#6741d9;--orange:#e67700;--red:#c92a2a;--surface:#fff;--border:#dde8df;--bg:#f0f4f1;--text:#1a2b1c;--text-2:#4a5e4e;--text-3:#7a9880;--shadow-sm:0 1px 2px #0000000a, 0 2px 6px #0000000d, 0 0 0 1px #00000005;--shadow-md:0 2px 4px #0000000d, 0 6px 20px #00000014, 0 0 0 1px #00000008;--shadow-lg:0 4px 8px #0000000f, 0 16px 40px #0000001a, 0 0 0 1px #0000000a;--radius:12px;--radius-sm:8px;--radius-xs:5px;--transition:.15s ease}.auth-page{background:linear-gradient(160deg,#e8f5e9 0%,#f0f4f1 60%);justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.auth-form{background:var(--surface);width:100%;max-width:360px;box-shadow:var(--shadow-lg);border-radius:18px;flex-direction:column;gap:14px;padding:36px 28px;display:flex}.auth-logo{text-align:center;filter:drop-shadow(0 2px 6px #2f9e442e);margin-bottom:2px;font-size:3rem;line-height:1}.auth-form h1{text-align:center;color:var(--green);letter-spacing:-.02em;margin:0 0 4px;font-size:1.55rem;font-weight:800}.auth-subtitle{text-align:center;color:var(--text-3);margin:0 0 6px;font-size:.85rem}.auth-form label{color:var(--text-2);flex-direction:column;gap:6px;font-size:.88rem;font-weight:500;display:flex}.btn-demo{border-radius:var(--radius-sm);background:var(--green);color:#fff;cursor:pointer;letter-spacing:.01em;transition:background var(--transition), transform var(--transition), box-shadow var(--transition);border:none;padding:13px;font-size:1rem;font-weight:700;box-shadow:0 2px 8px #2f9e444d}.btn-demo:hover:not(:disabled){background:var(--green-dark);box-shadow:0 4px 14px #2f9e4466}.btn-demo:active:not(:disabled){transform:scale(.98)}.btn-demo:disabled{opacity:.6;cursor:default}.auth-divider{color:var(--text-3);align-items:center;gap:10px;font-size:.8rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-form input{border:1.5px solid var(--border);border-radius:var(--radius-sm);color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:11px 14px;font-size:1rem}.auth-form input:focus{border-color:var(--green);box-shadow:0 0 0 3px #2f9e441f}.auth-form button{border-radius:var(--radius-sm);background:var(--green);color:#fff;cursor:pointer;transition:background var(--transition), transform var(--transition), box-shadow var(--transition);border:none;margin-top:4px;padding:13px;font-size:1rem;font-weight:600}.auth-form button:hover:not(:disabled){background:var(--green-dark);box-shadow:0 2px 8px #2f9e444d}.auth-form button:active:not(:disabled){transform:scale(.98)}.auth-form button:disabled{opacity:.6;cursor:default}.auth-switch{text-align:center;color:var(--text-3);margin:0;font-size:.85rem}.auth-switch a{color:var(--green);font-weight:600;text-decoration:none}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--surface);border-bottom:1px solid var(--border);border-top:3px solid var(--green);z-index:10;justify-content:space-between;align-items:center;padding:13px 16px;display:flex;position:sticky;top:0;box-shadow:0 1px 6px #0000000f}.app-title{color:var(--green);letter-spacing:-.025em;margin:0;font-size:1.3rem;font-weight:900}.app-content{flex:1;width:100%;max-width:640px;margin:0 auto;padding:16px 16px 88px}.bottom-nav{background:var(--surface);border-top:1px solid var(--border);z-index:10;padding-bottom:env(safe-area-inset-bottom,0);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 16px #00000012}.nav-tab{color:var(--text-3);cursor:pointer;transition:color var(--transition);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:10px 0 8px;font-size:.72rem;display:flex;position:relative}.nav-tab--active{color:var(--green);font-weight:600}.nav-tab--active:before{content:"";background:var(--green);border-radius:0 0 3px 3px;height:2.5px;position:absolute;top:0;left:20%;right:20%}.nav-tab--disabled{opacity:.35;cursor:default}.nav-icon{transition:transform var(--transition);font-size:1.35rem}.nav-tab--active .nav-icon{transform:scale(1.18)}.nav-badge{color:#fff;border:2px solid var(--surface);background:#e03131;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:.6rem;font-weight:700;display:flex;position:absolute;top:5px;right:calc(50% - 20px)}.btn-primary{border-radius:var(--radius-sm);background:var(--green);color:#fff;cursor:pointer;white-space:nowrap;transition:background var(--transition), transform var(--transition), box-shadow var(--transition);border:none;padding:10px 16px;font-size:.9rem;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--green-dark);box-shadow:0 2px 10px #2f9e444d}.btn-primary:active:not(:disabled){transform:scale(.97)}.btn-primary:disabled{opacity:.55;cursor:default}.btn-ghost{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-2);cursor:pointer;white-space:nowrap;transition:border-color var(--transition), background var(--transition), box-shadow var(--transition);padding:10px 16px;font-size:.9rem;font-weight:500}.btn-ghost:hover{box-shadow:var(--shadow-sm);background:#f8fbf8;border-color:#aabcad}.btn-danger{border-radius:var(--radius-sm);color:var(--red);cursor:pointer;white-space:nowrap;transition:background var(--transition), box-shadow var(--transition);background:#fff0f0;border:none;padding:10px 16px;font-size:.9rem;font-weight:500}.btn-danger:hover{background:#ffe0e0;box-shadow:0 2px 8px #c92a2a1f}.item-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);flex-direction:column;gap:10px;padding:18px;display:flex}.item-form h3{color:var(--text);margin:0;font-size:1rem;font-weight:700}.item-form input,.item-form select,.item-card--editing input,.item-card--editing select{border:1.5px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);background:var(--surface);transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:10px 12px;font-size:.95rem}.item-form input:focus,.item-form select:focus,.item-card--editing input:focus,.item-card--editing select:focus{border-color:var(--green);box-shadow:0 0 0 3px #2f9e441a}.item-card--editing form{flex-direction:column;gap:10px;width:100%;display:flex}.qty-row{gap:8px;display:flex}.qty-row input{flex:1}.qty-row select{flex-shrink:0;width:90px}.expiry-label{color:var(--text-2);flex-direction:column;gap:4px;font-size:.84rem;font-weight:500;display:flex}.form-actions{gap:8px;display:flex}.pantry-page{flex-direction:column;gap:18px;display:flex}.pantry-header{justify-content:space-between;align-items:center;display:flex}.pantry-header h2{letter-spacing:-.02em;color:var(--text);margin:0;font-size:1.35rem;font-weight:800}.pantry-header-actions{gap:8px;display:flex}.category-section{flex-direction:column;gap:8px;display:flex}.category-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);border-bottom:1px solid var(--border);align-items:center;gap:6px;margin:0;padding:4px 0;font-size:.72rem;font-weight:700;display:flex}.category-title:before{content:"";background:var(--green);opacity:.5;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.item-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.item-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);border-left:3px solid var(--green-mid);transition:box-shadow var(--transition), transform var(--transition), border-left-color var(--transition);justify-content:space-between;align-items:center;gap:12px;padding:14px 14px 14px 16px;display:flex}.item-card:hover{box-shadow:var(--shadow-md);border-left-color:var(--green);transform:translateY(-1px)}.item-card--editing{border-left-color:var(--green);flex-direction:column;align-items:stretch;transform:none}.item-card--excluded{opacity:.65;border-left-color:var(--border)}.item-card--excluded:hover{border-left-color:var(--border)}.item-excluded-tag{color:var(--text-3);border:1px solid var(--border);border-radius:var(--radius-xs);letter-spacing:.03em;background:#f0f4f1;align-items:center;width:fit-content;margin-top:2px;padding:2px 7px;font-size:.67rem;font-weight:600;display:inline-flex}.btn-exclude-toggle{background:var(--green-light);border:1px solid var(--green);color:var(--green);cursor:pointer;white-space:nowrap;transition:background var(--transition), box-shadow var(--transition);border-radius:6px;flex-shrink:0;padding:5px 10px;font-size:.78rem;font-weight:600}.btn-exclude-toggle:hover{background:var(--green-mid);box-shadow:0 1px 4px #2f9e4433}.item-info{flex-direction:column;gap:4px;min-width:0;display:flex}.item-name{letter-spacing:-.01em;font-size:1rem;font-weight:650;line-height:1.2}.item-qty{background:var(--bg);border:1px solid var(--border);width:fit-content;color:var(--text-2);font-variant-numeric:tabular-nums;border-radius:20px;align-items:center;padding:1px 9px;font-size:.76rem;font-weight:600;display:inline-flex}.item-expiry{border-radius:var(--radius-xs);width:fit-content;color:var(--orange);background:#fff9ec;border:1px solid #ffe0a3;align-items:center;gap:4px;padding:2px 8px;font-size:.73rem;font-weight:600;display:inline-flex}.item-expiry:before{content:"⏱";font-size:.7em}.item-actions{flex-shrink:0;gap:6px;display:flex}.scanner-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000e0;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.scanner-modal{background:var(--surface);border-radius:20px;flex-direction:column;width:min(420px,100%);display:flex;overflow:hidden;box-shadow:0 24px 60px #0000004d}.scanner-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 18px;font-size:1rem;font-weight:700;display:flex}.scanner-close-btn{cursor:pointer;color:var(--text-2);transition:background var(--transition);background:#f0f4f1;border:none;border-radius:6px;padding:6px 10px;font-size:1rem;line-height:1}.scanner-close-btn:hover{background:#dde8df}.scanner-viewport{background:#000;width:100%;height:300px;position:relative}#barcode-reader-viewport video{object-fit:cover;width:100%!important;height:100%!important}#barcode-reader-viewport canvas{position:absolute;top:0;left:0}.scanner-footer{text-align:center;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:8px;min-height:58px;padding:16px 18px;display:flex}.scanner-status{color:var(--text-2);margin:0;font-size:.88rem}.receipt-modal{flex-direction:column;max-height:92vh;display:flex}.receipt-body{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.receipt-camera-viewport{background:#111;border-radius:10px;justify-content:center;align-items:center;width:100%;height:280px;display:flex;overflow:hidden}.receipt-camera-video{object-fit:cover;width:100%;height:100%}.receipt-camera-error{color:var(--orange);text-align:center;margin:0;padding:16px;font-size:.85rem}.receipt-placeholder{border:2px dashed var(--border);cursor:pointer;text-align:center;width:100%;color:var(--text-2);transition:border-color var(--transition), background var(--transition);background:0 0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:36px 16px;display:flex}.receipt-placeholder:hover{border-color:var(--green);background:var(--green-light)}.receipt-icon{font-size:2.6rem}.receipt-placeholder p{margin:0;font-size:.9rem}.receipt-preview{object-fit:contain;border:1px solid var(--border);background:var(--bg);border-radius:10px;width:100%;max-height:260px}.receipt-hint{color:var(--text-2);margin:0;font-size:.84rem}.receipt-item-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.receipt-item{background:var(--surface);border:1px solid var(--border);transition:opacity var(--transition);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;display:flex}.receipt-item--unchecked{opacity:.4}.receipt-checkbox{width:18px;height:18px;accent-color:var(--green);cursor:pointer;flex-shrink:0}.receipt-item-fields{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.receipt-item-name{border:1.5px solid var(--border);width:100%;transition:border-color var(--transition);border-radius:6px;outline:none;padding:5px 8px;font-size:.9rem}.receipt-item-name:focus{border-color:var(--green)}.receipt-qty-row{align-items:center;gap:6px;display:flex}.receipt-qty-input{border:1.5px solid var(--border);border-radius:6px;outline:none;width:60px;padding:4px 6px;font-size:.85rem}.receipt-cat-tag{color:#fff;background:var(--text-3);white-space:nowrap;border-radius:4px;margin-left:auto;padding:2px 7px;font-size:.7rem;font-weight:600}.recipes-page{flex-direction:column;gap:18px;display:flex}.section-heading{letter-spacing:-.02em;color:var(--text);margin:0;font-size:1.35rem;font-weight:800}.ingredient-picker{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:14px;padding:18px;display:flex}.picker-hint{color:var(--text-2);margin:0;font-size:.84rem;font-weight:500}.ingredient-groups{flex-direction:column;gap:14px;display:flex}.ingredient-group{flex-direction:column;gap:8px;display:flex}.ingredient-group-label{text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);font-size:.7rem;font-weight:700}.ingredient-chips{flex-wrap:wrap;gap:7px;display:flex}.ingredient-chip{border:1.5px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text);transition:background var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition), transform var(--transition);border-radius:20px;padding:6px 14px;font-size:.84rem}.ingredient-chip:hover{border-color:var(--green);color:var(--green);background:var(--green-light)}.ingredient-chip--active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600;transform:translateY(-1px);box-shadow:0 3px 10px #2f9e444d}.recipe-action-row{gap:10px;display:flex}.find-recipes-btn{flex:1;padding:13px;font-size:1rem}.btn-ai-ideas{border-radius:var(--radius-sm);background:var(--purple);color:#fff;cursor:pointer;white-space:nowrap;transition:background var(--transition), box-shadow var(--transition), transform var(--transition);border:none;flex-shrink:0;padding:13px 18px;font-size:.95rem;font-weight:600}.btn-ai-ideas:hover:not(:disabled){background:#5535b8;transform:translateY(-1px);box-shadow:0 3px 12px #6741d959}.btn-ai-ideas:active:not(:disabled){transform:scale(.97)}.btn-ai-ideas:disabled{opacity:.55;cursor:default}.recipe-section{flex-direction:column;gap:10px;display:flex}.recipe-section-title{color:var(--text);align-items:center;gap:8px;margin:0;font-size:.95rem;font-weight:700;display:flex}.recipe-count{background:var(--green);color:#fff;border-radius:10px;padding:2px 8px;font-size:.72rem;font-weight:700}.recipe-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition), transform var(--transition);overflow:hidden}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.recipe-card--suggestion{border-color:#ffc078}.recipe-card--ai{border-color:#b197fc}.recipe-card-header{cursor:pointer;text-align:left;width:100%;transition:background var(--transition);background:0 0;border:none;align-items:center;gap:12px;padding:12px;display:flex}.recipe-card-header:hover{background:#f6faf6}.recipe-thumb{object-fit:cover;background:var(--bg);border-radius:10px;flex-shrink:0;width:68px;height:68px;box-shadow:0 2px 6px #0000001a}.recipe-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.recipe-name{color:var(--text);font-size:.97rem;font-weight:650;line-height:1.3}.recipe-meta{color:var(--text-3);font-size:.78rem}.recipe-add-hint{color:var(--orange);font-size:.82rem;font-weight:600}.recipe-chevron{color:var(--text-3);flex-shrink:0;font-size:.7rem}.recipe-details{border-top:1px solid var(--border);padding:0 14px 16px}.recipe-detail-heading{color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;margin:14px 0 8px;font-size:.7rem;font-weight:700}.recipe-ingredients{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.recipe-ingredient{color:var(--text-2);align-items:baseline;gap:7px;font-size:.87rem;display:flex}.recipe-ingredient--owned{color:var(--green);font-weight:600}.recipe-ingredient--missing{color:var(--orange);font-weight:600}.recipe-ing-marker{flex-shrink:0;width:14px;font-size:.8rem}.recipe-measure{color:var(--text-3)}.recipe-instructions{color:var(--text);white-space:pre-wrap;margin:0;font-size:.85rem;line-height:1.65}.recipe-card-footer{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.ai-recipe-icon{background:#f3f0ff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;font-size:1.5rem;display:flex}.ai-recipe-steps{flex-direction:column;gap:7px;margin:0;padding-left:18px;display:flex}.ai-recipe-steps li{color:var(--text);font-size:.85rem;line-height:1.6}.btn-add-to-list{background:var(--green-light);color:var(--green);border:1.5px solid var(--green);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition), color var(--transition), box-shadow var(--transition), transform var(--transition);align-items:center;padding:9px 15px;font-size:.88rem;font-weight:600;display:inline-flex}.btn-add-to-list:hover{background:var(--green);color:#fff;box-shadow:0 2px 8px #2f9e4440}.btn-add-to-list:active{transform:scale(.97)}.btn-add-to-list--done{background:var(--green);color:#fff}.btn-youtube{color:#fff;border-radius:var(--radius-sm);transition:background var(--transition), box-shadow var(--transition);background:red;align-items:center;gap:6px;padding:9px 15px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-youtube:hover{background:#c00;box-shadow:0 2px 8px #ff000040}.shopping-page{flex-direction:column;gap:18px;display:flex}.shopping-page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.shopping-header-actions{gap:8px;display:flex}.shopping-section{flex-direction:column;gap:8px;display:flex}.shopping-recipe-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);border-bottom:1px solid var(--border);align-items:center;gap:6px;margin:0;padding-bottom:6px;font-size:.72rem;font-weight:700;display:flex}.shopping-recipe-title:before{content:"";background:var(--green);opacity:.5;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.shopping-item-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.shopping-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:opacity var(--transition), box-shadow var(--transition), transform var(--transition);align-items:center;gap:12px;padding:13px 14px;display:flex}.shopping-item:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.shopping-item--checked{opacity:.4;transform:none}.shopping-item--checked:hover{transform:none}.shopping-checkbox{width:20px;height:20px;accent-color:var(--green);cursor:pointer;flex-shrink:0}.shopping-item-name{transition:text-decoration var(--transition), color var(--transition);flex:1;font-size:.95rem;font-weight:500}.shopping-item--checked .shopping-item-name{color:var(--text-3);text-decoration:line-through}.shopping-item-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.btn-instacart{background:var(--green-light);border:1px solid var(--border);transition:background var(--transition), box-shadow var(--transition);border-radius:6px;padding:5px 8px;font-size:1.15rem;line-height:1;text-decoration:none}.btn-instacart:hover{background:var(--green-mid);box-shadow:0 1px 4px #2f9e4426}.shopping-remove-btn{color:#bbb;cursor:pointer;transition:color var(--transition), background var(--transition);background:0 0;border:none;border-radius:4px;padding:5px 7px;font-size:.85rem;line-height:1}.shopping-remove-btn:hover{color:var(--red);background:#fff0f0}.form-error{color:var(--red);border-radius:var(--radius-xs);background:#fff5f5;border:1px solid #ffc9c9;margin:0;padding:8px 12px;font-size:.84rem;font-weight:500}.status-msg{color:var(--text-3);text-align:center;background:var(--surface);border:1.5px dashed var(--border);border-radius:var(--radius);margin:4px 0;padding:40px 24px;font-size:.9rem;line-height:1.7}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tab-page{animation:.2s both tabFadeIn}@keyframes cardSlideIn{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.item-card{animation:.18s both cardSlideIn}.item-list li:first-child .item-card{animation-delay:30ms}.item-list li:nth-child(2) .item-card{animation-delay:60ms}.item-list li:nth-child(3) .item-card{animation-delay:90ms}.item-list li:nth-child(4) .item-card{animation-delay:.12s}.item-list li:nth-child(5) .item-card{animation-delay:.15s}.item-list li:nth-child(n+6) .item-card{animation-delay:.18s}.app-header{background:linear-gradient(#fff 0%,#f7fbf7 100%)}.app-title{align-items:center;gap:8px;display:flex}.app-title:before{content:"🧺";filter:drop-shadow(0 1px 2px #2f9e4433);font-size:1.2rem}@keyframes shimmer{0%{background-position:-300px 0}to{background-position:300px 0}}.skeleton{background:linear-gradient(90deg, var(--border) 25%, #edf2ee 50%, var(--border) 75%);border-radius:var(--radius-xs);background-size:600px 100%;animation:1.4s linear infinite shimmer}.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);align-items:center;gap:12px;padding:14px 16px;display:flex}.skeleton-line{border-radius:6px;height:14px}.skeleton-line--short{width:40%}.skeleton-line--mid{width:65%}.skeleton-line--long{width:85%}@keyframes navPop{0%{transform:scale(1)}40%{transform:scale(1.25)}to{transform:scale(1.18)}}.nav-tab--active .nav-icon{animation:.25s both navPop}@media (prefers-reduced-motion:reduce){.tab-page,.item-card,.nav-tab--active .nav-icon,.flying-chip,.pot-btn{animation:none}}.flying-chip{pointer-events:none;z-index:9999;background:var(--green);color:#fff;white-space:nowrap;border-radius:20px;padding:4px 12px;font-size:.78rem;font-weight:600;animation:.75s linear forwards flyToPot;position:fixed;box-shadow:0 3px 10px #2f9e4473}@keyframes flyToPot{0%{opacity:1;animation-timing-function:linear;transform:translate(-50%,-50%)scale(1)rotate(0)}25%{transform:translate(calc(-50% + var(--dx) * .25), calc(-50% + var(--dy) * .25 - 82px)) scale(.83) rotate(-7deg);opacity:1;animation-timing-function:linear}50%{transform:translate(calc(-50% + var(--dx) * .5), calc(-50% + var(--dy) * .5 - 110px)) scale(.62) rotate(-9deg);opacity:1;animation-timing-function:linear}75%{transform:translate(calc(-50% + var(--dx) * .75), calc(-50% + var(--dy) * .75 - 82px)) scale(.36) rotate(3deg);opacity:.85;animation-timing-function:linear}to{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(.08) rotate(14deg);opacity:0}}.pot-zone{border-top:1.5px dashed var(--border);flex-direction:column;gap:12px;margin-top:16px;padding-top:14px;display:flex}.pot-selected-chips{flex-wrap:wrap;gap:6px;min-height:28px;display:flex}.pot-chip{background:var(--green-light);border:1px solid var(--green);color:var(--green);border-radius:20px;align-items:center;gap:4px;padding:3px 8px 3px 10px;font-size:.78rem;font-weight:600;animation:.15s both tabFadeIn;display:inline-flex}.pot-chip-remove{color:var(--green);cursor:pointer;opacity:.6;transition:opacity var(--transition);background:0 0;border:none;padding:0 1px;font-size:1rem;line-height:1}.pot-chip-remove:hover{opacity:1}.pot-actions{align-items:center;gap:16px;display:flex}@keyframes potJiggle{0%{transform:rotate(0)scale(1)}15%{transform:rotate(-12deg)scale(1.15)}30%{transform:rotate(10deg)scale(1.1)}45%{transform:rotate(-8deg)scale(1.05)}60%{transform:rotate(6deg)scale(1.02)}75%{transform:rotate(-3deg)scale(1.01)}to{transform:rotate(0)scale(1)}}@keyframes potBounce{0%{transform:scale(1)}25%{transform:scale(.88)}55%{transform:scale(1.18)}75%{transform:scale(.96)}to{transform:scale(1)}}.pot-btn{background:var(--green-light);border:2px solid var(--green);cursor:pointer;width:68px;height:68px;transition:background var(--transition), box-shadow var(--transition);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:2rem;display:flex;position:relative;box-shadow:0 3px 12px #2f9e4433}.pot-btn:hover:not(:disabled){background:var(--green-mid);box-shadow:0 6px 20px #2f9e4459}.pot-btn:disabled{opacity:.45;cursor:default;border-color:var(--border);background:var(--bg);box-shadow:none}.pot-btn--jiggle .pot-emoji{animation:.5s both potJiggle}.pot-btn--bounce{animation:.55s both potBounce}.pot-emoji{line-height:1;display:inline-block}.pot-count{background:var(--green);color:#fff;border:2px solid var(--surface);border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 4px;font-size:.65rem;font-weight:800;animation:.15s both tabFadeIn;display:flex;position:absolute;top:-6px;right:-6px}.pot-labels{flex-direction:column;gap:4px;display:flex}.pot-label-main{color:var(--text-2);font-size:.84rem;font-weight:500;line-height:1.4}.item-card--expiring{background:linear-gradient(90deg,#fff3cd73,#0000);border-color:#f59f00!important}.item-card--expired{background:linear-gradient(90deg,#ffe1e173,#0000);border-color:#fa5252!important}.expiry-tag{white-space:nowrap;border-radius:10px;padding:2px 7px;font-size:.68rem;font-weight:700}.expiry-tag--warning{color:#7a5800;background:#fff3cd}.expiry-tag--danger{color:#c92a2a;background:#fde8e8}.expiry-banner{border:1.5px solid;border-radius:12px;align-items:center;gap:10px;margin-bottom:14px;padding:10px 14px;font-size:.86rem;font-weight:500;display:flex}.expiry-banner--warning{color:#7a5800;background:#fff3cd99;border-color:#f59f00}.expiry-banner--danger{color:#c92a2a;background:#ffe1e199;border-color:#fa5252}.expiry-banner-icon{flex-shrink:0;font-size:1.1rem}.expiry-banner-text{flex:1;line-height:1.4}.pantry-search{margin-bottom:12px;position:relative}.pantry-search-icon{pointer-events:none;color:var(--text-2);font-size:.95rem;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.pantry-search input{border:1.5px solid var(--border);background:var(--surface);width:100%;color:var(--text);transition:border-color var(--transition);box-sizing:border-box;border-radius:12px;padding:9px 14px 9px 34px;font-size:.9rem}.pantry-search input:focus{border-color:var(--green);outline:none}.empty-state{text-align:center;color:var(--text-2);padding:36px 20px}.empty-state-icon{margin-bottom:10px;font-size:2.8rem;display:block}.empty-state-title{color:var(--text);margin:0 0 5px;font-size:1rem;font-weight:600}.empty-state-desc{margin:0;font-size:.85rem;line-height:1.5}.achievement-toast{z-index:10000;color:#fff;background:linear-gradient(135deg,#2f9e44,#1e7e34);border-radius:16px;align-items:center;gap:10px;max-width:280px;padding:12px 16px;animation:.4s cubic-bezier(.34,1.56,.64,1) both toastIn;display:flex;position:fixed;bottom:88px;right:16px;box-shadow:0 8px 28px #2f9e4473}.achievement-toast-icon{flex-shrink:0;font-size:1.7rem}.achievement-toast-body{flex:1}.achievement-toast-label{text-transform:uppercase;letter-spacing:.07em;opacity:.8;margin-bottom:2px;font-size:.65rem}.achievement-toast-title{margin-bottom:1px;font-size:.9rem;font-weight:700}.achievement-toast-desc{opacity:.85;font-size:.75rem}@keyframes toastIn{0%{opacity:0;transform:translate(120%)}to{opacity:1;transform:translate(0)}}.btn-save-recipe{cursor:pointer;transition:transform var(--transition);background:0 0;border:none;border-radius:8px;flex-shrink:0;padding:4px 6px;font-size:1.1rem;line-height:1}.btn-save-recipe:hover{transform:scale(1.2)}.btn-cooked{color:#fff;cursor:pointer;transition:opacity var(--transition), transform var(--transition);white-space:nowrap;background:linear-gradient(135deg,#f59f00,#e67700);border:none;border-radius:8px;padding:6px 13px;font-size:.8rem;font-weight:600}.btn-cooked:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn-cooked:disabled{opacity:.6;cursor:default}.btn-cooked--done{background:var(--green)}.ingredient-skeleton{flex-wrap:wrap;gap:6px;padding:8px 0;display:flex}@media (prefers-color-scheme:dark){.item-card--expiring{background:linear-gradient(90deg,#fff3cd14,#0000)}.item-card--expired{background:linear-gradient(90deg,#ff64641a,#0000)}.expiry-tag--warning{color:#ffc107;background:#ffc10733}.expiry-tag--danger{color:#ff6b6b;background:#fa525233}.expiry-banner--warning{color:#ffd43b;background:#fff3cd1a}.expiry-banner--danger{color:#ff6b6b;background:#fa52521a}}:root[data-theme=dark] .item-card--expiring{background:linear-gradient(90deg,#fff3cd14,#0000)}:root[data-theme=dark] .item-card--expired{background:linear-gradient(90deg,#ff64641a,#0000)}:root[data-theme=dark] .expiry-tag--warning{color:#ffc107;background:#ffc10733}:root[data-theme=dark] .expiry-tag--danger{color:#ff6b6b;background:#fa525233}:root[data-theme=dark] .expiry-banner--warning{color:#ffd43b;background:#fff3cd1a}:root[data-theme=dark] .expiry-banner--danger{color:#ff6b6b;background:#fa52521a}
