:root{--bg:#f6f6f4;--surface:#ffffff;--surface-soft:#f0f0ed;--text:#151515;--muted:#696964;--line:#deded8;--line-strong:#c7c7bf;--accent:#111111;--success:#15803d;--radius:8px;--shadow:0 1px 2px rgba(0,0,0,0.06),0 10px 24px rgba(0,0,0,0.05)}*{box-sizing:border-box}body,html{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:Avenir Next,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.login-panel{width:min(520px,100%);display:grid;grid-gap:18px;gap:18px;padding:28px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,Times New Roman,serif;font-weight:600}.eyebrow{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.compact-card span,.eyebrow,.ingredient-need span,.list-row span,.meal-card span,.muted,.product-actions span,.product-card span,.recipe-card li,.recipe-card span,.status-text{color:var(--muted)}.app-frame{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;display:grid;grid-template-rows:auto 1fr auto;grid-gap:24px;gap:24px;padding:24px 18px;background:var(--surface);border-right:1px solid var(--line)}.brand-block{display:flex;align-items:center;gap:12px}.nav-list{display:grid;align-content:start;grid-gap:6px;gap:6px}.danger-button,.icon-button,.nav-button,.primary-button,.secondary-button,.segmented button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius);border:1px solid transparent;transition:background .15s ease,border-color .15s ease,transform .15s ease}.nav-button{justify-content:flex-start;width:100%;padding:10px 12px;background:transparent;color:var(--text)}.nav-button.active,.nav-button:hover{background:var(--surface-soft)}.sign-out{color:var(--muted)}.workspace{padding:28px}.button-row,.list-row,.product-group summary,.section-header,.workspace-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.workspace-header{margin-bottom:24px}.stack,.view-stack{display:grid;grid-gap:16px;gap:16px}.shopping-item-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:18px;gap:18px;min-height:92px;padding:18px 20px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.shopping-item-main{display:grid;grid-gap:8px;gap:8px;min-width:0}.shopping-item-main strong{font-size:1.02rem;line-height:1.15}.shopping-item-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted)}.shopping-item-meta span+span:before{content:"\2022";margin-right:8px;color:var(--muted)}.surface{display:grid;grid-gap:18px;gap:18px;padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.collapsible-panel{display:block}.collapsible-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none}.collapsible-summary::-webkit-details-marker{display:none}.collapsible-summary:after{content:none}.collapsible-panel[open] .collapsible-summary{margin-bottom:18px}.collapsible-panel[open] .collapsible-summary:after{content:none}.summary-actions{display:flex;align-items:center;gap:14px;color:var(--muted)}.shopping-summary-tools{margin-left:auto;display:flex;align-items:center;gap:40px}.summary-toggle-label{min-width:74px;color:var(--muted);text-align:right}.match-products-button.loading{cursor:wait}.match-spinner{width:16px;height:16px;display:inline-grid;place-items:center}.match-products-button.loading .match-spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:scan-spin .8s linear infinite}.cart-wizard-hero{grid-template-columns:minmax(0,1fr) auto;align-items:center}.cart-wizard-hero p{max-width:760px}.cart-wizard-actions{display:flex;align-items:center;gap:10px}.collapsible-panel[open] .summary-toggle-label{font-size:0}.collapsible-panel[open] .summary-toggle-label:after{content:"Hide list";font-size:1rem}.primary-button{padding:0 14px;background:var(--accent);color:#fff}.danger-button{padding:0 14px;background:#fff;color:#b42318;border-color:#f0b7af}.danger-button:hover{background:#fff5f4;border-color:#e07469}.upload-button{position:relative;overflow:hidden}.upload-button.loading{border-color:#7c8f5f;background:#f5f8ed;color:#2f3b1f;cursor:wait}.upload-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.upload-button input:disabled{cursor:wait}.upload-orbit{width:18px;height:18px;display:inline-grid;place-items:center;border-radius:50%}.upload-button.loading .upload-orbit{animation:scan-spin .9s linear infinite}.icon-button,.secondary-button,.segmented button{padding:0 14px;background:#fff;color:var(--text);border-color:var(--line)}.recipes-actions-header{justify-content:flex-end}.icon-button{width:40px;padding:0}.field{display:grid;grid-gap:8px;gap:8px;color:var(--muted)}.date-input,.field input,.field select,.field textarea,.input-with-icon,.meal-card select,.settings-grid input,.wide-input,.wide-textarea{min-height:42px;width:100%;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--text);padding:0 12px}.field textarea,.wide-textarea{min-height:120px;padding:12px;resize:vertical;line-height:1.45}.input-with-icon{display:flex;align-items:center;gap:8px}.input-with-icon input{border:none;outline:none;min-height:38px;width:100%}.planner-grid,.recipe-form-grid,.recipe-grid,.ring-grid,.settings-grid,.target-grid{display:grid;grid-gap:12px;gap:12px}.recipe-form-grid,.ring-grid,.settings-grid,.target-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.recipe-form-grid{grid-template-columns:2fr 1fr 160px}.ingredient-editor{display:grid;grid-gap:10px;gap:10px}.ingredient-editor-header,.ingredient-editor-row{display:grid;grid-template-columns:minmax(72px,.5fr) minmax(86px,.55fr) minmax(180px,1.8fr) auto;grid-gap:10px;gap:10px;align-items:center}.ingredient-editor-header{color:var(--muted);font-size:.82rem}.ingredient-editor-row input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--text);font:inherit}.ingredient-editor-row input:focus{border-color:var(--accent);outline:3px solid rgba(18,18,18,.08)}.ingredient-add-button{width:-moz-fit-content;width:fit-content}.planner-grid{grid-template-columns:repeat(7,minmax(160px,1fr));overflow-x:auto}.planner-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px}.planner-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px}.week-date-input{width:150px}.week-navigator{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));grid-gap:10px;gap:10px;overflow-x:auto}.week-navigator button{min-height:64px;display:grid;align-content:center;justify-items:start;grid-gap:4px;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--text);text-align:left}.week-navigator button.active{border-color:var(--accent);background:var(--surface-soft)}.planner-help,.week-navigator small{color:var(--muted)}.planner-help{line-height:1.45}.autosave-status{min-height:40px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);color:var(--muted)}.autosave-status.saved{border-color:#cddbc7;background:#f4f8f1;color:#2f5d35}.autosave-status.error{border-color:#f0b7af;background:#fff5f4;color:#b42318}.recipe-grid{align-items:start;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}.ai-scan-panel{min-height:74px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;grid-gap:14px;gap:14px;padding:14px 16px;border:1px solid #d6dfc0;border-radius:var(--radius);background:#f8faef}.ai-scan-panel p{margin-top:4px;color:var(--muted)}.upload-status-panel{padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);color:var(--muted)}.ai-scan-visual{position:relative;width:46px;height:46px;display:grid;place-items:center;border:1px solid #cbd7ad;border-radius:50%;background:#fff;overflow:hidden}.ai-scan-visual:before{content:"";position:absolute;inset:6px;border-radius:50%;border:2px solid #dfe8c9;border-top-color:#6f823f;animation:scan-spin .95s linear infinite}.ai-scan-visual:after{content:"";position:absolute;left:8px;right:8px;height:2px;border-radius:999px;background:#6f823f;box-shadow:0 0 12px rgba(111,130,63,.5);animation:scan-sweep 1.4s ease-in-out infinite}.ai-scan-visual span{width:4px;height:4px;border-radius:50%;background:#6f823f;animation:scan-pulse 1s ease-in-out infinite}.ai-scan-visual span:nth-child(2){animation-delay:.14s}.ai-scan-visual span:nth-child(3){animation-delay:.28s}.chip-cloud,.recipe-strip{display:flex;flex-wrap:wrap;gap:10px}.compact-card,.empty-state,.list-row,.meal-card,.product-group,.recipe-card,.ring-card{display:grid;grid-gap:10px;gap:10px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.recipe-card{position:relative;grid-template-rows:170px minmax(0,1fr);gap:0;height:440px;padding:0;overflow:hidden}.favorite-button{position:absolute;top:12px;right:12px;z-index:2;width:40px;height:40px;display:inline-grid;place-items:center;border:1px solid rgba(255,255,255,.72);border-radius:50%;background:rgba(255,255,255,.9);color:#5d6b50;box-shadow:0 6px 16px rgba(0,0,0,.12)}.favorite-button.active{color:#b45309}.recipe-card>strong{display:-webkit-box;min-height:2.5em;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.25}.recipe-card-media{display:grid;place-items:center;min-height:0;overflow:hidden;background:radial-gradient(circle at 30% 20%,#f8f5ec,transparent 34%),linear-gradient(135deg,#eff3e8,#dfe8d8);color:#5a704f}.recipe-card-media.has-image{background:#ecece6}.recipe-card-media.generated{padding:18px}.recipe-card-media img{width:100%;height:100%;object-fit:cover}.recipe-card-fallback{width:100%;height:100%;display:grid;align-content:center;justify-items:center;grid-gap:10px;gap:10px;padding:18px;background:radial-gradient(circle at 72% 24%,rgba(88,122,82,.18),transparent 24%),radial-gradient(circle at 28% 72%,rgba(194,65,12,.12),transparent 26%),linear-gradient(135deg,#f7f5ed,#e5ecde);text-align:center}.recipe-card-fallback span{max-width:90%;overflow:hidden;color:#405b3d;font-weight:700;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap}.recipe-card-body{min-height:0;display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;grid-gap:12px;gap:12px;padding:18px}.recipe-card-action,.recipe-card-stats,.recipe-card-title-row{display:flex;align-items:center;gap:10px}.recipe-card-title-row{justify-content:space-between;color:var(--muted);font-size:.85rem}.recipe-pill{max-width:58%;padding:6px 10px;overflow:hidden;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);color:var(--text);text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize}.recipe-card-body>strong{display:-webkit-box;min-height:2.55em;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.25;font-size:1.45rem}.recipe-card-stats{flex-wrap:wrap;color:var(--muted)}.recipe-card-action,.recipe-card-stats span{display:inline-flex;align-items:center;gap:6px}.recipe-card-body p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;color:var(--muted);line-height:1.42}.recipe-card .recipe-card-action{width:-moz-fit-content;width:fit-content;min-height:38px;padding:0 12px;border-radius:var(--radius);background:#2f5d35;color:#fff;font-weight:600}.recipe-card .recipe-card-action svg{color:#fff}.recipe-controls{display:grid;grid-template-columns:minmax(260px,1fr) minmax(150px,220px) minmax(150px,220px) auto;grid-gap:10px;gap:10px;align-items:center}.recipe-search{background:#fff}.favorite-filter.active{border-color:#d97706;background:#fff7ed;color:#92400e}.recipe-empty-state{grid-column:1/-1}@keyframes scan-spin{to{transform:rotate(1turn)}}@keyframes scan-sweep{0%,to{top:10px}50%{top:34px}}@keyframes scan-pulse{0%,to{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.clickable-card{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.clickable-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow);transform:translateY(-1px)}.ring-card{grid-template-columns:76px minmax(0,1fr);align-items:center;gap:16px;min-height:126px;padding:18px}.ring-card.over{border-color:#d97706}.ring-card-copy{min-width:0;display:grid;align-content:center;grid-gap:5px;gap:5px}.ring-card-goal,.ring-card-value{display:block;line-height:1.25;overflow-wrap:anywhere}.ring-card-value{font-size:1.12rem}.ring-card-goal{color:var(--muted);font-size:.9rem}.ring-svg{width:76px;height:76px;transform:rotate(-90deg)}.ring-progress,.ring-track{fill:none;stroke-width:8}.ring-track{stroke:var(--line)}.ring-progress{stroke-linecap:round}.segmented{display:flex;flex-wrap:wrap;gap:6px}.segmented button.active{background:var(--accent);color:#fff}.macro-bars{height:280px;grid-template-columns:repeat(7,minmax(60px,1fr));grid-gap:12px;gap:12px;padding-top:18px}.bar-day,.macro-bars{display:grid;align-items:flex-end}.bar-day{grid-gap:8px;gap:8px;min-height:100%;text-align:center}.bar-pair{height:230px;display:flex;align-items:flex-end;justify-content:center;gap:6px;border-bottom:1px solid var(--line-strong)}.bar{width:18px;min-height:4px;border-radius:5px 5px 0 0}.bar.target{background:#c8c8c0}.meal-card{align-content:start}.chip-cloud span{padding:8px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft)}.product-group summary{list-style:none;cursor:pointer}.card-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.small-button{min-height:32px;padding:0 10px}.ingredient-preview{margin:0;padding-left:18px;max-height:124px;overflow:hidden}.ingredient-preview li{line-height:1.35}.card-footnote{align-self:end;padding-top:4px;border-top:1px solid var(--line);font-size:.9rem}.tag-row{display:flex;flex-wrap:wrap;gap:8px}.tag-row span{padding:6px 9px;border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:.82rem}.recipe-instructions{color:var(--muted);line-height:1.45;white-space:pre-wrap}.modal-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:28px;background:rgba(21,21,21,.42)}.recipe-modal{width:min(980px,100%);max-height:min(86vh,900px);display:grid;grid-gap:18px;gap:18px;overflow:auto;padding:24px;border:1px solid var(--line);border-radius:calc(var(--radius) + 6px);background:var(--surface);box-shadow:0 24px 80px rgba(0,0,0,.24)}.recipe-preview-modal{width:min(1280px,100%)}.recipe-preview-hero{height:min(34vh,360px);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft)}.recipe-preview-hero img{width:100%;height:100%;object-fit:cover}.recipe-editor-stack{display:grid;grid-gap:14px;gap:14px}.cookbook-layout{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(420px,1.1fr);grid-gap:16px;gap:16px;align-items:start}.cookbook-layout section{display:grid;align-content:start;grid-gap:14px;gap:14px;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft)}.cookbook-list{display:grid;grid-gap:12px;gap:12px;margin:0;padding-left:20px}.cookbook-list li{line-height:1.4}.instruction-list{padding-left:24px}.empty-state{justify-items:start;background:var(--surface-soft)}.empty-state p{color:var(--muted);line-height:1.45}.product-group summary::-webkit-details-marker{display:none}.matched-products{display:grid;grid-gap:14px;gap:14px}.cart-wizard-sections{display:grid;grid-gap:18px;gap:18px}.cart-section{display:grid;grid-gap:10px;gap:10px}.cart-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 4px}.cart-section-header span{color:var(--muted)}.product-group{padding:0;overflow:hidden}.product-group.needs-review{border-color:#d58a78;background:#fffaf7}.product-group summary{display:grid;grid-template-columns:minmax(170px,.8fr) minmax(360px,2.2fr) minmax(150px,.7fr);align-items:center;grid-gap:18px;gap:18px;padding:16px}.ingredient-need{display:grid;grid-gap:6px;gap:6px}.ingredient-title-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.ready-badge,.review-badge{display:inline-flex;align-items:center;gap:5px;width:-moz-fit-content;width:fit-content;padding:4px 8px;border:1px solid var(--line);border-radius:999px;font-size:.78rem}.review-badge{border-color:#d58a78;color:#a04735;background:#fff2ed}.ready-badge{border-color:#b9c9ae;color:#4c6f40;background:#f2f7ee}.product-card{display:grid;grid-template-columns:96px minmax(0,1fr) auto;align-items:center;grid-gap:14px;gap:14px;min-width:0;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.product-card.featured{background:var(--surface-soft)}.product-card.review-product{border-color:#d58a78}.product-option-button{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;text-align:left;font:inherit}.product-option-button:hover .product-card{border-color:var(--accent)}.compact-action{min-height:34px;padding:0 10px;font-size:.86rem}.product-image-frame{width:96px;height:96px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--muted);font-size:.78rem}.product-image-frame img{width:100%;height:100%;object-fit:contain}.product-copy{display:grid;grid-gap:6px;gap:6px;min-width:0}.product-copy strong{line-height:1.25}.product-actions,.product-meta{display:grid;grid-gap:6px;gap:6px;justify-items:end;text-align:right}.remove-product-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);cursor:pointer;font:inherit;font-size:.86rem}.remove-product-button:hover{color:var(--text);border-color:var(--line-strong)}.quantity-control{display:grid;grid-gap:6px;gap:6px;justify-items:end}.quantity-input{width:78px;min-height:44px;padding:6px 10px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--text);font:inherit;font-weight:700;text-align:center}.quantity-input:focus{border-color:var(--accent);outline:3px solid rgba(18,18,18,.08)}.qty-label{font-size:.82rem}.alternative-grid{display:grid;grid-gap:10px;gap:10px;padding:0 16px 16px}.empty-product{grid-template-columns:1fr}.toast{position:fixed;right:24px;bottom:24px;max-width:360px;padding:12px 14px;border-radius:var(--radius);background:var(--accent);color:#fff;box-shadow:var(--shadow)}.undo-toast{display:flex;align-items:center;gap:14px;background:#fff;color:var(--text);border:1px solid var(--line)}.undo-toast button{min-height:32px;padding:0 12px;border:1px solid var(--accent);border-radius:999px;background:var(--accent);color:#fff;cursor:pointer;font:inherit}.helper-panel{display:grid;grid-gap:8px;gap:8px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft)}.helper-panel p{margin:0;color:var(--muted);line-height:1.45}.helper-panel code{width:-moz-fit-content;width:fit-content;max-width:100%;padding:8px 10px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}@media (max-width:980px){.app-frame{grid-template-columns:1fr}.sidebar{position:static;height:auto}.recipe-form-grid,.ring-grid,.settings-grid,.target-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ring-card{min-height:118px}}@media (max-width:640px){.workspace{padding:18px}.button-row,.cart-wizard-actions,.cart-wizard-hero,.collapsible-summary,.planner-actions,.planner-toolbar,.section-header,.summary-actions,.workspace-header{align-items:stretch;flex-direction:column}.cart-wizard-hero,.macro-bars,.recipe-form-grid,.ring-grid,.settings-grid,.target-grid{grid-template-columns:1fr}.ring-card{grid-template-columns:76px minmax(0,1fr)}.bar-pair{height:120px}.cookbook-layout,.ingredient-editor-header,.ingredient-editor-row,.product-card,.product-group summary,.recipe-controls,.shopping-item-row{grid-template-columns:1fr}.ingredient-editor-header{display:none}.week-navigator{grid-template-columns:1fr}.week-date-input{width:100%}.product-actions,.product-meta,.quantity-control{justify-items:start;text-align:left}}