:root{--cream: #faf7f2;--cream-dark: #f0e6d6;--surface: #fffefb;--surface-raised: #ffffff;--border: #e8d8c4;--border-light: #f0e6d8;--terracotta: #c25b2b;--terracotta-dark: #9e4420;--terracotta-light: #fceee6;--terracotta-mid: #e8aa8c;--sage: #5c8a62;--sage-dark: #3e6644;--sage-light: #e8f4ea;--sage-mid: #aed0b2;--amber: #b87d0e;--amber-dark: #8a5d00;--amber-light: #fdf4e0;--amber-mid: #e4c068;--text: #2c1a0e;--text-muted: #7a6050;--text-light: #b0988a;--font: "Nunito", "Segoe UI", system-ui, sans-serif;--font-display: "Playfair Display", Georgia, "Times New Roman", serif;--radius-xs: 6px;--radius-sm: 10px;--radius-md: 16px;--radius-lg: 24px;--shadow-sm: 0 2px 8px rgba(80, 35, 10, .07);--shadow-md: 0 6px 20px rgba(80, 35, 10, .11);--shadow-lg: 0 12px 40px rgba(80, 35, 10, .16)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{font-family:var(--font);background:var(--cream);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:#3d1f0e;padding:26px 24px;position:relative;overflow:hidden}.app-header:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 0% 110%,rgba(194,91,43,.3) 0%,transparent 55%),radial-gradient(ellipse at 100% -10%,rgba(92,138,98,.18) 0%,transparent 55%);pointer-events:none}.header-inner{max-width:1200px;margin:0 auto;position:relative}.app-header h1{font-family:var(--font-display);font-size:2.4rem;font-weight:700;color:#fdf7f0;line-height:1.15;letter-spacing:-.01em}.tagline{color:#fdf7f08c;font-size:.9rem;margin-top:4px;font-weight:400}.app-main{max-width:1200px;margin:0 auto;padding:32px 24px 64px;width:100%;display:flex;flex-direction:column;gap:32px}.settings-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:28px;box-shadow:var(--shadow-sm)}.settings-panel>h2{font-family:var(--font-display);font-size:1.3rem;color:var(--terracotta);margin-bottom:20px;padding-bottom:14px;border-bottom:1.5px solid var(--border)}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:22px;align-items:start}.setting-group{display:flex;flex-direction:column;gap:8px}.setting-label{font-weight:700;font-size:.78rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;justify-content:space-between}.setting-value{background:var(--terracotta);color:#fff;border-radius:99px;padding:1px 9px;font-size:.78rem;font-weight:700;min-width:24px;text-align:center;text-transform:none;letter-spacing:0}.cuisine-checkboxes{display:flex;flex-wrap:wrap;gap:7px}.checkbox-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:99px;border:1.5px solid var(--border);background:var(--cream);font-size:.83rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none}.checkbox-chip input{display:none}.checkbox-chip:hover{border-color:var(--terracotta-mid);color:var(--terracotta-dark);background:var(--terracotta-light)}.checkbox-chip.checked{border-color:var(--terracotta);background:var(--terracotta-light);color:var(--terracotta-dark)}.seg-control{display:inline-flex;border:1.5px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;align-self:flex-start;background:var(--cream)}.seg-btn{padding:6px 15px;border:none;background:transparent;font-family:var(--font);font-size:.9rem;font-weight:700;color:var(--text-muted);cursor:pointer;transition:all .15s;border-right:1.5px solid var(--border)}.seg-btn:last-child{border-right:none}.seg-btn.active{background:var(--terracotta);color:#fff}.seg-btn:hover:not(.active){background:var(--terracotta-light);color:var(--terracotta-dark)}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;border-radius:3px;background:var(--cream-dark);outline:none;cursor:pointer;accent-color:var(--terracotta)}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--terracotta);cursor:pointer;border:3px solid white;box-shadow:0 0 0 2px var(--terracotta),var(--shadow-sm)}.slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--terracotta);cursor:pointer;border:3px solid white;box-shadow:0 0 0 2px var(--terracotta)}.slider-labels{display:flex;justify-content:space-between;font-size:.72rem;color:var(--text-light)}.text-input,.select-input{width:100%;padding:8px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--cream);font-family:var(--font);font-size:.9rem;color:var(--text);transition:border-color .15s,box-shadow .15s;outline:none}.text-input:focus,.select-input:focus{border-color:var(--terracotta);box-shadow:0 0 0 3px var(--terracotta-light);background:var(--surface-raised)}.text-input::placeholder{color:var(--text-light)}.textarea{resize:vertical;min-height:72px}.select-input{cursor:pointer}.hint-text{font-size:.78rem;color:var(--text-light);margin-top:2px}.warning-text{font-size:.78rem;color:var(--terracotta);font-weight:600}.protein-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.protein-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:99px;background:var(--terracotta-light);border:1px solid var(--terracotta-mid);font-size:.8rem;font-weight:600;color:var(--terracotta-dark)}.protein-qty{font-size:.72rem;font-weight:700;background:var(--terracotta);color:#fff;border-radius:99px;padding:1px 6px}.generate-row{margin-top:22px;padding-top:18px;border-top:1.5px solid var(--border);display:flex;gap:10px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border:1.5px solid transparent;border-radius:var(--radius-sm);font-family:var(--font);font-size:.9rem;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-primary{background:var(--terracotta);color:#fff;box-shadow:0 2px 8px #c25b2b47}.btn-primary:not(:disabled):hover{background:var(--terracotta-dark);box-shadow:0 4px 14px #c25b2b5c;transform:translateY(-1px)}.btn-secondary{background:transparent;border-color:var(--border);color:var(--text-muted)}.btn-secondary:not(:disabled):hover{background:var(--cream-dark);color:var(--text);border-color:var(--text-light)}.btn-sm{padding:5px 12px;font-size:.78rem;border-radius:var(--radius-xs)}.btn-generate{font-size:1rem;padding:11px 24px}.btn-reset{background:transparent;color:var(--text-muted);border:1.5px solid var(--border);font-size:.85rem;padding:8px 14px}.btn-reset:hover{color:#c04040;border-color:#e08080;background:#fff0f0}.weeks-container{display:flex;flex-direction:column;gap:40px}.week-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;padding-bottom:12px;border-bottom:2px solid var(--border)}.week-header h2{font-family:var(--font-display);font-size:1.55rem;font-weight:600;color:var(--text);letter-spacing:-.01em}.meals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}.meal-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--terracotta);border-radius:var(--radius-md);padding:16px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s}.meal-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.meal-card.card-leftovers{border-left-color:var(--sage)}.meal-card.eating-out{border-left-color:var(--amber);background:var(--amber-light);opacity:.88}.meal-card.leftover-unassigned{border-left-color:var(--sage);background:var(--sage-light);border-style:dashed;border-left-style:solid;opacity:.72;box-shadow:none}.meal-card.leftover-unassigned:hover{box-shadow:none;transform:none}.meal-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.meal-label{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:99px;font-size:.7rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}.label-cooking{background:var(--terracotta-light);color:var(--terracotta-dark)}.label-leftovers{background:var(--sage-light);color:var(--sage-dark)}.label-eating-out{background:var(--amber-light);color:var(--amber-dark)}.meal-cuisine{font-size:.73rem;color:var(--text-muted);font-weight:600;white-space:nowrap}.meal-name-row{display:flex;align-items:flex-start;gap:6px}.meal-name{font-size:1rem;font-weight:700;color:var(--text);line-height:1.35;flex:1;letter-spacing:-.01em}.recipe-search-link{font-size:.78rem;color:var(--text-light);text-decoration:none;padding:2px 5px;border-radius:4px;flex-shrink:0;margin-top:1px;transition:color .15s,background .15s}.recipe-search-link:hover{color:var(--terracotta);background:var(--terracotta-light)}.cross-week-badge{display:inline-flex;align-items:center;gap:4px;font-size:.7rem;font-weight:700;color:var(--sage-dark);background:var(--sage-light);border:1px solid var(--sage-mid);border-radius:99px;padding:2px 8px;align-self:flex-start}.cook-extra-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:var(--radius-xs);border:1.5px dashed var(--border);background:transparent;font-family:var(--font);font-size:.77rem;font-weight:700;color:var(--text-muted);cursor:pointer;transition:all .15s;align-self:flex-start}.cook-extra-btn:hover:not(.disabled):not(:disabled){border-style:solid;border-color:var(--sage);color:var(--sage-dark);background:var(--sage-light)}.cook-extra-btn.active{border-style:solid;border-color:var(--sage);background:var(--sage-light);color:var(--sage-dark)}.cook-extra-btn.disabled,.cook-extra-btn:disabled{opacity:.38;cursor:not-allowed}.diet-badges{display:flex;flex-wrap:wrap;gap:5px}.diet-badge{display:inline-flex;align-items:center;gap:3px;font-size:.67rem;font-weight:700;padding:2px 7px;border-radius:99px;background:var(--cream-dark);color:var(--text-muted);white-space:nowrap}.diet-badge-vegan{background:#e4f4e4;color:#2a6e2e}.diet-badge-vegetarian{background:#eaf4e6;color:#3a6e28}.diet-badge-pescatarian{background:#e4eef8;color:#26548a}.diet-badge-glutenfree{background:var(--amber-light);color:var(--amber-dark)}.unassigned-hint{font-size:.82rem;color:var(--sage-dark);font-style:italic;line-height:1.45;flex:1}.meal-actions{display:flex;align-items:center;gap:6px;padding-top:8px;border-top:1px solid var(--border-light);margin-top:auto}.action-group{display:flex;align-items:center;gap:3px}.action-group+.action-group{margin-left:auto}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:transparent;border-radius:var(--radius-xs);cursor:pointer;font-size:.88rem;color:var(--text-muted);transition:all .12s;padding:0}.icon-btn:hover:not(:disabled){background:var(--cream-dark);color:var(--text)}.icon-btn:disabled{opacity:.25;cursor:not-allowed}.icon-btn.active-up{background:var(--sage-light);color:var(--sage-dark)}.icon-btn.active-down{background:var(--terracotta-light);color:var(--terracotta-dark)}.icon-btn.active-eat{background:var(--amber-light);color:var(--amber-dark)}.delete-btn{color:var(--text-light);font-size:.78rem}.delete-btn:hover{background:#fff0f0;color:#c04040}.edit-btn{color:var(--text-light)}.edit-btn:hover{background:var(--cream-dark);color:var(--text)}.shopping-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:28px;box-shadow:var(--shadow-sm)}.shopping-list-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:24px;padding-bottom:16px;border-bottom:1.5px solid var(--border)}.shopping-list-header h2{font-family:var(--font-display);font-size:1.3rem;color:var(--terracotta);margin-bottom:4px}.shopping-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:24px}.shopping-category{display:flex;flex-direction:column;gap:8px}.category-title{font-family:var(--font);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);padding-bottom:7px;border-bottom:2px solid var(--border);display:flex;align-items:center;gap:6px}.shopping-category ul{list-style:none;display:flex;flex-direction:column;gap:5px}.shopping-category li{font-size:.875rem;color:var(--text);padding:3px 0;display:flex;align-items:center;gap:7px}.shopping-category li:before{content:"·";color:var(--terracotta);font-weight:700;font-size:1.2em;line-height:1;flex-shrink:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2c1a0e8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--surface-raised);border-radius:var(--radius-lg);padding:28px;width:100%;max-width:440px;box-shadow:var(--shadow-lg)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal-header h2{font-family:var(--font-display);font-size:1.35rem;color:var(--text)}.close-btn{color:var(--text-light);font-size:.85rem}.close-btn:hover{color:var(--text);background:var(--cream-dark)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-group label{font-weight:700;font-size:.82rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.empty-state{text-align:center;padding:64px 24px;color:var(--text-muted)}.empty-icon{font-size:3.5rem;margin-bottom:16px;line-height:1}.empty-state p{font-size:1rem;max-width:380px;margin:0 auto;line-height:1.65}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 2px}.calendar-plan-label{font-size:.82rem;color:var(--text-muted);font-weight:600}.calendar-container{display:flex;flex-direction:column;gap:48px}.cal-month-title{font-family:var(--font-display);font-size:1.45rem;font-weight:600;color:var(--text);letter-spacing:-.01em;margin-bottom:14px;padding-bottom:12px;border-bottom:2px solid var(--border)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;align-items:start}.cal-cell{border-radius:var(--radius-sm);min-height:44px}.cal-filler{background:transparent}.cal-outside{padding:8px 10px;opacity:.35}.cal-outside .cal-day-num{color:var(--text-muted)}.cal-in-plan{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:8px 10px;display:flex;flex-direction:column;gap:7px;box-shadow:var(--shadow-sm);transition:box-shadow .2s}.cal-in-plan.is-empty{background:var(--cream);border:1.5px dashed var(--border);box-shadow:none}.cal-in-plan.is-today{border-color:var(--terracotta);box-shadow:0 0 0 1px var(--terracotta),var(--shadow-sm)}.cal-outside.is-today .cal-day-num,.cal-in-plan.is-today .cal-day-num{background:var(--terracotta);color:#fff;border-radius:50%;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem}.cal-day-header{display:flex;align-items:center;justify-content:space-between;gap:4px}.cal-dow-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-light)}.cal-day-num{font-size:.82rem;font-weight:700;color:var(--text-muted);line-height:1}.cal-empty-slot{flex:1;display:flex;align-items:center;justify-content:center;min-height:36px}.cal-add-btn{font-family:var(--font);font-size:.7rem;font-weight:600;color:var(--text-light);border:1.5px dashed var(--border);background:transparent;border-radius:var(--radius-xs);padding:4px 8px;cursor:pointer;transition:all .15s;white-space:nowrap}.cal-add-btn:hover{color:var(--terracotta-dark);border-color:var(--terracotta-mid);background:var(--terracotta-light)}.cal-meal-card{display:flex;flex-direction:column;gap:5px;border-left:3px solid var(--terracotta);padding-left:7px;margin-left:-3px}.cal-meal-card.cal-leftovers{border-left-color:var(--sage)}.cal-meal-card.eating-out{border-left-color:var(--amber)}.cal-meal-card.leftover-unassigned{border-left-color:var(--sage);opacity:.75}.cal-meal-top{display:flex;align-items:flex-start;justify-content:space-between;gap:4px}.cal-meal-name-row{display:flex;align-items:flex-start;gap:4px}.cal-meal-name{font-size:.83rem;font-weight:700;color:var(--text);line-height:1.3;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;letter-spacing:-.01em}.cal-meal-cuisine{font-size:.67rem;color:var(--text-muted);font-weight:600;white-space:nowrap}.unassigned-hint-cal{font-size:.72rem;color:var(--sage-dark);font-style:italic;line-height:1.4}.cal-meal-actions{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding-top:5px;border-top:1px solid var(--border-light);margin-top:2px}.cal-meal-actions .icon-btn{width:24px;height:24px;font-size:.78rem}.cal-meal-actions .action-group{display:flex;align-items:center;gap:1px}.cal-meal-actions .action-group+.action-group{margin-left:auto}.drag-grip{height:10px;margin:-2px 0 2px;background-image:radial-gradient(circle,var(--text-light) 1px,transparent 1px);background-size:5px 5px;background-position:center;cursor:grab;border-radius:3px;opacity:.45;transition:opacity .15s}.cal-meal-card:hover .drag-grip{opacity:.75}.cal-meal-card[draggable=true]{cursor:grab}.cal-meal-card[draggable=true]:active{cursor:grabbing}.cal-in-plan.is-drag-source{opacity:.4}.cal-in-plan.is-drag-over{border-color:var(--terracotta)!important;background:var(--terracotta-light)!important;box-shadow:0 0 0 2px var(--terracotta),var(--shadow-md)!important;transform:scale(1.012)}.cal-in-plan.is-drag-over.is-empty{border-style:solid!important}.cal-meal-card.is-dragging{opacity:.3}@media (max-width: 900px){.cal-grid{gap:4px}.cal-in-plan{padding:6px 8px}}@media (max-width: 640px){.app-header{padding:20px 16px}.app-header h1{font-size:1.85rem}.app-main{padding:20px 16px 48px;gap:24px}.settings-panel{padding:20px 16px}.settings-grid{grid-template-columns:1fr}.shopping-grid{grid-template-columns:1fr 1fr}.shopping-list{padding:20px 16px}.modal{padding:20px 16px;border-radius:var(--radius-md)}.cal-grid{overflow-x:auto;min-width:560px}.calendar-container{overflow-x:auto}.cal-month-title{font-size:1.2rem}}@media (max-width: 400px){.shopping-grid{grid-template-columns:1fr}.cuisine-checkboxes{gap:5px}.app-header h1{font-size:1.6rem}}
