*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#1a1a1a;background-color:#fafaf5;line-height:1.6;font-size:16px}body{min-height:100dvh}.extract-page{max-width:680px;margin:0 auto;padding:1.5rem 1rem}.page-header{text-align:center;margin-bottom:1.5rem}.app-title{font-size:2rem;font-weight:700;color:#2d5016;letter-spacing:-.02em}.app-tagline{color:#666;font-size:.95rem;margin-top:.25rem}.url-input{display:flex;gap:.5rem;margin-bottom:1.5rem}.url-input input{flex:1;padding:.75rem 1rem;font-size:1rem;border:2px solid #ddd;border-radius:8px;background:#fff;outline:none;transition:border-color .15s}.url-input input:focus{border-color:#2d5016}.url-input button{padding:.75rem 1.5rem;font-size:1rem;font-weight:600;color:#fff;background:#2d5016;border:none;border-radius:8px;cursor:pointer;white-space:nowrap;transition:background .15s}.url-input button:hover:not(:disabled){background:#3d6b1f}.url-input button:disabled{opacity:.5;cursor:not-allowed}.url-input .image-btn{padding:.75rem 1.25rem;font-size:1rem;font-weight:600;color:#2d5016;background:transparent;border:2px solid #2d5016;border-radius:8px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.url-input .image-btn:hover:not(:disabled){background:#2d5016;color:#fff}.url-input .image-btn:disabled{opacity:.5;cursor:not-allowed}.try-it-section{text-align:center;margin:2rem 0;padding:1.5rem;border:2px dashed #d4c9a8;border-radius:12px;background:#f5f0e8}.try-it-hint{margin:0 0 .75rem;color:#6b5e4d;font-size:.95rem}.try-it-btn{padding:.75rem 1.5rem;font-size:1rem;font-weight:600;color:#fff;background:#2d5016;border:none;border-radius:8px;cursor:pointer;transition:background .15s}.try-it-btn:hover{background:#3d6b1f}.ocr-review{margin-bottom:1.5rem;padding:1.25rem;background:#f9f9f6;border:1px solid #ddd;border-radius:8px}.ocr-review h2{font-size:1.1rem;font-weight:700;color:#2d5016;margin-bottom:.5rem}.ocr-hint{font-size:.9rem;color:#666;margin-bottom:.75rem}.loading{text-align:center;padding:2rem;color:#666}.error-display{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:1.25rem;margin-bottom:1.5rem}.error-display h2{font-size:1.1rem;color:#991b1b;margin-bottom:.5rem}.error-display p{color:#7f1d1d;margin-bottom:.5rem}.error-suggestions ul{margin-left:1.25rem;color:#991b1b}.recipe-display{margin-top:.5rem}.recipe-header{margin-bottom:1.5rem}.recipe-image{width:100%;max-height:300px;object-fit:cover;border-radius:12px;margin-bottom:1rem}.recipe-title{font-size:1.75rem;font-weight:700;line-height:1.2;color:#1a1a1a;margin-bottom:.25rem}.recipe-author{color:#666;font-size:.9rem}.recipe-source{color:#2d5016;font-size:.85rem;text-decoration:none}.recipe-source:hover{text-decoration:underline}.recipe-description{color:#444;font-size:.95rem;margin-top:.75rem}.recipe-times{display:flex;gap:1rem;margin-top:.75rem;flex-wrap:wrap}.time-badge{font-size:.85rem;color:#444;background:#f0efe8;padding:.25rem .75rem;border-radius:20px}.time-badge strong{color:#2d5016}.serving-scaler{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding:.75rem 1rem;background:#f0efe8;border-radius:8px}.serving-label{font-weight:600;color:#444}.serving-btn{width:36px;height:36px;border:2px solid #2d5016;border-radius:50%;background:#fff;color:#2d5016;font-size:1.25rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;line-height:1}.serving-btn:hover:not(:disabled){background:#2d5016;color:#fff}.serving-btn:disabled{opacity:.3;cursor:not-allowed}.serving-count{font-size:1.25rem;font-weight:700;min-width:2rem;text-align:center}.ingredient-section{margin-bottom:2rem}.ingredient-section h2{font-size:1.25rem;font-weight:700;margin-bottom:.75rem;color:#2d5016}.ingredient-list{list-style:none}.ingredient-item{padding:.5rem 0;border-bottom:1px solid #eee;font-size:1.05rem;line-height:1.5}.ingredient-item:last-child{border-bottom:none}.ing-qty{font-weight:600}.ing-unit{color:#555}.ing-prep{font-style:italic;color:#666}.ing-notes{color:#888;font-size:.9rem}.ing-optional{color:#999;font-size:.85rem;font-style:italic}.ingredient-item.optional{opacity:.75}.step-section{margin-bottom:2rem}.step-section h2{font-size:1.25rem;font-weight:700;margin-bottom:.75rem;color:#2d5016}.step-list{padding-left:1.5rem}.step-item{padding:.5rem 0;font-size:1.05rem;line-height:1.6}.step-item+.step-item{margin-top:.25rem}.step-section-header{list-style:none;margin-left:-1.5rem;margin-top:1rem;margin-bottom:.25rem;font-size:1.1rem;color:#2d5016}.pwa-status{text-align:center;padding:.5rem 1rem;font-size:.85rem;border-radius:8px;margin-bottom:1rem}.pwa-update{background:#fef3c7;color:#92400e;display:flex;justify-content:center;align-items:center;gap:.75rem}.pwa-update button{padding:.25rem .75rem;font-size:.8rem;font-weight:600;border:1px solid #92400e;border-radius:4px;background:transparent;color:#92400e;cursor:pointer}.pwa-offline-ready{background:#ecfdf5;color:#065f46}.install-banner{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#2d5016;color:#fff;font-size:.9rem;z-index:100}.install-banner-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.install-banner-btn{padding:.4rem 1rem;font-size:.85rem;font-weight:600;color:#2d5016;background:#fff;border:none;border-radius:6px;cursor:pointer}.install-banner-dismiss{padding:.25rem .5rem;font-size:1.2rem;color:#ffffffb3;background:none;border:none;cursor:pointer;line-height:1}.install-banner-dismiss:hover{color:#fff}.app-nav{display:flex;gap:.5rem;margin-bottom:1rem}.nav-btn{padding:.5rem 1rem;font-size:.9rem;font-weight:600;color:#2d5016;background:transparent;border:2px solid #2d5016;border-radius:8px;cursor:pointer;transition:background .15s,color .15s}.nav-btn:hover{background:#2d5016;color:#fff}.recipe-actions{display:flex;gap:.5rem;margin-bottom:1.25rem}.save-btn{padding:.5rem 1.25rem;font-size:.9rem;font-weight:600;color:#fff;background:#2d5016;border:2px solid #2d5016;border-radius:8px;cursor:pointer;transition:background .15s,opacity .15s}.save-btn:hover:not(:disabled){background:#3d6b1f}.save-btn.saved{background:#f0efe8;color:#2d5016;cursor:default}.delete-btn{padding:.5rem 1.25rem;font-size:.9rem;font-weight:600;color:#991b1b;background:transparent;border:2px solid #991b1b;border-radius:8px;cursor:pointer;transition:background .15s,color .15s}.delete-btn:hover{background:#991b1b;color:#fff}.library-empty{text-align:center;padding:3rem 1rem;color:#666}.library-empty p+p{margin-top:.5rem}.recipe-card-list{display:flex;flex-direction:column;gap:.5rem}.recipe-card{display:flex;gap:.75rem;align-items:center;width:100%;padding:.75rem;background:#fff;border:1px solid #eee;border-radius:8px;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color .15s,box-shadow .15s;position:relative}.recipe-card-remove{position:absolute;top:4px;right:4px;width:28px;height:28px;padding:0;font-size:1.1rem;line-height:1;color:#999;background:none;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.recipe-card-remove:hover{color:#c0392b;background:#c0392b1a}.recipe-card:hover{border-color:#2d5016;box-shadow:0 1px 4px #0000000f}.recipe-card-image{width:80px;height:80px;border-radius:8px;object-fit:cover;flex-shrink:0}.recipe-card-placeholder{background:#f0efe8}.recipe-card-info{display:flex;flex-direction:column;gap:.25rem;min-width:0}.recipe-card-title{font-weight:600;font-size:1rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{font-size:.85rem;color:#666}.favorite-btn{width:40px;height:40px;font-size:1.4rem;line-height:1;border:2px solid #ddd;border-radius:8px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}.favorite-btn:hover{border-color:#e6a817}.favorite-btn.favorited{color:#e6a817;border-color:#e6a817}.recipe-notes{margin-bottom:1.25rem}.notes-textarea{width:100%;padding:.75rem;font-size:.95rem;font-family:inherit;border:2px solid #ddd;border-radius:8px;background:#fff;resize:vertical;outline:none;transition:border-color .15s}.notes-textarea:focus{border-color:#2d5016}.notes-display{display:block;width:100%;padding:.75rem;font-size:.95rem;font-family:inherit;text-align:left;color:#666;background:#f9f9f6;border:1px dashed #ddd;border-radius:8px;cursor:pointer;transition:border-color .15s,background .15s;white-space:pre-wrap}.notes-display:hover{border-color:#2d5016;background:#f0efe8}.notes-actions{display:flex;gap:.5rem;margin-top:.5rem}.notes-actions .save-btn,.notes-actions .nav-btn{padding:.35rem 1rem;font-size:.85rem}.tag-manager{margin-bottom:1rem}.meal-type-row{display:flex;gap:.35rem;margin-bottom:.5rem}.meal-type-btn{padding:.3rem .7rem;font-size:.8rem;font-family:inherit;font-weight:500;text-transform:capitalize;border:1px solid #ddd;border-radius:16px;background:#fff;color:#555;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.meal-type-btn:hover{border-color:#2d5016}.meal-type-btn.active{background:#2d5016;color:#fff;border-color:#2d5016}.meal-type-btn.sub-category{border-style:dashed}.meal-type-filter{text-transform:capitalize}.tag-list{display:flex;flex-wrap:wrap;gap:.35rem;padding:.5rem;border:1px solid #eee;border-radius:8px;background:#f9f9f6;min-height:38px;align-items:center}.tag-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .5rem;font-size:.8rem;background:#2d5016;color:#fff;border-radius:12px;white-space:nowrap}.tag-remove{background:none;border:none;color:#ffffffb3;font-size:.9rem;cursor:pointer;padding:0 .15rem;line-height:1}.tag-remove:hover{color:#fff}.tag-input{border:none;outline:none;background:transparent;font-size:.85rem;font-family:inherit;min-width:80px;flex:1}.library-filters{margin-bottom:1rem}.library-search{width:100%;padding:.6rem .75rem;font-size:.95rem;font-family:inherit;border:2px solid #ddd;border-radius:8px;background:#fff;outline:none;transition:border-color .15s;margin-bottom:.5rem}.library-search:focus{border-color:#2d5016}.library-filter-row{display:flex;flex-wrap:wrap;gap:.35rem}.filter-chip{padding:.3rem .7rem;font-size:.8rem;font-family:inherit;border:1px solid #ddd;border-radius:16px;background:#fff;color:#444;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.filter-chip:hover{border-color:#2d5016}.filter-chip.active{background:#2d5016;color:#fff;border-color:#2d5016}.card-favorite-icon{color:#e6a817}.recipe-card-tags{display:flex;gap:.25rem;flex-wrap:wrap;margin-top:.15rem}.card-tag{font-size:.7rem;padding:.1rem .4rem;background:#f0efe8;color:#555;border-radius:8px}.manual-entry-form{display:flex;flex-direction:column;gap:1rem}.form-label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;color:#444}.form-hint{font-weight:400;color:#888;font-size:.8rem}.form-input{padding:.6rem .75rem;font-size:1rem;font-family:inherit;border:2px solid #ddd;border-radius:8px;background:#fff;outline:none;transition:border-color .15s}.form-input:focus{border-color:#2d5016}.form-textarea{padding:.6rem .75rem;font-size:.95rem;font-family:inherit;border:2px solid #ddd;border-radius:8px;background:#fff;outline:none;resize:vertical;transition:border-color .15s}.form-textarea:focus{border-color:#2d5016}.form-actions{display:flex;gap:.5rem;margin-top:.5rem}.backup-nudge{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;margin-bottom:1rem;background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:8px;font-size:.85rem;flex-wrap:wrap}.nudge-actions{display:flex;gap:.5rem}.nudge-actions .save-btn,.nudge-actions .nav-btn{padding:.3rem .75rem;font-size:.8rem}.cook-mode-btn{display:block;width:100%;padding:.875rem 1.5rem;margin-bottom:1.25rem;font-size:1.1rem;font-weight:700;font-family:inherit;color:#fff;background:#2d5016;border:none;border-radius:10px;cursor:pointer;transition:background .15s;min-height:48px}.cook-mode-btn:hover{background:#3d6b1f}.cooking-mode{position:fixed;inset:0;z-index:1000;background:#1a1a1a;color:#f5f5f0;display:flex;flex-direction:column;overflow:hidden}.cooking-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#222;flex-shrink:0}.cooking-exit-btn{padding:.5rem 1rem;font-size:.9rem;font-weight:600;font-family:inherit;color:#f5f5f0;background:transparent;border:1px solid #555;border-radius:8px;cursor:pointer;white-space:nowrap;min-height:48px;min-width:48px;transition:background .15s}.cooking-exit-btn:hover{background:#333}.cooking-progress-wrapper{flex:1;height:4px;background:#333;border-radius:2px;overflow:hidden}.cooking-progress{height:100%;background:#e6a817;border-radius:2px;transition:width .3s ease}.cooking-read-aloud-toggle{padding:.5rem 1rem;font-size:.9rem;font-weight:600;font-family:inherit;color:#f5f5f0;background:transparent;border:1px solid #555;border-radius:8px;cursor:pointer;white-space:nowrap;min-height:48px;min-width:48px;transition:background .15s,border-color .15s,color .15s}.cooking-read-aloud-toggle:hover{background:#333}.cooking-read-aloud-toggle.active{background:#2d5016;border-color:#3d6b1f;color:#fff}.cooking-sidebar-toggle{padding:.5rem 1rem;font-size:.9rem;font-weight:600;font-family:inherit;color:#f5f5f0;background:transparent;border:1px solid #555;border-radius:8px;cursor:pointer;white-space:nowrap;min-height:48px;min-width:48px;transition:background .15s}.cooking-sidebar-toggle:hover{background:#333}.wakelock-fallback{padding:.5rem 1rem;margin:.5rem 1rem 0;font-size:.85rem;color:#e6a817;background:#2a2200;border:1px solid #554400;border-radius:8px;text-align:center}.cooking-main{flex:1;display:flex;flex-direction:column;justify-content:center;padding:1.5rem;overflow-y:auto}.cooking-step{display:flex;flex-direction:column;align-items:center;gap:1.5rem;max-width:640px;margin:0 auto;width:100%}.cooking-step-number{font-size:.9rem;color:#999;text-transform:uppercase;letter-spacing:.05em}.cooking-step-text{font-size:1.75rem;line-height:1.5;text-align:center;color:#f5f5f0}.cooking-step-timers{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:320px}.cooking-timer-btn{display:block;width:100%;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;font-family:inherit;color:#fff;background:#2d5016;border:2px solid #3d6b1f;border-radius:10px;cursor:pointer;text-align:center;min-height:48px;min-width:48px;transition:background .15s}.cooking-timer-btn:hover{background:#3d6b1f}.cooking-timer-btn.running{background:#1a3a0a;border-color:#e6a817;color:#e6a817}.cooking-timer-btn.paused{background:#2a2200;border-color:#e6a817;color:#e6a817;opacity:.8}.cooking-timer-btn.finished{background:#3a2a00;border-color:#e6a817;color:#e6a817;cursor:default;animation:timerPulse 1.5s ease-in-out infinite}.cooking-nav{display:flex;gap:1rem;width:100%;max-width:400px}.cooking-nav-btn{flex:1;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;font-family:inherit;color:#f5f5f0;background:#333;border:1px solid #555;border-radius:10px;cursor:pointer;min-height:48px;min-width:48px;transition:background .15s}.cooking-nav-btn:hover:not(:disabled){background:#444}.cooking-nav-btn:disabled{opacity:.3;cursor:not-allowed}.cooking-sidebar{position:fixed;top:0;right:0;bottom:0;width:320px;max-width:100vw;background:#222;border-left:1px solid #444;z-index:1010;display:flex;flex-direction:column;overflow-y:auto}.cooking-sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #444}.cooking-sidebar-header h2{font-size:1.1rem;font-weight:700;color:#f5f5f0}.cooking-sidebar-close{width:48px;height:48px;font-size:1.5rem;color:#f5f5f0;background:transparent;border:1px solid #555;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.cooking-sidebar-close:hover{background:#333}.cooking-sidebar-list{list-style:none;padding:.5rem 0}.cooking-sidebar-item{padding:0}.cooking-sidebar-label{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;font-size:1rem;line-height:1.4;min-height:48px;transition:background .15s}.cooking-sidebar-label:hover{background:#2a2a2a}.cooking-sidebar-checkbox{width:22px;height:22px;flex-shrink:0;accent-color:#e6a817}.cooking-sidebar-strikethrough{text-decoration:line-through;opacity:.5}.cooking-timer-bar{display:flex;gap:.5rem;padding:.75rem 1rem;background:#222;border-top:1px solid #444;overflow-x:auto;flex-shrink:0}.cooking-timer-chip{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#333;border:1px solid #555;border-radius:8px;white-space:nowrap;flex-shrink:0}.cooking-timer-finished{border-color:#e6a817;background:#3a2a00;animation:timerPulse 1.5s ease-in-out infinite}.timer-chip-label{font-size:.8rem;color:#999}.timer-chip-time{font-size:1rem;font-weight:700;color:#f5f5f0;font-variant-numeric:tabular-nums}.cooking-timer-finished .timer-chip-time{color:#e6a817}.timer-chip-btn{padding:.35rem .65rem;font-size:.8rem;font-weight:600;font-family:inherit;color:#f5f5f0;background:#444;border:1px solid #666;border-radius:6px;cursor:pointer;min-height:36px;min-width:48px;transition:background .15s}.timer-chip-btn:hover{background:#555}@keyframes timerPulse{0%,to{opacity:1}50%{opacity:.6}}.import-dialog-overlay{position:fixed;inset:0;z-index:1000;background:#00000080;display:flex;align-items:center;justify-content:center;padding:1rem}.import-dialog{background:#fff;border-radius:12px;max-width:480px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 4px 24px #00000026}.import-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #eee}.import-dialog-header h2{font-size:1.2rem;font-weight:700;color:#1a1a1a}.import-dialog-header .nav-btn{border:none;font-size:1.5rem;padding:.25rem .5rem;line-height:1}.import-dialog-body{padding:1.25rem}.import-dialog-body p{margin-bottom:.75rem;color:#444;font-size:.95rem}.import-formats{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.import-format{display:flex;gap:.75rem;align-items:baseline;padding:.5rem .75rem;background:#f9f9f6;border-radius:8px;font-size:.9rem}.import-format strong{color:#2d5016;font-family:monospace}.import-format span{color:#666}.import-preview-list{list-style:disc;margin-left:1.5rem;margin-bottom:1rem;font-size:.95rem;color:#444}.import-preview-list li{padding:.15rem 0}.import-actions{display:flex;gap:.5rem}.error-text{color:#991b1b}@media(max-width:480px){.extract-page{padding:1rem .75rem}.url-input{flex-direction:column}.url-input button,.url-input .image-btn{width:100%}.recipe-title{font-size:1.5rem}.recipe-times{gap:.5rem}.cooking-step-text{font-size:1.5rem}.cooking-sidebar{width:100vw}.cooking-main{padding:1rem}.cooking-nav{gap:.5rem}}.grocery-nav-btn{background:#2d5016;color:#fff;border-color:#2d5016}.grocery-nav-btn:hover{background:#3a6b1e;border-color:#3a6b1e}.grocery-empty{text-align:center;padding:2rem 1rem;color:#666}.recipe-selector-hint{margin:0 0 .75rem;color:#555;font-size:.9rem}.recipe-selector-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.recipe-selector-item{border:1px solid #ddd;border-radius:8px;padding:.75rem;background:#fff;transition:border-color .15s}.recipe-selector-item.selected{border-color:#2d5016;background:#f0f7ec}.recipe-selector-label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.recipe-selector-label input[type=checkbox]{accent-color:#2d5016;width:18px;height:18px;flex-shrink:0}.recipe-selector-title{font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-selector-meta{color:#888;font-size:.8rem;flex-shrink:0}.recipe-selector-servings{margin-top:.5rem;padding-left:2rem;font-size:.85rem;color:#555}.recipe-selector-servings label{display:flex;align-items:center;gap:.5rem}.serving-input{width:60px;padding:.25rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem}.generate-btn{width:100%;padding:.75rem;font-size:1rem;font-weight:600}.generate-btn:disabled{opacity:.5;cursor:not-allowed}.grocery-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.grocery-progress{margin-bottom:1rem;font-size:.85rem;color:#555}.grocery-progress-bar{height:4px;background:#eee;border-radius:2px;margin-top:.25rem;overflow:hidden}.grocery-progress-fill{height:100%;background:#2d5016;border-radius:2px;transition:width .3s ease}.grocery-category-group{margin-bottom:1.25rem}.grocery-category-header{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #2d5016;padding-bottom:.25rem;margin-bottom:.5rem}.grocery-category-header h3{margin:0;font-size:.95rem;font-weight:600;color:#2d5016;text-transform:uppercase;letter-spacing:.05em}.grocery-category-count{font-size:.8rem;color:#888}.grocery-category-items{display:flex;flex-direction:column}.grocery-item-row{display:flex;align-items:flex-start;gap:.5rem;padding:.4rem 0;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:opacity .15s}.grocery-item-row:last-child{border-bottom:none}.grocery-item-row.checked{opacity:.5}.grocery-item-row.checked .grocery-item-text{text-decoration:line-through}.grocery-item-row input[type=checkbox]{accent-color:#2d5016;width:18px;height:18px;flex-shrink:0;margin-top:2px}.grocery-item-text{flex:1;font-size:.9rem;line-height:1.4}.grocery-item-text strong{font-weight:600}.grocery-optional{color:#888;font-size:.8rem;font-style:italic}.grocery-notes{color:#888;font-size:.8rem}.grocery-source-badges{display:flex;gap:.25rem;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;max-width:40%}.grocery-source-badge{font-size:.65rem;background:#e6a817;color:#fff;padding:.1rem .35rem;border-radius:3px;white-space:nowrap}.grocery-remove-btn{background:none;border:none;color:#999;font-size:1.2rem;cursor:pointer;padding:0 .25rem;line-height:1;flex-shrink:0}.grocery-remove-btn:hover{color:#991b1b}.manual-item-input{display:flex;gap:.5rem;padding:.5rem 0}.manual-item-field{flex:1;padding:.4rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.manual-item-field:focus{outline:none;border-color:#2d5016}.kroger-section-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.kroger-section-title{margin:0;font-size:1.1rem;font-weight:600;color:#2d5016}.kroger-zip-form{display:flex;gap:.5rem;margin-bottom:1rem}.kroger-zip-input{flex:1;max-width:160px;padding:.5rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem}.kroger-zip-input:focus{outline:none;border-color:#2d5016}.kroger-store-list{display:flex;flex-direction:column;gap:.5rem}.kroger-store-item{display:flex;flex-direction:column;gap:.15rem;padding:.75rem;border:1px solid #ddd;border-radius:8px;background:#fff;cursor:pointer;text-align:left;transition:border-color .15s,background .15s}.kroger-store-item:hover{border-color:#2d5016;background:#f0f7ec}.kroger-store-name{font-weight:600;font-size:.95rem}.kroger-store-address{font-size:.8rem;color:#666}.kroger-store-info{margin:0 0 1rem;font-size:.9rem;color:#555}.kroger-loading{color:#888;font-size:.85rem;margin-bottom:.5rem}.kroger-product-list{display:flex;flex-direction:column;gap:0}.kroger-product-row{display:flex;align-items:flex-start;gap:.5rem;padding:.6rem 0;border-bottom:1px solid #f0f0f0}.kroger-product-row:last-child{border-bottom:none}.kroger-product-row.selected{background:#f8fdf5}.kroger-product-checkbox{flex-shrink:0;padding-top:2px}.kroger-product-checkbox input[type=checkbox]{accent-color:#2d5016;width:18px;height:18px}.kroger-product-info{flex:1;min-width:0}.kroger-grocery-name{font-size:.85rem;font-weight:600;color:#333;margin-bottom:.25rem}.kroger-product-detail{display:flex;gap:.5rem;align-items:center}.kroger-product-img{width:40px;height:40px;object-fit:contain;border-radius:4px;flex-shrink:0}.kroger-product-meta{display:flex;flex-direction:column;gap:0}.kroger-product-name{font-size:.8rem;color:#555;line-height:1.3}.kroger-product-brand,.kroger-product-size{font-size:.7rem;color:#888}.kroger-product-loading,.kroger-product-notfound{font-size:.8rem;color:#999;font-style:italic}.kroger-product-error{font-size:.8rem;color:#991b1b}.kroger-product-cycle{display:flex;align-items:center;gap:.35rem;margin-top:.3rem}.kroger-cycle-btn{background:none;border:1px solid #ccc;border-radius:4px;width:24px;height:24px;font-size:1rem;line-height:1;cursor:pointer;color:#555;display:flex;align-items:center;justify-content:center;padding:0}.kroger-cycle-btn:hover{background:#f0f0f0;border-color:#999}.kroger-cycle-count{font-size:.7rem;color:#888;min-width:30px;text-align:center}.kroger-product-price{flex-shrink:0;text-align:right;min-width:60px}.kroger-quantity{display:flex;align-items:center;justify-content:flex-end;gap:.25rem;margin-top:.3rem}.kroger-qty-btn{background:none;border:1px solid #ccc;border-radius:4px;width:22px;height:22px;font-size:.85rem;line-height:1;cursor:pointer;color:#555;display:flex;align-items:center;justify-content:center;padding:0}.kroger-qty-btn:hover:not(:disabled){background:#f0f0f0;border-color:#999}.kroger-qty-btn:disabled{opacity:.3;cursor:default}.kroger-qty-value{font-size:.8rem;font-weight:600;min-width:18px;text-align:center}.kroger-price-regular{font-size:.9rem;font-weight:600;color:#333}.kroger-price-promo{font-size:.9rem;font-weight:600;color:#991b1b}.kroger-price-regular.strikethrough{text-decoration:line-through;font-weight:400;font-size:.75rem;color:#999;display:block}.kroger-cart-footer{margin-top:1.25rem;padding-top:1rem;border-top:2px solid #2d5016;display:flex;flex-direction:column;gap:.75rem}.kroger-total{display:flex;justify-content:space-between;align-items:center;font-size:1rem}.kroger-total strong{font-size:1.2rem;color:#2d5016}.kroger-add-cart-btn{width:100%;padding:.75rem;font-size:1rem;font-weight:600}.kroger-error{color:#991b1b;font-size:.85rem;margin:.25rem 0}.kroger-success{color:#2d5016;font-size:.85rem;margin:.25rem 0}.kroger-login-status{display:flex;align-items:center;gap:.5rem}.kroger-connected-badge{font-size:.8rem;color:#2d5016;font-weight:500}.kroger-disconnect-btn{font-size:.8rem;padding:.25rem .5rem}.kroger-connect-btn{width:100%;padding:.6rem;font-size:.9rem}.kroger-affiliate-disclosure{margin-top:1rem;font-size:.75rem;font-style:italic;color:#999;text-align:center}@media(max-width:480px){.grocery-source-badges,.recipe-selector-meta{display:none}.kroger-product-img{width:32px;height:32px}}.top-nav{position:sticky;top:0;left:0;right:0;display:flex;background:#fff;border-bottom:1px solid #ddd;z-index:900;max-width:680px;margin:0 auto}.top-nav-tab{flex:1;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:600;font-family:inherit;color:#888;background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;padding:.85rem .5rem}.top-nav-tab:hover{color:#555}.top-nav-tab.active{color:#2d5016;border-bottom-color:#2d5016}.meal-plan-week-nav{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1rem}.meal-plan-arrow{width:40px;height:40px;font-size:1.5rem;font-weight:700;color:#2d5016;background:transparent;border:2px solid #2d5016;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:background .15s,color .15s}.meal-plan-arrow:hover{background:#2d5016;color:#fff}.meal-plan-week-label{font-size:1.05rem;font-weight:600;color:#333;min-width:160px;text-align:center}.shop-week-btn{display:block;width:100%;margin-bottom:1.25rem;padding:.75rem 1.5rem;font-size:1.05rem}.shop-week-btn:disabled{opacity:.4;cursor:not-allowed}.meal-plan-day{margin-bottom:1rem}.meal-plan-day-label{font-size:.85rem;font-weight:700;color:#2d5016;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem;padding-bottom:.25rem;border-bottom:1px solid #e0e0d8}.meal-slot-row{display:flex;align-items:center;gap:.5rem;padding:.4rem 0;min-height:40px}.meal-slot-label{width:80px;flex-shrink:0;font-size:.85rem;color:#666}.meal-slot-filled{flex:1;display:flex;align-items:center;gap:.5rem;min-width:0}.meal-slot-recipe{flex:1;font-size:.9rem;font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meal-slot-remove{flex-shrink:0;width:28px;height:28px;font-size:1.2rem;line-height:1;color:#999;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:color .15s,background .15s}.meal-slot-remove:hover{color:#991b1b;background:#fef2f2}.meal-slot-add{font-size:.85rem;font-family:inherit;font-weight:500;color:#2d5016;background:none;border:1px dashed #aaa;border-radius:6px;padding:.25rem .75rem;cursor:pointer;transition:border-color .15s,background .15s}.meal-slot-add:hover{border-color:#2d5016;background:#f0f7ec}.recipe-picker-overlay{position:fixed;inset:0;z-index:1000;background:#00000080;display:flex;align-items:flex-end;justify-content:center}.recipe-picker-modal{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:680px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden}.recipe-picker-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #eee;flex-shrink:0}.recipe-picker-header h2{font-size:1.15rem;font-weight:700;color:#1a1a1a}.recipe-picker-close{width:36px;height:36px;font-size:1.5rem;line-height:1;color:#666;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.recipe-picker-search{padding:.75rem 1.25rem;flex-shrink:0}.recipe-picker-search input{width:100%;padding:.6rem .75rem;font-size:.95rem;font-family:inherit;border:2px solid #ddd;border-radius:8px;background:#fff;outline:none;transition:border-color .15s}.recipe-picker-search input:focus{border-color:#2d5016}.recipe-picker-list{flex:1;overflow-y:auto;padding:0 .5rem 1rem}.recipe-picker-empty{text-align:center;padding:2rem 1rem;color:#888;font-size:.9rem}.recipe-picker-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem .75rem;margin-bottom:2px;background:none;border:none;border-radius:8px;cursor:pointer;font:inherit;color:inherit;text-align:left;transition:background .15s}.recipe-picker-item:hover{background:#f0f7ec}.recipe-picker-thumb{width:48px;height:48px;border-radius:6px;object-fit:cover;flex-shrink:0}.recipe-picker-item-info{display:flex;flex-direction:column;gap:.1rem;min-width:0}.recipe-picker-item-title{font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-picker-item-meta{font-size:.8rem;color:#888}.upgrade-overlay{position:fixed;inset:0;background:#0009;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.upgrade-prompt{background:#fafaf5;border-radius:16px;max-width:380px;width:100%;padding:2rem 1.5rem;position:relative;text-align:center;box-shadow:0 8px 32px #0003}.upgrade-close{position:absolute;top:.75rem;right:.75rem;background:none;border:none;font-size:1.5rem;color:#888;cursor:pointer;padding:.25rem;line-height:1}.upgrade-close:hover{color:#333}.upgrade-title{font-size:1.4rem;font-weight:700;color:#2d5016;margin:0 0 .5rem}.upgrade-feature{font-size:.9rem;color:#555;margin:0 0 1.25rem;line-height:1.4}.upgrade-details{background:#f0f7ec;border-radius:10px;padding:1rem;margin-bottom:1.25rem}.upgrade-price{font-size:1.1rem;font-weight:700;color:#1a1a1a;margin:0 0 .75rem}.upgrade-perks{list-style:none;padding:0;margin:0;text-align:left}.upgrade-perks li{padding:.25rem 0;font-size:.9rem;color:#333}.upgrade-perks li:before{content:"✓";color:#2d5016;font-weight:700;margin-right:.4rem}.upgrade-buy-btn{display:block;width:100%;padding:.85rem;font-size:1rem;font-weight:700;background:#2d5016;color:#fff;border:none;border-radius:10px;cursor:pointer;margin-bottom:.75rem;transition:background .15s}.upgrade-buy-btn:hover{background:#3d6b20}.upgrade-restore-link{background:none;border:none;color:#888;font-size:.85rem;cursor:pointer;text-decoration:underline;padding:.25rem}.upgrade-restore-link:hover{color:#555}.upgrade-restore-form{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.upgrade-restore-form input{padding:.6rem .75rem;border:1.5px solid #ccc;border-radius:8px;font:inherit;font-size:.9rem}.upgrade-restore-form button{padding:.6rem;background:#2d5016;color:#fff;border:none;border-radius:8px;font:inherit;font-weight:600;cursor:pointer}.upgrade-restore-form button:disabled{opacity:.5;cursor:not-allowed}.upgrade-restore-error{color:#c0392b;font-size:.85rem;margin:0}.paid-gate-wrapper{position:relative;display:inline-flex;cursor:pointer}.paid-gate-wrapper>*{pointer-events:none}.paid-gate-lock{position:absolute;top:-4px;right:-4px;font-size:.7rem;line-height:1}.image-btn.gated{opacity:1;border-style:dashed}.batch-import{padding:0 1rem 2rem}.batch-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.batch-progress{text-align:center;padding:.75rem;background:#f0f7ec;border-radius:8px;font-size:.9rem;color:#2d5016;font-weight:600;margin-bottom:1rem}.batch-save-result{text-align:center;padding:.75rem;background:#e8f5e9;border:1px solid #a5d6a7;border-radius:8px;font-size:.9rem;color:#2e7d32;font-weight:600;margin-bottom:1rem}.batch-empty{text-align:center;padding:3rem 1rem;color:#888}.batch-empty p{margin:.25rem 0;font-size:.9rem}.batch-grid{display:flex;flex-direction:column;gap:.5rem}.batch-item{display:flex;align-items:center;gap:.75rem;padding:.6rem;border-radius:10px;background:#fff;border:1.5px solid #e0e0e0;transition:border-color .15s}.batch-item--processing{border-color:#e6a817;background:#fffdf5}.batch-item--success{border-color:#a5d6a7;background:#f6faf6}.batch-item--error{border-color:#ef9a9a;background:#fff5f5}.batch-thumb{width:56px;height:56px;border-radius:6px;object-fit:cover;flex-shrink:0}.batch-item-info{flex:1;min-width:0}.batch-status{font-size:.85rem;color:#888}.batch-status--processing{color:#e6a817;font-weight:600}.batch-status--success{color:#2d5016;font-weight:600}.batch-status--error{color:#c0392b;font-size:.8rem}.batch-item-actions{display:flex;gap:.4rem;flex-shrink:0}.batch-item-actions .nav-btn,.batch-item-actions .delete-btn{font-size:.8rem;padding:.3rem .6rem}
