:root{--primary:#1a8d5f;--primary-hover:#147a50;--primary-light:#e8f5ef;--secondary:#f27a2e;--secondary-hover:#d96820;--secondary-light:#fef4ec;--accent:#ffc220;--accent-light:#fff8e1;--text:#2d3a33;--text-heading:#1a2b22;--text-secondary:#5f7268;--bg:#f8fbf9;--bg-elevated:#fff;--border:#d4e4da;--border-focus:#1a8d5f;--success:#1a8d5f;--success-bg:#e8f5ef;--warning:#f59e0b;--warning-bg:#fef3e2;--warning-text:#663c00;--error:#dc2626;--error-bg:#fef2f2;--error-text:#611a15;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 4px 6px #00000014;--shadow-lg:0 10px 15px #0000001a;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--font-heading:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, Consolas, monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;font-family:var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:clamp(1rem,.875rem + .3125vw,1.125rem);line-height:1.5}#root{box-sizing:border-box;flex-direction:column;width:100%;max-width:1126px;min-height:100svh;margin:0 auto;display:flex}body{margin:0}h1,h2,h3{font-family:var(--font-heading);color:var(--text-heading);letter-spacing:-.02em;font-weight:700}h1{margin:var(--space-6) 0;font-size:clamp(2rem,1.5rem + 1.5625vw,3.5rem)}h2{margin:0 0 var(--space-2);font-size:clamp(1.25rem,1.125rem + .625vw,1.75rem)}h3{font-size:var(--text-lg);margin:0 0 var(--space-2)}p{margin:0}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}code{font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-1) var(--space-2);background:var(--bg-elevated);border-radius:var(--radius-sm);color:var(--text-heading)}button{font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);color:var(--text);min-height:40px;font-weight:500;transition:background .15s,transform .1s,border-color .15s}button:hover{border-color:var(--primary);color:var(--primary)}button:active{transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed;transform:none}button.primary,.app-content>section button[type=submit],.login-form button[type=submit]{background:var(--primary);color:#fff;border-color:var(--primary)}:is(button.primary,.app-content>section button[type=submit],.login-form button[type=submit]):hover{background:var(--primary-hover);border-color:var(--primary-hover)}input,select{font-family:var(--font-body);font-size:var(--text-base);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text);box-sizing:border-box;min-height:44px}:is(input,select):focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--primary-light);outline:none}input[type=checkbox]{width:24px;height:24px;min-height:auto;accent-color:var(--success);cursor:pointer}@media (width>=64.0625rem){#root{border-inline:1px solid var(--border)}}.app-shell{text-align:left;flex-direction:column;min-height:100svh;display:flex}.app-nav{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--primary);z-index:5;border-bottom:none;flex-wrap:wrap;display:flex;position:sticky;top:0}.nav-hamburger{cursor:pointer;padding:var(--space-1);background:0 0;border:none;justify-content:center;align-items:center;width:36px;height:36px;display:none}.hamburger-icon,.hamburger-icon:before,.hamburger-icon:after{background:#ffffffe6;border-radius:1px;width:20px;height:2px;transition:transform .2s,opacity .2s;display:block;position:relative}.hamburger-icon:before,.hamburger-icon:after{content:"";width:20px;position:absolute;left:0}.hamburger-icon:before{top:-6px}.hamburger-icon:after{top:6px}.hamburger-icon.open{background:0 0}.hamburger-icon.open:before{top:0;transform:rotate(45deg)}.hamburger-icon.open:after{top:0;transform:rotate(-45deg)}.app-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-base);color:#fff;white-space:nowrap;margin-right:auto}.app-nav nav{gap:var(--space-1);display:flex}.app-nav a{color:#ffffffd9;font-size:var(--text-sm);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);white-space:nowrap;align-items:center;min-height:36px;font-weight:500;text-decoration:none;transition:color .15s,background .15s;display:inline-flex}.app-nav a:hover{color:#fff;background:#ffffff26}.app-nav a.active{color:#fff;background:#fff3;font-weight:600}.app-user{align-items:center;gap:var(--space-2);display:flex}.app-user button{font-size:var(--text-xs);padding:var(--space-1) var(--space-2);color:#ffffffe6;background:#ffffff26;border:1px solid #ffffff4d;min-height:32px}.app-user button:hover{color:#fff;background:#ffffff40;border-color:#fff9}.app-username{font-size:var(--text-xs);color:#fffc}.app-content{padding:var(--space-4) var(--space-4);flex:1}@media (width<=40rem){.app-nav{padding:var(--space-2) var(--space-3);flex-wrap:wrap}.app-title{font-size:var(--text-sm)}.nav-hamburger{margin-left:auto;display:flex}.app-nav nav{width:100%;padding:var(--space-2) 0;flex-direction:column;order:10;gap:0;display:none}.app-nav nav.nav-open{display:flex}.app-nav nav a{font-size:var(--text-sm);padding:var(--space-2) var(--space-2);border-radius:var(--radius-sm);min-height:40px}.app-user{width:100%;padding:var(--space-2) 0;border-top:1px solid #fff3;order:11;justify-content:space-between;display:none}.app-nav:has(nav.nav-open) .app-user{display:flex}.app-content{padding:var(--space-3)}.app-username{display:none}}.login-page{padding-top:var(--space-8);justify-content:center;display:flex}.login-form{gap:var(--space-3);background:var(--bg-elevated);width:100%;max-width:360px;padding:var(--space-6);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;display:flex}.banner{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);display:flex}.banner-error{background:var(--error-bg);color:var(--error-text);border:1px solid var(--error)}.banner-warning{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--accent)}.banner button{border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);cursor:pointer;color:inherit;background:0 0;border:1px solid;min-height:36px}.week-picker{align-items:center;gap:var(--space-3);margin:var(--space-3) 0;display:flex}.week-range{font-family:var(--font-heading);text-align:center;min-width:12ch;color:var(--text-heading);font-weight:600}.plan-header{align-items:center;gap:var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.reset-week-btn{color:var(--error);border-color:var(--error)}.slot-toggles{gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.slot-toggles button{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);font-size:var(--text-sm);padding:var(--space-2) var(--space-3)}.slot-toggles button:hover{border-color:var(--primary);color:var(--primary)}.slot-toggles button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.week-grid{background:var(--border);border:1px solid var(--border);border-radius:var(--radius-lg);gap:1px;display:grid;overflow:hidden}.week-grid-row{grid-template-columns:80px repeat(7,minmax(100px,1fr));gap:1px;display:grid}.week-grid-header{font-family:var(--font-heading);font-weight:600;font-size:var(--text-sm)}.week-grid-day-header,.week-grid-slot-label{padding:var(--space-2) var(--space-2);background:var(--primary-light);color:var(--text-heading)}.week-grid-cell{padding:var(--space-2);background:var(--bg-elevated);min-height:80px;display:flex}.meal-card{gap:var(--space-1);width:100%;font-size:var(--text-sm);padding-right:var(--space-4);flex-direction:column;display:flex;position:relative}.meal-card-image{object-fit:cover;border-radius:var(--radius-sm);width:100%;height:48px}.servings-stepper{align-items:center;gap:var(--space-1);display:flex}.servings-stepper button{width:28px;height:28px;min-height:28px;line-height:1;font-size:var(--text-sm);border-radius:var(--radius-full);background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);padding:0}.remove-meal{cursor:pointer;color:var(--error);min-height:auto;padding:var(--space-1);font-size:var(--text-sm);background:0 0;border:none}.meal-card>.remove-meal{padding:var(--space-1);position:absolute;top:0;right:0}.add-recipe{border:2px dashed var(--border);cursor:pointer;width:100%;height:100%;color:var(--text-secondary);border-radius:var(--radius-md);background:0 0;min-height:60px;transition:border-color .15s,color .15s}.add-recipe:hover{border-color:var(--primary);color:var(--primary)}.week-accordion{border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;display:flex;overflow:hidden}.week-accordion-day{border-bottom:1px solid var(--border)}.week-accordion-day:last-child{border-bottom:none}.week-accordion-header{padding:var(--space-3) var(--space-4);background:var(--bg-elevated);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;min-height:52px;transition:background .15s;display:flex}.week-accordion-header:hover{background:var(--primary-light)}.week-accordion-day-name{font-family:var(--font-heading);color:var(--text-heading);font-weight:600}.week-accordion-meal-count{font-size:var(--text-sm);color:var(--text-secondary)}.week-accordion-toggle{font-size:var(--text-sm);color:var(--text-secondary);transition:transform .2s}.week-accordion-toggle.expanded{transform:rotate(90deg)}.week-accordion-content{padding:var(--space-3) var(--space-4);gap:var(--space-3);background:var(--bg);flex-direction:column;display:flex}.week-accordion-slot{gap:var(--space-2);flex-direction:column;display:flex}.week-accordion-slot-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);font-weight:600}.week-accordion-meal{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border-radius:var(--radius-md);border:1px solid var(--border);display:flex;overflow:hidden}.week-accordion-meal-image{border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;width:48px;height:48px}.week-accordion-meal-info{flex:1;min-width:0}.week-accordion-meal-name{color:var(--text-heading);-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;font-weight:500;display:-webkit-box;overflow:hidden}.week-accordion-meal-servings{font-size:var(--text-sm);color:var(--text-secondary)}.modal-overlay{z-index:10;padding:var(--space-4);background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-elevated);padding:var(--space-5);border-radius:var(--radius-lg);width:400px;max-width:100%;max-height:85vh;box-shadow:var(--shadow-lg);overflow-y:auto}.modal header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.modal header button{color:var(--text-secondary);min-height:auto;padding:var(--space-2);background:0 0}@media (width<=40rem){.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-height:90vh;padding:var(--space-4)}}.recipe-results{margin:var(--space-3) 0 0;padding:0;list-style:none}.recipe-results li button{text-align:left;width:100%;padding:var(--space-3);cursor:pointer;border-radius:var(--radius-md);color:var(--text);background:0 0;border:none;min-height:44px;transition:background .15s}.recipe-results li button:hover{background:var(--primary-light)}.skip-hint{font-size:var(--text-sm);color:var(--text-secondary);background:var(--primary-light);border-left:3px solid var(--primary);padding:var(--space-2) var(--space-3);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-bottom:var(--space-3)}.shopping-list{margin:0;padding:0;list-style:none}.shopping-list-item{align-items:center;column-gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border);grid-template-rows:auto auto;grid-template-columns:auto 1fr auto;min-height:48px;transition:opacity .2s;display:grid}.shopping-list-item.excluded{opacity:.5;background:repeating-linear-gradient(-45deg, transparent, transparent 8px, var(--primary-light) 8px, var(--primary-light) 9px);padding-left:var(--space-2);padding-right:var(--space-2);border-radius:var(--radius-sm)}.shopping-list-item.excluded .item-name{color:var(--text-secondary);text-decoration:line-through}.check-off-checkbox{cursor:pointer;width:18px;height:18px;accent-color:var(--primary);grid-area:1/1}.item-name{color:var(--text-heading);grid-area:1/2;font-weight:500}.item-quantity-display{align-items:center;gap:var(--space-1);grid-area:1/3;display:flex}.item-quantity{color:var(--text-secondary);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;border-radius:var(--radius-sm);padding:2px 6px;transition:background .15s}.item-quantity:hover{background:var(--primary-light)}.item-quantity--empty{color:var(--text-secondary);opacity:.5;cursor:pointer}.item-quantity.overridden{color:var(--primary);background:var(--primary-light);font-weight:600}.clear-override-btn{cursor:pointer;font-size:var(--text-sm);color:var(--text-secondary);border-radius:var(--radius-sm);opacity:.6;background:0 0;border:none;padding:2px 4px}.clear-override-btn:hover{opacity:1;background:var(--danger-light,#fee)}.item-quantity-edit{align-items:center;gap:var(--space-1);grid-area:1/3;display:flex}.item-quantity-edit .qty-input,.item-quantity-edit .unit-input{width:60px;font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 6px}.item-quantity-edit .save-btn,.item-quantity-edit .cancel-btn{cursor:pointer;font-size:var(--text-sm);background:0 0;border:none;padding:2px 4px}.item-quantity-edit .save-btn{color:var(--primary)}.item-quantity-edit .cancel-btn{color:var(--text-secondary)}.item-provenance{font-size:var(--text-xs);color:var(--text-secondary);opacity:.7;grid-area:2/2/auto/-1}.shopping-list-item.checked .item-name{opacity:.5;text-decoration:line-through}.shopping-list-item.checked .item-quantity,.shopping-list-item.checked .item-provenance{opacity:.4}.delete-item{cursor:pointer;color:var(--error);min-height:36px;padding:var(--space-1);background:0 0;border:none;grid-area:1/3}.manual-add-form{align-items:center;gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.manual-add-form label{font-size:var(--text-sm);color:var(--text-secondary)}.manual-add-form input{margin-right:var(--space-2)}.shopping-list-header{justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.shopping-list-header h1{margin:0;font-size:clamp(1.25rem,1rem + .75vw,1.75rem)}.shopping-list-accordion{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-4)}.shopping-list-accordion-summary{cursor:pointer;font-weight:600;font-size:var(--text-lg);padding:var(--space-2) 0;-webkit-user-select:none;user-select:none;align-items:center;gap:var(--space-3);display:flex}.check-off-badge{font-size:var(--text-sm);color:var(--primary);background:var(--primary-light);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500}.excluded-item-row{padding:var(--space-2) 0;border-bottom:1px solid var(--border);opacity:.7;justify-content:space-between;align-items:center;display:flex}.excluded-item-row .item-name{color:var(--text-secondary);text-decoration:line-through}.include-btn{font-size:var(--text-sm);padding:var(--space-1) var(--space-2);border:1px solid var(--primary);border-radius:var(--radius-sm);color:var(--primary);cursor:pointer;background:0 0}.include-btn:hover{background:var(--primary-light)}.library-filters{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.library-filters label{font-size:var(--text-sm);color:var(--text-secondary)}.library-filters input[type=number]{width:8ch;min-height:36px}.recipe-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}@media (width<=40rem){.recipe-grid{gap:var(--space-4);grid-template-columns:1fr}}@media (width>=40.0625rem) and (width<=64rem){.recipe-grid{grid-template-columns:repeat(2,1fr)}}.recipe-card{color:inherit;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);box-shadow:var(--shadow-sm);flex-direction:column;text-decoration:none;transition:box-shadow .2s,transform .2s;display:flex;overflow:hidden}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.recipe-card-image{aspect-ratio:16/10;object-fit:cover;background:var(--border);width:100%}.recipe-card-image-placeholder{aspect-ratio:16/10;background:linear-gradient(135deg, var(--primary-light), #d4edda);width:100%;color:var(--primary);font-size:var(--text-xl);justify-content:center;align-items:center;display:flex}.recipe-card-body{padding:var(--space-3) var(--space-4)}.recipe-card-body h3{font-size:var(--text-base);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-weight:600;display:-webkit-box;overflow:hidden}.recipe-card-meta{gap:var(--space-2);font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.source-badge{border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px var(--space-2);font-size:var(--text-xs)}.recipe-card-tags{gap:var(--space-1);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.tag{font-size:var(--text-xs);padding:2px var(--space-2);border-radius:var(--radius-full);white-space:nowrap;display:inline-block}.tag-meal-type{background:var(--primary-light);color:var(--primary-dark,var(--primary));border:1px solid var(--primary)}.tag-protein{background:var(--secondary-light);color:var(--secondary);border:1px solid var(--secondary)}.pagination{align-items:center;gap:var(--space-3);margin-top:var(--space-5);display:flex}.pagination button{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-full);padding:var(--space-2) var(--space-4);min-height:44px}.pagination button:hover{border-color:var(--primary);color:var(--primary)}.pagination button:disabled{opacity:.4}.recipe-detail-hero{object-fit:cover;border-radius:var(--radius-xl);width:100%;max-height:360px}@media (width<=40rem){.recipe-detail-hero{margin:calc(-1 * var(--space-4));margin-bottom:var(--space-4);width:calc(100% + 2 * var(--space-4));border-radius:0;max-height:240px}}.recipe-detail-meta{gap:var(--space-3);margin:var(--space-2) 0 var(--space-4);color:var(--text-secondary);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.dietary-tag{border:1px solid var(--border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);background:var(--secondary-light);color:var(--secondary)}.ingredient-list,.instruction-list{padding-left:var(--space-5)}.ingredient-list li,.instruction-list li{padding:var(--space-1) 0}.recipe-attribution{margin:var(--space-4) 0;font-size:var(--text-sm);color:var(--text-secondary)}.add-to-plan form{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.add-to-plan-success{color:var(--success);font-weight:500}.imports-section{gap:var(--space-5);flex-direction:column;display:flex}.import-source{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--bg-elevated)}.import-warning{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--accent);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.import-controls{align-items:center;gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.import-controls input{width:10ch;min-height:36px}.import-stats{gap:var(--space-4);flex-wrap:wrap;padding:0;list-style:none;display:flex}.import-job-error{color:var(--error)}.import-recent-errors{max-height:200px;font-size:var(--text-sm);overflow-y:auto}.import-error-url{color:var(--text-secondary)}.picnic-account-section{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-5);background:var(--bg-elevated)}.picnic-link-form,.picnic-2fa-form{gap:var(--space-3);flex-direction:column;max-width:360px;display:flex}.picnic-note{font-size:var(--text-xs);color:var(--text-secondary)}.field-error{color:var(--error);font-size:var(--text-sm)}.picnic-linked{align-items:center;gap:var(--space-3);display:flex}.picnic-section{margin-top:var(--space-5);border-top:1px solid var(--border);padding-top:var(--space-4)}.picnic-review-note,.picnic-finish-note{font-size:var(--text-sm);color:var(--text-secondary);font-style:italic}.match-rows{margin:var(--space-3) 0;padding:0;list-style:none}.match-row{padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.match-row-heading{margin-bottom:var(--space-2);color:var(--text-heading);font-weight:600}.match-required{color:var(--text-secondary);font-size:var(--text-sm)}.match-row-product{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.match-product-image{object-fit:contain;border-radius:var(--radius-md);background:var(--bg);border:1px solid var(--border);flex-shrink:0;width:64px;height:64px}.match-product-image-placeholder{background:linear-gradient(135deg, var(--primary-light), #d4edda)}.match-product-unit,.match-product-price{font-size:var(--text-sm);color:var(--text-secondary)}.match-row-product input[type=number]{width:6ch;min-height:36px}.match-row-controls{align-items:center;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.match-row-controls button{font-size:var(--text-sm);padding:var(--space-2) var(--space-3);min-height:40px}.match-status-badge{font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500;display:inline-block}.match-unmatched{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--accent)}.match-row-unmatched{align-items:center;gap:var(--space-3);display:flex}.match-product-link{color:var(--primary);cursor:pointer;text-decoration:underline}.match-product-link:hover{color:var(--primary-dark)}.match-loading{align-items:center;gap:var(--space-4);padding:var(--space-8) var(--space-4);flex-direction:column;display:flex}.match-loading-spinner{border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite match-spin}.match-loading-text{font-size:var(--text-base);color:var(--text-secondary);animation:1.5s ease-in-out infinite match-pulse}@keyframes match-spin{to{transform:rotate(360deg)}}@keyframes match-pulse{0%,to{opacity:1}50%{opacity:.5}}@media (width<=40rem){.match-row-product{flex-direction:column;align-items:flex-start}.match-product-image{width:60px;height:60px}}.retailer-picker{margin-top:var(--space-4)}.retailer-cards{gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.retailer-card{align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-4);text-align:center;flex-direction:column;min-width:120px;display:flex}.retailer-name{color:var(--text-heading);font-weight:600}.retailer-capability{font-size:var(--text-xs);color:var(--text-secondary)}.retailer-status{font-size:var(--text-xs);color:var(--secondary)}.transfer-report section{margin-bottom:var(--space-4)}.winkellijst-link{font-size:var(--text-sm);white-space:nowrap;color:var(--primary)}.winkellijst-page{max-width:520px}.winkellijst-header{margin-bottom:var(--space-4)}.winkellijst-header h1{margin:var(--space-2) 0 var(--space-1);font-size:clamp(1.5rem,1.25rem + .75vw,2rem)}.winkellijst-progress{font-size:var(--text-sm);color:var(--text-secondary)}.back-link{font-size:var(--text-sm);color:var(--text-secondary);text-decoration:none}.back-link:hover{color:var(--primary)}.winkellijst-items{margin:0;padding:0;list-style:none}.winkellijst-item{padding:var(--space-3) 0;border-bottom:1px solid var(--border);align-items:center;min-height:52px;transition:opacity .2s;display:flex}.winkellijst-item.checked{opacity:.45}.winkellijst-label{align-items:center;gap:var(--space-3);cursor:pointer;font-size:var(--text-base);width:100%;min-height:44px;display:flex}.winkellijst-label input[type=checkbox]{cursor:pointer;flex-shrink:0;width:24px;height:24px}.winkellijst-text.checked{color:var(--text-secondary);text-decoration:line-through}.winkellijst-actions{margin-top:var(--space-4);gap:var(--space-2);display:flex}.winkellijst-actions button{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);font-size:var(--text-sm)}.winkellijst-actions button:hover{border-color:var(--primary);color:var(--primary)}.favourite-btn{cursor:pointer;font-size:var(--text-lg);color:var(--text-secondary);padding:var(--space-1);border-radius:var(--radius-sm);background:0 0;border:none;line-height:1;transition:color .15s,transform .15s}.favourite-btn:hover{color:var(--primary);transform:scale(1.2)}.favourite-btn:disabled{opacity:.5;cursor:default;transform:none}.favourite-btn-active{color:var(--primary)}.recipe-card .favourite-btn{top:var(--space-2);right:var(--space-2);background:var(--bg-elevated);box-sizing:border-box;width:32px;min-width:32px;height:32px;min-height:32px;box-shadow:var(--shadow-sm);border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.recipe-card{position:relative}.filter-chip{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-full,9999px);background:var(--bg-elevated);font-size:var(--text-sm);cursor:pointer;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.filter-chip:hover{border-color:var(--primary);color:var(--primary)}.filter-chip-active{background:var(--primary);border-color:var(--primary);color:#fff}.filter-chip-active:hover{background:var(--primary-hover,var(--primary));color:#fff}.meal-card-actions{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.filter-bar{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.meal-type-toggles{gap:var(--space-2);flex-wrap:wrap;display:flex}.filter-dropdown{position:relative}.filter-dropdown-panel{top:calc(100% + var(--space-1));background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-2);z-index:10;min-width:200px;max-height:300px;position:absolute;left:0;overflow-y:auto}.filter-dropdown-header{font-size:var(--text-xs);color:var(--text-secondary);padding:var(--space-1) var(--space-2);margin-bottom:var(--space-1);font-weight:600}.filter-dropdown-item{align-items:center;gap:var(--space-2);padding:var(--space-2);cursor:pointer;border-radius:var(--radius-sm);font-size:var(--text-sm);transition:background .15s;display:flex}.filter-dropdown-item:hover{background:var(--primary-light)}.filter-dropdown-item--zero{opacity:.5}.filter-dropdown-item input[type=checkbox]{cursor:pointer}.clear-all-btn{border:1px solid var(--border);color:var(--text-secondary);font-size:var(--text-sm);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);cursor:pointer;background:0 0;min-height:36px;transition:border-color .15s,color .15s}.clear-all-btn:hover{border-color:var(--error);color:var(--error)}.nl-search-form{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.nl-search-form input[type=search]{flex:1;min-width:280px;min-height:44px}.nl-search-form button{min-height:44px;padding:var(--space-2) var(--space-4)}.rerank-toggle{font-size:var(--text-sm,.875rem);color:var(--text-secondary,#6b7280);white-space:nowrap;align-items:center;gap:.25rem;display:flex}.nl-search-fallback{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--accent);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);margin-bottom:var(--space-3)}@media (width<=768px){.filter-bar{flex-direction:column;align-items:flex-start}.meal-type-toggles,.filter-dropdown{width:100%}.filter-dropdown .filter-chip{justify-content:space-between;width:100%}.filter-dropdown-panel{width:100%;left:0;right:0}.nl-search-form,.nl-search-form input[type=search]{width:100%}}.week-grid-toolbar{margin-bottom:var(--space-3)}.fill-week-btn{padding:var(--space-2) var(--space-3);font-weight:500}.autofill-form{gap:var(--space-3);padding:var(--space-3) 0;flex-direction:column;display:flex}.autofill-form label{gap:var(--space-1);flex-direction:column;display:flex}.autofill-form label:has(input[type=checkbox]){flex-direction:row;align-items:center}.autofill-preview{padding:var(--space-3) 0;max-height:70vh;overflow-y:auto}.autofill-days{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.autofill-day-card{gap:var(--space-1);padding:var(--space-2);border:1px solid var(--color-border,#e0e0e0);border-radius:var(--radius-sm,4px);flex-direction:column;display:flex}.autofill-day-card h3{margin:0;font-size:.85rem;font-weight:600}.autofill-recipe-image{object-fit:cover;border-radius:var(--radius-sm,4px);width:100%;height:80px}.autofill-recipe-title{margin:0;font-size:.8rem;line-height:1.3}.autofill-reasoning{color:var(--color-muted,#666);margin:0;font-size:.7rem;font-style:italic}.autofill-swap-button{padding:var(--space-1);align-self:flex-start;font-size:.75rem}.autofill-actions{gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-border,#e0e0e0);margin-top:var(--space-3);justify-content:flex-end;display:flex}.autofill-loading{padding:var(--space-4) 0;text-align:center}.warning-message{color:var(--color-warning,#b45309);font-size:.85rem}.info-banner{padding:var(--space-2);background:var(--color-info-bg,#f0f9ff);border-radius:var(--radius-sm,4px);margin-bottom:var(--space-3);font-size:.85rem}.error-banner{padding:var(--space-2);background:var(--color-error-bg,#fef2f2);color:var(--color-error,#dc2626);border-radius:var(--radius-sm,4px);margin-bottom:var(--space-3);font-size:.85rem}.recipe-form{max-width:700px}.recipe-form .form-group{margin-bottom:var(--space-3,1rem)}.recipe-form .form-group label{margin-bottom:var(--space-1,.25rem);font-weight:600;display:block}.recipe-form .form-group input,.recipe-form .form-group textarea,.recipe-form .form-group select{width:100%;padding:var(--space-2,.5rem);border:1px solid var(--border,#ddd);border-radius:var(--radius-sm,4px);font-size:1rem}.recipe-form .form-row{gap:var(--space-3,1rem);display:flex}.recipe-form .form-row .form-group{flex:1}.recipe-form .form-section{border:1px solid var(--border,#ddd);border-radius:var(--radius-sm,4px);padding:var(--space-3,1rem);margin-bottom:var(--space-3,1rem)}.recipe-form .form-section legend{padding:0 var(--space-1,.25rem);font-weight:600}.ingredient-row,.instruction-row{gap:var(--space-2,.5rem);margin-bottom:var(--space-2,.5rem);align-items:flex-start;display:flex}.ingredient-row input{padding:var(--space-2,.5rem);border:1px solid var(--border,#ddd);border-radius:var(--radius-sm,4px);font-size:.9rem}.ingredient-qty,.ingredient-unit{flex-shrink:0;width:70px}.ingredient-name{flex:1;min-width:0}.ingredient-prep{flex-shrink:0;width:120px}.instruction-row{align-items:stretch}.instruction-row .step-number{padding-top:var(--space-2,.5rem);min-width:1.5rem;font-weight:600}.instruction-row textarea{min-width:0;padding:var(--space-2,.5rem);border:1px solid var(--border,#ddd);border-radius:var(--radius-sm,4px);resize:vertical;flex:1;font-size:.9rem}.btn-remove{padding:var(--space-1,.25rem) var(--space-2,.5rem);color:var(--color-error,#dc2626);cursor:pointer;background:0 0;border:none;min-width:32px;min-height:32px;font-size:1.1rem}.btn-add{margin-top:var(--space-2,.5rem);padding:var(--space-1,.25rem) var(--space-3,1rem);border:1px dashed var(--border,#ddd);border-radius:var(--radius-sm,4px);cursor:pointer;color:var(--text-secondary,#666);background:0 0}.image-preview{margin-bottom:var(--space-2,.5rem)}.image-preview img{border-radius:var(--radius-sm,4px);margin-bottom:var(--space-1,.25rem);display:block}@media (width<=600px){.recipe-form .form-row{flex-direction:column;gap:0}.ingredient-row{flex-wrap:wrap}.ingredient-name{margin-bottom:var(--space-1,.25rem);flex-basis:100%;order:-1}.ingredient-qty,.ingredient-unit{width:60px}.ingredient-prep{flex:1;width:auto;min-width:0}}.embeddings-section{margin-top:2rem}.settings-inline-row{flex-wrap:wrap;align-items:flex-start;gap:2rem;margin-bottom:1.5rem;display:flex}.settings-inline-row>section{flex:1;min-width:200px;margin-top:0}.settings-inline-label{margin:0 0 .5rem;font-size:1rem;font-weight:600}.admin-sections{flex-direction:column;gap:.75rem;margin-top:2rem;display:flex}.admin-collapsible{border:1px solid var(--border,#e5e7eb);background:var(--bg-primary,transparent);border-radius:8px;padding:.5rem 1rem}.admin-collapsible>summary{cursor:pointer;-webkit-user-select:none;user-select:none;padding:.25rem 0;list-style:none}.admin-collapsible>summary::-webkit-details-marker{display:none}.admin-collapsible>summary:before{content:"▶";color:var(--text-secondary,#6b7280);margin-right:.5rem;font-size:.75em;transition:transform .15s;display:inline-block}.admin-collapsible[open]>summary:before{transform:rotate(90deg)}.admin-collapsible>summary>h2{margin:0;font-size:1.25rem;display:inline}.unmatched-section{margin-top:1rem}.unmatched-list{flex-direction:column;gap:.75rem;padding:0;list-style:none;display:flex}.unmatched-cluster{border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:.75rem}.unmatched-cluster-head{align-items:center;gap:.75rem;margin-bottom:.25rem;display:flex}.unmatched-count{color:var(--text-secondary,#6b7280);font-size:var(--text-sm,.875rem)}.unmatched-samples{color:var(--text-secondary,#6b7280);font-size:var(--text-sm,.875rem);margin:.25rem 0 .5rem 1.25rem;padding:0;list-style:outside}.unmatched-samples code{background:var(--bg-secondary,#f3f4f6);border-radius:3px;padding:0 .25rem}.unmatched-proposal{background:var(--bg-secondary,#f3f4f6);border-radius:4px;margin:.5rem 0;padding:.5rem .75rem}.unmatched-reason{font-size:var(--text-sm,.875rem);color:var(--text-secondary,#6b7280);margin-top:.25rem}.unmatched-actions{margin-top:.5rem}.embeddings-stats{margin-bottom:1rem}.progress-bar-container{background:var(--bg-secondary,#e5e7eb);border-radius:4px;width:100%;height:8px;margin:.5rem 0;overflow:hidden}.progress-bar-fill{background:var(--primary,#3b82f6);border-radius:4px;height:100%;transition:width .3s}.progress-label{font-size:var(--text-sm,.875rem);color:var(--text-secondary,#6b7280)}.users-list{flex-direction:column;gap:.75rem;margin-bottom:1.5rem;display:flex}.user-card{border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:.75rem 1rem}.user-card-header{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.user-name{font-weight:600}.admin-badge{font-size:var(--text-xs,.75rem);background:var(--primary,#3b82f6);color:#fff;border-radius:9999px;padding:.125rem .5rem}.user-created{font-size:var(--text-sm,.875rem);color:var(--text-secondary,#6b7280);margin-left:auto}.user-card-actions{align-items:center;gap:.5rem;display:flex}.reset-password-form{align-items:center;gap:.5rem;width:100%;display:flex}.reset-password-form input{flex:1;min-width:0}.button-secondary{color:var(--text-secondary,#6b7280);border-color:var(--border,#d1d5db);background:0 0}.button-secondary:hover:not(:disabled){background:var(--bg-subtle,#f9fafb);color:var(--text,#111827);border-color:var(--text-secondary,#9ca3af)}.create-user-form{border-top:1px solid var(--border,#e5e7eb);padding-top:1rem}.create-user-fields{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.create-user-fields input[type=text],.create-user-fields input[type=password]{flex:1;min-width:120px}.admin-checkbox{white-space:nowrap;align-items:center;gap:.25rem;display:flex}.nav-help{opacity:.7;border-radius:50%;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.85rem;font-weight:700;display:inline-flex}.nav-help:hover{opacity:1}.how-it-works-page{max-width:700px;line-height:1.7}.how-it-works-page section{margin-bottom:2rem}.how-it-works-page h2{margin-top:1.5rem}.how-it-works-page ul{padding-left:1.5rem}.ingredients-page{max-width:800px;padding:var(--space-4);margin:0 auto}.ingredients-search{width:100%;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-base);margin-bottom:var(--space-4)}.ingredients-list{margin:0;padding:0;list-style:none}.ingredient-row{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border);display:flex}.pantry-toggle{border:2px solid var(--border);cursor:pointer;width:32px;min-width:32px;height:32px;min-height:32px;font-size:var(--text-base);box-sizing:border-box;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:all .15s;display:flex}.pantry-toggle.in-pantry{background:var(--primary);border-color:var(--primary);color:#fff}.ingredient-info{flex:1;min-width:0}.ingredient-name{color:var(--text-heading);font-weight:500}.ingredient-name-nl{color:var(--text-secondary);font-weight:400}.ingredient-aliases{font-size:var(--text-xs);color:var(--text-secondary);opacity:.7;display:block}.ingredient-usage{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap}.ingredient-editor{background:var(--surface,#f9f9f9);padding:var(--space-3);border-radius:var(--radius-sm);margin:var(--space-2) 0;border:1px solid var(--border)}.editor-field{margin-bottom:var(--space-2)}.editor-field label{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:2px;display:block}.editor-field input[type=text],.editor-field input:not([type]){width:100%;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.editor-actions{gap:var(--space-2);margin-top:var(--space-3);display:flex}.editor-error{color:var(--danger,#c00);font-size:var(--text-sm);margin-bottom:var(--space-2)}.editor-hints{margin:var(--space-2) 0}.hint-row{align-items:center;gap:var(--space-2);font-size:var(--text-sm);padding:2px 0;display:flex}.editor-add-hint{gap:var(--space-1);margin-top:var(--space-1);display:flex}.editor-add-hint input{padding:var(--space-1);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius-sm);flex:1}.ingredient-row .edit-btn{cursor:pointer;font-size:var(--text-sm);color:var(--text-secondary);padding:var(--space-1);background:0 0;border:none}.ingredient-row .edit-btn:hover{color:var(--primary)}.btn-danger{color:var(--danger,#c00);border-color:var(--danger,#c00)}.add-ingredient-form{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.add-ingredient-form input{padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm)}
