:root{--forest:#2f3d24;--forest-light:#3d5130;--olive:#87a657;--olive-hover:#6a8b40;--olive-light:#eef5e5;--olive-mid:#c8dba8;--cream:#faf7f2;--sand:#f0e9dc;--white:#fff;--border:#e5ddd0;--border-dark:#d0c4b0;--text:#2c2a24;--text-muted:#7a7266;--text-light:#797069;--shadow-sm:0 2px 8px #2c2a2412;--shadow-md:0 6px 20px #2c2a241c;--shadow-lg:0 16px 48px #2c2a242e;--radius-sm:6px;--radius-md:10px;--radius-lg:14px}*,:after,:before{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;background:#faf7f2;background:var(--cream);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.5;margin:0}body,h1,h2,h3,h4{color:#2c2a24;color:var(--text)}h1,h2,h3,h4{font-family:Georgia,Times New Roman,serif;font-weight:400;line-height:1.25;margin:0 0 10px}h1{font-size:34px}h2{font-size:24px}h3{font-size:18px}a{color:#87a657;color:var(--olive);text-decoration:none}a:hover{text-decoration:underline}.appLayout{display:flex;min-height:100vh}.mainContent{flex:1 1;min-width:0;padding:40px 44px}.sidebar{background:#2f3d24;background:var(--forest);display:flex;flex-direction:column;flex-shrink:0;height:100vh;padding:32px 16px 24px;position:sticky;top:0;width:240px}.sidebarBrand{margin-bottom:36px;padding:0 10px}.sidebarBrandMark{align-items:center;display:flex;gap:10px;margin-bottom:4px}.sidebarBrand h2{color:#e8ead8;font-family:Georgia,serif;font-size:26px;letter-spacing:.5px;margin:0 0 2px}.sidebarTagline{color:#c8dba8;color:var(--olive-mid);font-size:11px;letter-spacing:.5px;opacity:.8;text-transform:uppercase}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar a{border-radius:6px;border-radius:var(--radius-sm);color:#e8ead8a6;display:block;font-size:14px;font-weight:500;padding:10px 12px;text-decoration:none;transition:background .15s,color .15s}.sidebar a:hover{background:#87a6572e;color:#e8ead8;text-decoration:none}.sidebar a.active{background:#87a657;background:var(--olive);color:#fff}.sidebarLogout{margin-top:auto;padding-top:20px}.sidebarLogout button{background:#ffffff12;border:1px solid #ffffff1a;border-radius:6px;border-radius:var(--radius-sm);color:#e8ead899;cursor:pointer;font-size:13px;font-weight:500;padding:9px 14px;transition:background .15s,color .15s;width:100%}.sidebarLogout button:hover{background:#ffffff24;color:#e8ead8}.authLayout{display:flex;height:100vh;height:100dvh}.authBrand{background:#2f3d24;background:var(--forest);color:#e8ead8;display:flex;flex:1 1;flex-direction:column;justify-content:center;overflow:hidden;padding:80px;position:relative}.authBrand:after,.authBrand:before{background:#87a65714;border-radius:50%;content:"";pointer-events:none;position:absolute}.authBrand:before{bottom:-120px;height:420px;right:-100px;width:420px}.authBrand:after{background:#87a6570f;height:220px;left:-60px;top:-60px;width:220px}.authBrandLogo{margin-bottom:20px;opacity:.9}.authBrand h1{color:#e8ead8;font-size:52px;letter-spacing:.5px;margin-bottom:12px}.authBrandTagline{color:#c8dba8;color:var(--olive-mid);font-size:18px;line-height:1.65;margin:0 0 32px;max-width:340px}.authFeatureList{display:flex;flex-direction:column;gap:12px;list-style:none;margin:0;padding:0}.authFeatureList li{color:#e8ead899;font-size:14px;line-height:1.4;padding-left:20px;position:relative}.authFeatureList li:before{background:#c8dba8;background:var(--olive-mid);border-radius:50%;content:"";height:6px;left:0;opacity:.7;position:absolute;top:7px;width:6px}.authFormArea{align-items:center;background:#faf7f2;background:var(--cream);display:flex;flex:1 1;justify-content:center}.authBox{background:#fff;background:var(--white);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 16px 48px #2c2a242e;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;padding:42px;width:340px}.authBox h2{font-size:22px;margin-bottom:26px;text-align:center}.authBox input{background:#fff;border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:12px;padding:11px 14px;transition:border-color .15s;width:100%}.authBox input:focus{border-color:#87a657;border-color:var(--olive);outline:none}.authBox button{font-size:14px;margin-top:6px;padding:11px}.authField{margin-bottom:12px}.authField label{color:#7a7266;color:var(--text-muted);display:block;font-size:13px;font-weight:500;margin-bottom:5px}.authField .passwordField,.authField input{margin-bottom:0}.authSwitch{color:#7a7266;color:var(--text-muted);font-size:13px;margin-top:18px;text-align:center}.authSwitch a{color:#87a657;color:var(--olive)}.forgotPasswordBtn{background:none;border:none;color:#7a7266;color:var(--text-muted);cursor:pointer;font-size:13px;margin-top:4px;padding:4px 0;text-align:left}.forgotPasswordBtn:hover{background:none;color:#87a657;color:var(--olive);text-decoration:underline}.setupPage{padding:40px}.setupOptions{display:flex;gap:16px;margin-top:30px}.setupCard{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 6px 20px #2c2a241c;box-shadow:var(--shadow-md);margin-top:30px;max-width:420px;padding:32px}.confirmJoin{background:#eef5e5;background:var(--olive-light);border:1px solid #c8dba8;border:1px solid var(--olive-mid);border-radius:6px;border-radius:var(--radius-sm);margin-top:16px;padding:14px}.backButton{background:none;border:none;color:#7a7266;color:var(--text-muted);cursor:pointer;font-size:14px;margin-bottom:14px;padding:0}.backButton:hover{background:none;color:#2c2a24;color:var(--text)}.card{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 2px 8px #2c2a2412;box-shadow:var(--shadow-sm);margin-bottom:20px;padding:24px}button{background:#87a657;background:var(--olive);border:none;border-radius:6px;border-radius:var(--radius-sm);color:#fff;cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;padding:9px 18px;transition:background .15s}button:hover{background:#6a8b40;background:var(--olive-hover)}button:focus-visible{outline:2px solid #87a657;outline:2px solid var(--olive);outline-offset:2px}button:disabled{cursor:default;opacity:.55}.editBtn{background:#f0e9dc;background:var(--sand);border:1px solid #e5ddd0;border:1px solid var(--border);color:#7a7266;color:var(--text-muted);font-size:12px;padding:4px 10px}.editBtn:hover{background:#e5ddd0;background:var(--border);color:#2c2a24;color:var(--text)}.addToPlannerBtn{background:#eef5e5;background:var(--olive-light);border:1px solid #c8dba8;border:1px solid var(--olive-mid);color:#6a8b40;color:var(--olive-hover);font-size:12px;padding:4px 10px}.addToPlannerBtn:hover{background:#87a657;background:var(--olive);border-color:#87a657;border-color:var(--olive);color:#fff}.discardBtn{background:#f0e9dc;background:var(--sand);border:1px solid #e5ddd0;border:1px solid var(--border);color:#7a7266;color:var(--text-muted)}.discardBtn:hover{background:#e5ddd0;background:var(--border);color:#2c2a24;color:var(--text)}input,select,textarea{color:#2c2a24;color:var(--text);font-family:inherit;font-size:14px}input,select{background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);padding:9px 12px;transition:border-color .15s}input:focus,select:focus{border-color:#87a657;border-color:var(--olive);outline:none}input::placeholder{color:#797069;color:var(--text-light)}.error{background:#fce8e6;border:1px solid #f5c6c0;border-radius:6px;border-radius:var(--radius-sm);color:#922b21}.error,.pwSuccess{font-size:13px;margin-bottom:12px;padding:9px 13px}.pwSuccess{background:#d4edda;border:1px solid #b8dfc6;border-radius:6px;border-radius:var(--radius-sm);color:#1e5631}.householdCode{background:#f0e9dc;background:var(--sand);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);font-family:Courier New,monospace;font-size:13px;letter-spacing:2px;padding:3px 10px}.pageHeader{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.pageHeader h2{margin:0}.mealGrid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-top:16px}.mealCard{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);box-shadow:0 2px 8px #2c2a2412;box-shadow:var(--shadow-sm);padding:18px 20px;transition:box-shadow .2s,transform .2s}.mealCard:hover{box-shadow:0 6px 20px #2c2a241c;box-shadow:var(--shadow-md)}.mealCardClickable{cursor:pointer}.mealCardClickable:hover{transform:translateY(-2px)}.mealCardHeader{align-items:flex-start;display:flex;gap:8px;justify-content:space-between;margin-bottom:6px}.mealCardHeader h3{font-size:16px;margin:0}.mealCardActions{display:flex;flex-shrink:0;gap:6px}.mealServes{font-size:13px;margin:0 0 8px}.mealCardHint,.mealServes{color:#7a7266;color:var(--text-muted)}.mealCardHint{font-size:11px;margin:10px 0 0}.ingredientList{color:#7a7266;color:var(--text-muted);font-size:13px;line-height:1.7;margin:0;padding-left:18px}.mealTags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px;margin-top:6px}.mealTag{background:#eef5e5;background:var(--olive-light);border:1px solid #c8dba8;border:1px solid var(--olive-mid);border-radius:20px;color:#6a8b40;color:var(--olive-hover);font-size:11px;font-weight:500;padding:2px 9px}.tagInputArea{align-items:center;background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);cursor:text;display:flex;flex-wrap:wrap;gap:6px;min-height:42px;padding:6px 8px;transition:border-color .15s}.tagInputArea:focus-within{border-color:#87a657;border-color:var(--olive)}.tagInputArea input{background:#0000;border:none;flex:1 1;font-size:14px;min-width:120px;outline:none;padding:2px 4px}.tagChip{align-items:center;background:#eef5e5;background:var(--olive-light);border:1px solid #c8dba8;border:1px solid var(--olive-mid);border-radius:20px;display:flex;font-size:12px;gap:4px;padding:2px 8px}.tagChip,.tagRemove{color:#6a8b40;color:var(--olive-hover)}.tagRemove{background:none;border:none;cursor:pointer;font-size:14px;line-height:1;padding:0}.tagRemove:hover{background:none;color:#922b21}.mealsControls{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.searchInput{max-width:380px;width:100%}.tagFilters{display:flex;flex-wrap:wrap;gap:6px}.tagFilterChip{background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:20px;color:#7a7266;color:var(--text-muted);cursor:pointer;font-size:13px;padding:4px 14px;transition:all .15s}.tagFilterChip:hover{background:#eef5e5;background:var(--olive-light);color:#6a8b40;color:var(--olive-hover)}.tagFilterChip.active,.tagFilterChip:hover{border-color:#87a657;border-color:var(--olive)}.tagFilterChip.active{background:#87a657;background:var(--olive);color:#fff}.tagFilterChip.active:hover{background:#6a8b40;background:var(--olive-hover);border-color:#6a8b40;border-color:var(--olive-hover)}.mealForm{max-width:600px}.formGroup{display:flex;flex-direction:column;gap:5px;margin-bottom:18px}.formGroup label{color:#7a7266;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.formGroup .passwordField,.formGroup input{box-sizing:border-box;width:100%}.ingredientRow{align-items:center;display:flex;gap:8px;margin-bottom:8px}.ingredientRow input:first-child{flex:3 1}.ingredientRow input:nth-child(2),.ingredientRow input:nth-child(3){flex:1 1;min-width:0}.sectionSelect{flex:1.5 1;min-width:0}.removeBtn{background:#fce8e6;border:1px solid #f5c6c0;color:#922b21;flex-shrink:0;font-size:16px;line-height:1;padding:6px 10px}.removeBtn:hover{background:#f5c6c0}.addIngredientBtn{background:none;border:2px dashed #c8dba8;border:2px dashed var(--olive-mid);border-radius:6px;border-radius:var(--radius-sm);color:#6a8b40;color:var(--olive-hover);font-size:14px;margin-bottom:24px;margin-top:4px;padding:9px 14px;width:100%}.addIngredientBtn:hover{background:#eef5e5;background:var(--olive-light);border-color:#87a657;border-color:var(--olive)}.formActions{display:flex;gap:10px;margin-top:8px}.notesTextarea{background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);box-sizing:border-box;color:#2c2a24;color:var(--text);font-family:inherit;font-size:14px;line-height:1.6;min-height:100px;padding:10px 12px;resize:vertical;transition:border-color .15s;width:100%}.notesTextarea:focus{border-color:#87a657;border-color:var(--olive);outline:none}.mealPickerCard{border:1.5px solid #0000;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}.mealPickerCard:hover{border-color:#87a657;border-color:var(--olive);box-shadow:0 6px 20px #2c2a241c;box-shadow:var(--shadow-md);transform:translateY(-2px)}.addToPlannerForm{max-width:480px}.addToPlannerMeal{align-items:baseline;background:#eef5e5;background:var(--olive-light);border:1px solid #c8dba8;border:1px solid var(--olive-mid);border-radius:6px;border-radius:var(--radius-sm);display:flex;gap:12px;padding:14px 18px}.addToPlannerMealName{color:#2c2a24;color:var(--text);font-family:Georgia,serif;font-size:18px}.mealTypeSelector{display:flex;flex-wrap:wrap;gap:8px}.mealTypeBtn{border:2px solid #0000;border-radius:20px;cursor:pointer;font-size:14px;font-weight:600;opacity:.6;padding:7px 18px;transition:opacity .15s,border-color .15s}.mealTypeBtn:hover{opacity:.85}.mealTypeBtn.selected{border-color:currentColor;opacity:1}.modalOverlay{align-items:center;background:#2c2a248c;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.modalBox{background:#fff;background:var(--white);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 16px 48px #2c2a242e;box-shadow:var(--shadow-lg);max-height:86vh;max-width:580px;overflow-y:auto;padding:32px;position:relative;width:100%}.modalClose{background:none;border:none;border-radius:6px;border-radius:var(--radius-sm);color:#797069;color:var(--text-light);cursor:pointer;font-size:22px;line-height:1;padding:4px 8px;position:absolute;right:18px;top:16px}.modalClose:hover{background:#f0e9dc;background:var(--sand);color:#2c2a24;color:var(--text)}.modalSectionTitle{color:#797069;color:var(--text-light);font-family:inherit;font-size:11px;font-weight:700;letter-spacing:.6px;margin:22px 0 8px;text-transform:uppercase}.modalIngredientList{line-height:2;margin:0;padding-left:20px}.modalIngredientList,.recipeNotes{color:#7a7266;color:var(--text-muted);font-size:14px}.recipeNotes{background:#faf7f2;background:var(--cream);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);line-height:1.75;padding:14px 16px;white-space:pre-wrap}.noteLink{color:#87a657;color:var(--olive);word-break:break-all}.noteLink:hover{text-decoration:underline}.plannerPage{display:flex;flex-direction:column}.plannerHeader{flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:20px}.plannerHeader,.plannerNav{align-items:center;display:flex}.plannerNav{gap:8px}.plannerPeriodLabel{color:#2c2a24;color:var(--text);font-family:Georgia,serif;font-size:20px;font-weight:400;min-width:210px;text-align:center}.plannerNavBtn{align-items:center;background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:50%;color:#7a7266;color:var(--text-muted);display:flex;font-size:20px;height:34px;justify-content:center;line-height:1;padding:0;width:34px}.plannerNavBtn:hover{background:#eef5e5;background:var(--olive-light);border-color:#c8dba8;border-color:var(--olive-mid);color:#6a8b40;color:var(--olive-hover)}.plannerTodayBtn{background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#7a7266;color:var(--text-muted);font-size:13px;padding:5px 14px}.plannerTodayBtn:hover{background:#eef5e5;background:var(--olive-light);border-color:#c8dba8;border-color:var(--olive-mid);color:#6a8b40;color:var(--olive-hover)}.plannerViewToggle{background:#fff;background:var(--white);border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);display:flex;overflow:hidden}.viewToggleBtn{background:none;border:none;border-radius:0;color:#7a7266;color:var(--text-muted);cursor:pointer;font-size:13px;font-weight:500;padding:7px 20px}.viewToggleBtn:hover{background:#eef5e5;background:var(--olive-light);color:#6a8b40;color:var(--olive-hover)}.viewToggleBtn.active{background:#87a657;background:var(--olive);color:#fff}.viewToggleBtn.active:hover{background:#6a8b40;background:var(--olive-hover)}.calDowHeaders{grid-gap:3px;display:grid;gap:3px;grid-template-columns:repeat(7,1fr);margin-bottom:3px}.calDowHeader{color:#7a7266;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.6px;padding:6px 0;text-align:center;text-transform:uppercase}.calMonthGrid{grid-gap:3px;display:grid;gap:3px;grid-template-columns:repeat(7,1fr)}.calCell{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);cursor:pointer;min-height:110px;overflow:hidden;padding:8px;transition:background .15s,border-color .15s}.calCell:hover{background:#eef5e5;background:var(--olive-light);border-color:#c8dba8;border-color:var(--olive-mid)}.calCellEmpty{background:#ffffff59;border:1px solid #e5ddd066;border-radius:6px;border-radius:var(--radius-sm);min-height:110px}.calCellToday{background:#eef5e5;background:var(--olive-light);border-color:#87a657!important;border-color:var(--olive)!important}.calCellNum{color:#7a7266;color:var(--text-muted);font-size:13px;font-weight:600;margin-bottom:4px;text-align:right}.calCellToday .calCellNum{color:#6a8b40;color:var(--olive-hover)}.calCellMeals{display:flex;flex-direction:column;gap:2px}.calMealChip{border-radius:3px;font-size:11px;overflow:hidden;padding:2px 5px;text-overflow:ellipsis;white-space:nowrap}.calMealChip-breakfast{background:#fdecc8;color:#7c5c1e}.calMealChip-lunch{background:#eef5e5;color:#4a6b28}.calMealChip-dinner{background:#f5e0d0;color:#7a3e20}.calMealChip-snacks{background:#ede8e0;color:#6b5f52}.calMealMore{color:#7a7266;color:var(--text-muted);font-size:11px;padding:1px 4px}.calWeek{overflow-x:auto}.calWeekGrid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(7,minmax(140px,1fr));min-width:920px}.calWeekDay{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);overflow:hidden}.calWeekDayToday{border-color:#87a657;border-color:var(--olive)}.calWeekDayHeader{align-items:center;background:#f0e9dc;background:var(--sand);border-bottom:1px solid #e5ddd0;border-bottom:1px solid var(--border);display:flex;flex-direction:column;padding:10px 6px 8px}.calWeekDayToday .calWeekDayHeader{background:#eef5e5;background:var(--olive-light)}.calWeekDayName{color:#797069;color:var(--text-light);font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}.calWeekDayNum{color:#2c2a24;color:var(--text);font-size:22px;font-weight:300;line-height:1.2}.calWeekDayNumToday{color:#6a8b40;color:var(--olive-hover);font-weight:600}.calMealSection{border-bottom:1px solid #e5ddd080;padding:6px 8px}.calMealSection:last-child{border-bottom:none}.calMealSectionHeader{align-items:center;display:flex;justify-content:space-between;margin-bottom:4px}.calMealTypeLabel{border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.5px;padding:2px 6px;text-transform:uppercase}.calMealType-breakfast{background:#fdecc8;color:#7c5c1e}.calMealType-lunch{background:#eef5e5;color:#4a6b28}.calMealType-dinner{background:#f5e0d0;color:#7a3e20}.calMealType-snacks{background:#ede8e0;color:#6b5f52}.calAddBtn{align-items:center;background:none;border:2px solid #e5ddd0;border:2px solid var(--border);border-radius:50%;color:#797069;color:var(--text-light);cursor:pointer;display:flex;flex-shrink:0;height:24px;justify-content:center;padding:0;width:24px}.calAddBtn:hover{background:#87a657;background:var(--olive);border-color:#87a657;border-color:var(--olive);color:#fff}.calMealItem{align-items:center;display:flex;gap:4px;justify-content:space-between;padding:3px 0}.calMealItemName{color:#2c2a24;color:var(--text);flex:1 1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calRemoveBtn{background:none;border:none;color:#d0c4b0;color:var(--border-dark);cursor:pointer;flex-shrink:0;font-size:14px;line-height:1;padding:0 2px}.calRemoveBtn:hover{background:none;color:#922b21}.groceryDateRange{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.groceryDateRange label{color:#7a7266;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.groceryProgress{align-items:center;color:#7a7266;color:var(--text-muted);display:flex;font-size:13px;gap:12px;margin-bottom:24px}.groceryProgressBar{background:#e5ddd0;background:var(--border);border-radius:3px;display:inline-block;flex:1 1;height:5px;max-width:200px;overflow:hidden}.groceryProgressFill{background:#87a657;background:var(--olive);border-radius:3px;display:block;height:100%;transition:width .3s}.grocerySection{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);margin-bottom:12px;overflow:hidden}.grocerySectionTitle{background:#f0e9dc;background:var(--sand);border-bottom:1px solid #e5ddd0;border-bottom:1px solid var(--border);color:#7a7266;color:var(--text-muted);font-family:inherit;font-size:11px;font-weight:700;letter-spacing:.6px;margin:0;padding:10px 16px 9px;text-transform:uppercase}.groceryItem{align-items:center;border-bottom:1px solid #e5ddd080;cursor:pointer;display:flex;gap:12px;padding:12px 16px;transition:background .1s}.groceryItem:last-child{border-bottom:none}.groceryItem:hover{background:#faf7f2;background:var(--cream)}.groceryItem input[type=checkbox]{accent-color:#87a657;accent-color:var(--olive);cursor:pointer;flex-shrink:0;height:16px;width:16px}.groceryItemText{align-items:baseline;color:#2c2a24;color:var(--text);display:flex;font-size:14px;gap:6px}.groceryItemQty{color:#7a7266;color:var(--text-muted);font-size:13px;font-weight:500;white-space:nowrap}.groceryItemChecked{background:#faf7f2;background:var(--cream)}.groceryItemChecked .groceryItemText{color:#797069;color:var(--text-light);text-decoration:line-through}.grocerySectionChecked{opacity:.75}.groceryRemoveBtn{background:none;border:none;color:#797069;color:var(--text-light);cursor:pointer;flex-shrink:0;font-size:18px;line-height:1;margin-left:auto;padding:0 4px}.groceryRemoveBtn:hover{color:#922b21}.groceryAddRow{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.groceryAddInput{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#2c2a24;color:var(--text);flex:1 1;font-family:inherit;font-size:14px;min-width:140px;padding:8px 12px}.groceryAddInput:focus{border-color:#87a657;border-color:var(--olive);outline:none}.groceryAddSelect{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#2c2a24;color:var(--text);cursor:pointer;font-family:inherit;font-size:13px;padding:8px 10px}.groceryAddSelect:focus{border-color:#87a657;border-color:var(--olive);outline:none}.groceryAddBtn{background:#87a657;background:var(--olive);border:none;border-radius:6px;border-radius:var(--radius-sm);color:#fff;color:var(--white);cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;padding:8px 16px}.groceryAddBtn:hover{background:#6a8b40;background:var(--olive-hover)}.pantryLayout{grid-gap:24px;align-items:start;display:grid;gap:24px;grid-template-columns:1fr 1fr}.pantryAddRow{align-items:center;display:flex;gap:8px;margin-bottom:4px}.pantryAddRow input:first-child{flex:3 1;min-width:0}.pantryAddRow input:nth-child(2),.pantryAddRow input:nth-child(3){flex:1 1;min-width:0}.pantryList{display:flex;flex-direction:column;gap:4px;margin-top:14px}.pantryItem{align-items:center;background:#faf7f2;background:var(--cream);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);display:flex;gap:8px;padding:9px 12px}.pantryItemName{color:#2c2a24;color:var(--text);flex:1 1;font-size:14px}.pantryItemQty{color:#7a7266;color:var(--text-muted);font-size:13px;white-space:nowrap}.suggestionGroup{margin-bottom:20px}.suggestionGroupHeader{align-items:center;border-radius:6px 6px 0 0;border-radius:var(--radius-sm) var(--radius-sm) 0 0;display:flex;font-family:inherit;font-size:11px;font-weight:700;gap:8px;letter-spacing:.6px;padding:9px 16px;text-transform:uppercase}.suggestionGroupHeader--can{background:#d4edda;color:#1e5631}.suggestionGroupHeader--almost{background:#fff3cd;color:#856404}.suggestionGroupHeader--web{background:#dce8f5;color:#1a3d5c}.suggestionCount{background:#00000014;border-radius:20px;font-size:11px;padding:1px 9px}.suggestionCard{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-top:none;padding:14px 16px}.suggestionCard:last-child{border-radius:0 0 6px 6px;border-radius:0 0 var(--radius-sm) var(--radius-sm)}.suggestionCardHeader{align-items:flex-start;display:flex;gap:10px;justify-content:space-between;margin-bottom:4px}.suggestionCardTitle{font-size:15px;margin:0 0 2px}.missingIngredients{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.missingLabel{color:#856404;font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}.missingItem{background:#fff3cd;border:1px solid #e8c84a;border-radius:4px;color:#856404;font-size:12px;padding:2px 7px}.clearAllBtn{background:none;border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#7a7266;color:var(--text-muted);cursor:pointer;font-size:12px;padding:4px 10px;transition:color .15s,border-color .15s}.clearAllBtn:hover{border-color:#c0392b;color:#c0392b}.webToggleRow{align-items:center;display:flex;gap:16px;justify-content:space-between}.webToggleLabel{color:#2c2a24;color:var(--text);font-size:14px;font-weight:600}.webToggleDesc{color:#7a7266;color:var(--text-muted);font-size:12px;margin-top:2px}.toggle{background:#e5ddd0;background:var(--border);border:none;border-radius:12px;cursor:pointer;flex-shrink:0;height:24px;padding:0;position:relative;transition:background .2s;width:44px}.toggle--on{background:#87a657;background:var(--olive)}.toggleThumb{background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;display:block;height:18px;left:3px;position:absolute;top:3px;transition:transform .2s;width:18px}.toggle--on .toggleThumb{transform:translateX(20px)}.webRefreshBtn{background:none;border:none;color:#1a3d5c;cursor:pointer;font-size:12px;font-weight:700;margin-left:auto;opacity:.7;padding:0 4px;transition:opacity .15s}.webRefreshBtn:hover{opacity:1}.webRecipeThumb{border-radius:6px;border-radius:var(--radius-sm);flex-shrink:0;height:56px;object-fit:cover;width:56px}.passwordField{align-items:center;display:flex;position:relative}.authBox .passwordField{margin-bottom:12px}.passwordField input{margin-bottom:0;padding-right:42px;width:100%}.passwordToggle{align-items:center;background:none;border:none;border-radius:6px;border-radius:var(--radius-sm);color:#797069;color:var(--text-light);cursor:pointer;display:flex;justify-content:center;line-height:1;padding:4px;position:absolute;right:8px}.passwordToggle:hover{background:#f0e9dc;background:var(--sand);color:#7a7266;color:var(--text-muted)}.dashboardPage{width:100%}.dashboardHero{align-items:center;background:#2f3d24;background:var(--forest);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 6px 20px #2c2a241c;box-shadow:var(--shadow-md);display:flex;gap:22px;margin-bottom:40px;padding:32px 36px}.dashboardHeroLogo{flex-shrink:0;opacity:.9}.dashboardGreeting{color:#e8ead8;font-family:Georgia,serif;font-size:32px;margin:0 0 6px}.dashboardSubtitle{color:#c8dba8;color:var(--olive-mid);font-size:16px;margin:0}.dashboardGrid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr)}.dashboardCard{align-self:stretch;border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 2px 8px #2c2a2412;box-shadow:var(--shadow-sm);color:#2c2a24;color:var(--text);cursor:pointer;display:flex;flex-direction:column;gap:10px;height:100%;padding:26px 22px;text-align:left;transition:box-shadow .2s,transform .2s,border-color .2s}.dashboardCard,.dashboardCard:hover{background:#fff;background:var(--white)}.dashboardCard:hover{border-color:#c8dba8;border-color:var(--olive-mid);box-shadow:0 6px 20px #2c2a241c;box-shadow:var(--shadow-md);transform:translateY(-3px)}.dashboardCardIcon{color:#87a657;color:var(--olive);line-height:1}.dashboardCardTitle{color:#2c2a24;color:var(--text);font-family:Georgia,serif;font-size:17px;font-weight:400;margin:0}.dashboardCardDesc{color:#7a7266;color:var(--text-muted);font-size:13px;line-height:1.5;margin:0}.dashboardTodayStrip{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-lg);box-shadow:0 2px 8px #2c2a2412;box-shadow:var(--shadow-sm);margin-bottom:20px;padding:20px 24px}.dashboardTodayHeader{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.dashboardTodayTitleGroup{align-items:baseline;display:flex;gap:10px}.dashboardTodayTitle{color:#2c2a24;color:var(--text);font-family:Georgia,serif;font-size:17px}.dashboardTodayDate{color:#7a7266;color:var(--text-muted);font-size:13px}.dashboardTodayLink{background:none;border:none;color:#87a657;color:var(--olive);cursor:pointer;font-size:13px;font-weight:500;padding:4px 0}.dashboardTodayLink:hover{text-decoration:underline}.dashboardTodayGrid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(4,1fr)}.dashboardTodayCell{background:#faf7f2;background:var(--cream);border-radius:10px;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:6px;min-height:64px;padding:12px 14px}.dashboardTodayCellType{align-self:flex-start;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.04em;padding:2px 7px;text-transform:uppercase}.dashboardTodayMeal{color:#2c2a24;color:var(--text);font-size:13px;line-height:1.4}.dashboardTodayEmpty{color:#797069;color:var(--text-light);font-size:13px;font-style:italic}.calDayView{max-width:640px}.calDayDateBadge{align-items:center;border-bottom:1px solid #e5ddd0;border-bottom:1px solid var(--border);display:flex;gap:12px;margin-bottom:20px;padding-bottom:16px}.calDayDateBadgeDow{color:#2c2a24;color:var(--text);font-family:Georgia,serif;font-size:22px}.calDayDateBadgeNum{color:#7a7266;color:var(--text-muted);font-family:Georgia,serif;font-size:38px;line-height:1}.calDayDateBadgeToday .calDayDateBadgeDow,.calDayDateBadgeToday .calDayDateBadgeNum{color:#2f3d24;color:var(--forest)}.calDayTodayPill{background:#2f3d24;background:var(--forest);border-radius:20px;color:#e8ead8;font-size:12px;font-weight:600;letter-spacing:.03em;padding:3px 10px}.calDaySection{background:#fff;background:var(--white);border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);margin-bottom:12px;padding:18px 20px}.calDaySectionHeader{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.calDayAddBtn{background:none;border:1.5px solid #c8dba8;border:1.5px solid var(--olive-mid);border-radius:20px;color:#87a657;color:var(--olive);cursor:pointer;font-size:12px;font-weight:600;line-height:1.4;padding:4px 12px;transition:background .15s,border-color .15s}.calDayAddBtn:hover{background:#eef5e5;background:var(--olive-light);border-color:#87a657;border-color:var(--olive)}.calDayEmpty{color:#797069;color:var(--text-light);font-size:13px;font-style:italic;margin:0}.calDayMealItem{align-items:center;background:#faf7f2;background:var(--cream);border-radius:6px;border-radius:var(--radius-sm);display:flex;gap:10px;margin-bottom:8px;padding:10px 12px}.calDayMealItem:last-child{margin-bottom:0}.calDayMealName{color:#2c2a24;color:var(--text);flex:1 1;font-size:14px;font-weight:500}.calDayMealServes{color:#7a7266;color:var(--text-muted);font-size:12px}.importSection{background:#faf7f2;background:var(--cream);border:1.5px dashed #d0c4b0;border:1.5px dashed var(--border-dark);border-radius:10px;border-radius:var(--radius-md);margin-bottom:24px;padding:16px 18px}.importLabel{color:#2c2a24;color:var(--text);font-size:13px;font-weight:600;margin:0 0 10px}.importHint{color:#7a7266;color:var(--text-muted);font-weight:400}.importRow{display:flex;gap:8px}.importInput{background:#fff;border:1.5px solid #e5ddd0;border:1.5px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);flex:1 1;font-size:13px;padding:9px 12px;transition:border-color .15s}.importInput:focus{border-color:#87a657;border-color:var(--olive);outline:none}.importBtn{font-size:13px;padding:9px 18px;white-space:nowrap}.importError{color:#c0392b}.importError,.importSuccess{font-size:13px;margin:8px 0 0}.importSuccess{color:#2d6a2d;font-weight:500}@media(max-width:960px){.pantryLayout{grid-template-columns:1fr}.mainContent{padding:28px 24px}.dashboardGrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.authLayout{flex-direction:column}.authBrand{flex:none;justify-content:center;padding:28px 32px}.authBrand:before{bottom:-60px;height:200px;right:-40px;width:200px}.authBrand:after{display:none}.authBrandLogo{margin-bottom:10px}.authBrand h1{font-size:32px;margin-bottom:6px}.authBrandTagline{font-size:14px;margin-bottom:0}.authFeatureList{display:none}.appLayout{flex-direction:column;min-height:0}.sidebar{align-items:center;flex-direction:row;gap:4px;height:auto;overflow-x:auto;padding:0 12px;position:sticky;top:0;width:100%;z-index:100}.sidebarBrand,.sidebarTagline{display:none}.sidebar nav{flex:1 1;flex-direction:row;flex-wrap:nowrap;gap:2px;overflow-x:auto;padding:8px 0}.sidebar a{font-size:13px;padding:7px 12px;white-space:nowrap}.sidebarLogout{flex-shrink:0;margin-left:4px;margin-top:0;padding:8px 0}.sidebarLogout button{font-size:13px;padding:7px 12px;width:auto}.mainContent{padding:20px 16px}.dashboardHero{flex-direction:column;gap:14px;margin-bottom:20px;padding:24px 20px;text-align:center}.dashboardGreeting{font-size:24px}.dashboardSubtitle{font-size:14px}.dashboardGrid{gap:10px;grid-template-columns:repeat(2,1fr)}.dashboardCard{padding:18px 14px}.dashboardTodayGrid{grid-template-columns:repeat(2,1fr)}.calDayView{max-width:100%}}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}@keyframes scaleInModal{0%{opacity:0;transform:scale(.97) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}.modalOverlay{animation:fadeInOverlay .15s ease-out}.modalBox{animation:scaleInModal .15s ease-out}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeletonCard{animation:shimmer 1.4s ease-in-out infinite;background:linear-gradient(90deg,#f0e9dc,#e5ddd0 50%,#f0e9dc);background:linear-gradient(90deg,var(--sand) 0,var(--border) 50%,var(--sand) 100%);background-size:200% 100%;border:1px solid #e5ddd0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);min-height:120px}.loadingPage{padding:32px 0;text-align:center}.loadingPage,.textMuted{color:#7a7266;color:var(--text-muted);font-size:14px}.linkOlive{color:#87a657;color:var(--olive)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
/*# sourceMappingURL=main.7a33988d.css.map*/