:root{--page-bg:#eceae5;--app-bg:#f4f6f2;--card-bg:#fff;--card-border:#e8ebe6;--text:#2b3330;--text-muted:#8a938b;--text-faint:#aab0a9;--accent:#5a8f6f;--accent-dark:#3f6b4f;--accent-soft-bg:#eef3ee;--accent-soft-text:#4f6b57;--banner-bg:#eaf1ea;--banner-border:#dae6dc;--divider:#f0f2ee;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--page-bg);-webkit-font-smoothing:antialiased;color:var(--text);margin:0;font-family:Onest,system-ui,sans-serif}button{font-family:inherit}html,body,#root{height:100%}.app-shell{background:var(--app-bg);flex-direction:column;max-width:460px;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}.app-content{flex:1;min-height:0;overflow-y:auto}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.view{padding:22px 20px 100px}.view-title{color:var(--text);letter-spacing:-.02em;margin-bottom:16px;font-size:26px;font-weight:700}.week-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.week-header__nav{width:34px;height:34px;color:var(--accent);cursor:pointer;background:#dfe8e0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex}.week-header__center{text-align:center;flex:1;min-width:0}.week-header__range{color:var(--text);letter-spacing:-.02em;font-size:26px;font-weight:700}.week-header__today-link{color:var(--accent-soft-text);background:var(--accent-soft-bg);cursor:pointer;border:none;border-radius:999px;margin:8px auto 2px;padding:6px 14px;font-size:12.5px;font-weight:600;display:block}.week-context-hint{color:var(--text-muted);margin:-8px 0 16px;font-size:12.5px}.week-banner{background:var(--banner-bg);border:1px solid var(--banner-border);border-radius:14px;align-items:center;gap:9px;margin:14px 0 6px;padding:11px 14px;display:flex}.week-banner__leaf{font-size:16px}.week-banner__text{font-size:13px;font-weight:500}.week-banner__title{color:var(--accent-dark);font-weight:700}.week-banner__detail{color:var(--accent-soft-text)}.balance-row{gap:7px;margin-bottom:14px;display:flex}.balance-chip{background:var(--card-bg);border:1px solid var(--card-border);text-align:center;cursor:pointer;color:inherit;border-radius:12px;flex:1;padding:8px 6px;font-family:inherit}.balance-chip--active{background:var(--accent);border-color:var(--accent)}.balance-chip--active .balance-chip__label,.balance-chip--active .balance-chip__value{color:#fff}.balance-chip__label{font-size:12px}.balance-chip__value{margin-top:2px;font-size:13px;font-weight:700}.balance-chip__optional{color:var(--text-faint);margin-top:1px;font-size:9px}.balance-chip--active .balance-chip__optional{color:#ffffffbf}.day-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:18px;margin-bottom:12px;padding:14px 16px}.day-card__header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.day-card__badges{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.day-card__name{letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:700}.day-card__date{color:var(--text-faint);font-weight:600}.day-card__badge{background:var(--accent-soft-bg);color:var(--accent-soft-text);border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 8px;font-size:12px;font-weight:600;display:flex}.day-card__divider{background:var(--divider);height:1px;margin:8px 0}.meal-row{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:12px;align-items:center;gap:11px;width:100%;margin:0 -6px;padding:6px;transition:background .12s;display:flex}.meal-row:active{background:var(--divider)}.meal-row__time{flex:none;font-size:14px;line-height:1}.meal-row__minutes{color:var(--text-muted);flex:none;font-size:11.5px;font-weight:500}.meal-row__recipe{background:var(--accent-soft-bg);cursor:pointer;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;display:flex}.meal-row__text{flex-direction:column;flex:1;min-width:0;display:flex}.meal-row__label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:10px;font-weight:700}.meal-row__dish{color:var(--text);font-size:14.5px;line-height:1.3}.meal-row__chevron{color:#cdd3cd;font-size:17px;font-weight:300;line-height:1}.today-header__day{color:var(--text);letter-spacing:-.02em;margin-bottom:22px;font-size:34px;font-weight:700}.meal-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:22px;margin-bottom:16px;padding:20px}.meal-card--not-planned{border-style:dashed;border-color:#cdd6cd}.meal-card--not-planned .meal-card__name{color:var(--text-muted)}.meal-card--not-planned .meal-card__meta{color:var(--text-faint)}.meal-card__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.meal-card__header-right{align-items:center;gap:8px;display:flex}.meal-card__badge{background:var(--accent-soft-bg);color:var(--accent-soft-text);border-radius:999px;align-items:center;gap:6px;padding:5px 12px 5px 9px;font-size:12px;font-weight:600;display:flex}.meal-card__recipe-icon{background:var(--accent-soft-bg);width:36px;height:36px;color:var(--accent);cursor:pointer;border:none;border-radius:11px;flex:none;justify-content:center;align-items:center;display:flex}.meal-card__recipe-icon svg{width:18px;height:18px}.meal-card__recipe-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;font-weight:600}.meal-card__name{color:var(--text);letter-spacing:-.01em;font-size:21px;font-weight:600;line-height:1.25}.meal-card__meta{color:var(--text-muted);align-items:center;gap:8px;margin-top:10px;font-size:13px;display:flex}.meal-card__change{text-align:center;background:var(--accent-soft-bg);width:100%;color:var(--accent-soft-text);cursor:pointer;border:none;border-radius:14px;margin-top:16px;padding:12px;font-size:14px;font-weight:600}.today-needs{background:var(--card-bg);border:1px solid var(--card-border);border-radius:18px;margin-top:4px;padding:16px 18px}.today-needs__title{color:var(--accent-soft-text);margin-bottom:10px;font-size:13px;font-weight:700}.today-needs__list{flex-direction:column;gap:6px;margin:0;padding-left:18px;display:flex}.today-needs__list li{color:var(--text);font-size:14px}.today-needs__qty{color:var(--text-faint);font-size:12.5px}.today-needs--empty{text-align:center;color:var(--text-muted);padding:16px;font-size:13.5px}.dishes-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.dishes-search-btn{background:var(--card-border);width:38px;height:38px;color:var(--accent);cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:15px;display:flex}.dishes-search-btn svg{width:17px;height:17px}.dishes-search-btn--active{background:var(--accent-soft-bg)}.dishes-sticky-bar{z-index:5;background:var(--app-bg);margin-top:-6px;padding-top:6px;position:sticky;top:0}.mealtype-tabs{gap:8px;margin-bottom:14px;display:flex}.mealtype-tabs__tab{text-align:center;background:var(--card-bg);color:var(--accent-soft-text);cursor:pointer;border:1.5px solid #e2e6e0;border-radius:12px;flex:1;padding:10px 6px;font-size:13px;font-weight:600}.mealtype-tabs__tab--active{background:var(--accent);border-color:var(--accent);color:#fff}.dishes-search-field{border:1.5px solid var(--card-border);width:100%;color:var(--text);box-sizing:border-box;background:var(--card-bg);border-radius:12px;outline:none;margin-bottom:14px;padding:11px 14px;font-family:inherit;font-size:14.5px}.dishes-search-field:focus{border-color:#8fbf9e}.dishes-search-results{margin-bottom:14px}.category-manager__toggle{color:var(--accent-soft-text);cursor:pointer;background:0 0;border:none;padding:4px 0 12px;font-size:12.5px;font-weight:600;display:block}.category-manager{border:1.5px solid var(--card-border);background:var(--card-bg);border-radius:16px;margin-bottom:18px;padding:14px}.category-manager__chips{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.category-manager__chip{background:var(--app-bg);border:1px solid var(--card-border);color:var(--text);border-radius:10px;align-items:center;gap:6px;padding:6px 8px 6px 10px;font-size:13px;display:flex}.category-manager__remove{color:var(--text-faint);cursor:pointer;background:0 0;border:none;padding:2px;font-size:11px}.category-manager__add{gap:6px;display:flex}.category-manager__emoji-input{border:1px solid var(--card-border);text-align:center;border-radius:10px;flex:none;width:46px;padding:8px;font-family:inherit;font-size:15px}.category-manager__name-input{border:1px solid var(--card-border);min-width:0;color:var(--text);border-radius:10px;flex:1;padding:8px 10px;font-family:inherit;font-size:13.5px}.category-manager__add-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;flex:none;padding:8px 12px;font-size:13px;font-weight:600}.dishes-browse{align-items:flex-start;gap:10px;display:flex}.dishes-browse__content{flex:1;min-width:0}.dishes-browse__index{z-index:4;flex-direction:column;flex:none;align-items:center;gap:10px;width:34px;max-height:480px;padding-top:2px;display:flex;position:sticky;overflow-y:auto}.dishes-browse__index-chip{cursor:pointer;width:27px;height:27px;color:var(--text);background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:14px;display:flex}.dishes-browse__index-chip--active{background:var(--accent);color:#fff}.dish-group{margin-bottom:18px}.dish-group__header{color:var(--text);justify-content:space-between;align-items:baseline;gap:7px;margin-bottom:9px;font-size:15px;font-weight:700;display:flex}.dish-group__count{color:var(--text-faint);font-size:12px;font-weight:600}.dish-carousel{gap:11px;padding-bottom:4px;display:flex;overflow-x:auto}.dish-card{flex:none;width:132px}.dish-card__photo{background:repeating-linear-gradient(135deg,#e5e9e2 0 8px,#dde3d9 8px 16px) 50%/cover;border-radius:14px;justify-content:center;align-items:center;width:132px;height:96px;margin-bottom:8px;display:flex;position:relative}button.dish-card__photo--recipe{cursor:pointer;border:none;padding:0;font-family:inherit}.dish-card__photo-label{color:#9aa39a;font:600 9px ui-monospace,Menlo,monospace}.dish-card__recipe-badge{width:20px;height:20px;color:var(--accent);background:#ffffffeb;border-radius:6px;justify-content:center;align-items:center;display:flex;position:absolute;top:6px;right:6px}.dish-card__name{color:var(--text);font-size:13px;font-weight:600;line-height:1.25}.dish-card__meta{align-items:center;gap:5px;margin-top:4px;display:flex}.dish-card__meta-text{color:var(--text-muted);font-size:11px}.dish-card__countsas{opacity:.85;margin-top:3px;font-size:10.5px}.dish-card__actions{gap:10px;margin-top:6px;display:flex}.dish-card__edit,.dish-card__remove{cursor:pointer;background:0 0;border:none;align-items:center;gap:3px;padding:0;font-size:11px;display:flex}.dish-card__edit{color:var(--text-muted)}.dish-card__edit:hover{color:var(--accent-dark)}.dish-card__remove{color:#cf6b6b}.dish-card__remove:hover{color:#b6534f}.dish-chip{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;align-items:center;gap:11px;padding:11px 13px;display:flex}.dish-chip__dot{border-radius:50%;flex:none;width:8px;height:8px}.dish-chip--search{text-align:left;cursor:pointer;width:100%;margin-bottom:9px;font-family:inherit}.dish-chip__search-emoji{flex:none;font-size:17px}.dish-chip__search-body{flex-direction:column;flex:1;min-width:0;display:flex}.dish-chip__search-cat{color:var(--text-faint);margin-top:1px;font-size:11.5px}.dish-chip__name{color:var(--text);font-size:14px;font-weight:600}.dish-chip__min{color:var(--text-muted);text-align:right;flex:none;width:34px;font-size:11px;font-weight:500}.add-dish-trigger,.week-generate-trigger{text-align:center;width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:1.5px dashed #cdd6cd;border-radius:14px;margin-bottom:18px;padding:13px;font-size:14px;font-weight:500}.dish-form-overlay{background:var(--app-bg);z-index:35;flex-direction:column;animation:.28s cubic-bezier(.22,1,.36,1) sheetup;display:flex;position:absolute;inset:0}.dish-form-header{flex:none;justify-content:space-between;align-items:center;padding:16px 20px 10px;display:flex}.dish-form-header__cancel{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:15px;font-weight:500}.dish-form-header__title{color:var(--text);font-size:16px;font-weight:700}.dish-form-header__save{color:var(--text-faint);cursor:pointer;background:0 0;border:none;padding:4px;font-size:15px;font-weight:600}.dish-form-header__save--active{color:var(--accent)}.dish-form-body{flex:1;min-height:0;padding:6px 20px 24px;overflow-y:auto}.dish-form-footer{background:linear-gradient(to top, var(--app-bg) 72%, #f4f6f200);flex:none;gap:10px;padding:14px 20px 22px;display:flex}.add-dish__input{border:1px solid var(--card-border);width:100%;color:var(--text);box-sizing:border-box;border-radius:10px;outline:none;padding:10px 12px;font-family:inherit;font-size:14px}.add-dish__input--name{padding:13px 14px;font-size:17px;font-weight:600}.add-dish__photo-label{color:var(--text-muted);margin-bottom:8px;font-size:12.5px;font-weight:600}.dish-photo-picker__add{width:100%;color:var(--accent);cursor:pointer;background:0 0;border:1.5px dashed #cdd6cd;border-radius:14px;justify-content:center;align-items:center;gap:8px;margin-bottom:14px;padding:13px;font-size:13.5px;font-weight:600;display:flex}.dish-photo-picker__add:disabled{opacity:.6;cursor:default}.dish-photo-picker{margin-bottom:14px}.dish-photo-picker__preview{background-color:#e5e9e2;background-position:50%;background-size:cover;border-radius:14px;width:100%;height:140px;margin-bottom:8px}.dish-photo-picker__actions{gap:10px;display:flex}.dish-photo-picker__change,.dish-photo-picker__remove{border:1px solid var(--card-border);background:var(--card-bg);cursor:pointer;border-radius:10px;padding:7px 12px;font-size:12.5px;font-weight:600}.dish-photo-picker__change{color:var(--accent-soft-text)}.dish-photo-picker__remove{color:#cf6b6b}.add-dish__row{gap:8px;margin-top:8px;display:flex}.add-dish__select{border:1px solid var(--card-border);color:var(--text);background:#fff;border-radius:10px;flex:1;min-width:0;padding:10px 8px;font-family:inherit;font-size:13.5px}.add-dish__minutes{border:1px solid var(--card-border);width:64px;color:var(--text);border-radius:10px;outline:none;padding:10px 8px;font-family:inherit;font-size:14px}.add-dish__ingredients-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:14px 0 2px;font-size:11.5px;font-weight:700}.add-dish__ingredients-hint{color:var(--text-faint);margin:0 0 8px;font-size:11.5px}.add-dish__ingredient{margin-bottom:8px}.add-dish__ingredient-row{gap:6px;margin-bottom:4px;display:flex}.add-dish__ingredient-pantry{color:var(--text-muted);align-items:center;gap:6px;padding-left:2px;font-size:12px;display:flex}.add-dish__ingredient-pantry input{margin:0}.add-dish__ingredient-pantry-auto{background:var(--accent-soft-bg);color:var(--accent-soft-text);border-radius:999px;padding:3px 7px;font-size:10.5px;font-weight:700}.add-dish__delivery{color:var(--text);background:var(--accent-soft-bg);border-radius:10px;align-items:center;gap:7px;margin:10px 0 4px;padding:8px 10px;font-size:13px;font-weight:500;display:flex}.add-dish__delivery input{margin:0}.add-dish__mealtypes-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:10px 0 6px;font-size:11.5px;font-weight:700}.add-dish__mealtypes{gap:10px;display:flex}.add-dish__mealtype{color:var(--text);align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.add-dish__mealtype input{margin:0}.add-dish__mealtypes-hint{color:var(--text-faint);margin:4px 0;font-size:11.5px}.add-dish__countsas{flex-wrap:wrap;gap:8px 14px;display:flex}.add-dish__countsas-chip{color:var(--text);align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.add-dish__countsas-chip input{margin:0}.add-dish__ingredient-name{border:1px solid var(--card-border);min-width:0;color:var(--text);border-radius:10px;outline:none;flex:1.4;padding:8px 10px;font-family:inherit;font-size:13px}.add-dish__ingredient-qty{border:1px solid var(--card-border);min-width:0;color:var(--text);border-radius:10px;outline:none;flex:.7;padding:8px;font-family:inherit;font-size:13px}.add-dish__ingredient-group{border:1px solid var(--card-border);min-width:0;color:var(--text);background:#fff;border-radius:10px;flex:1.1;padding:8px 4px;font-family:inherit;font-size:12px}.add-dish__ingredient-remove{width:30px;color:var(--text-faint);cursor:pointer;background:0 0;border:none;flex:none;font-size:12px}.add-dish__ingredient-remove:disabled{opacity:.35;cursor:default}.add-dish__ingredient-add{color:var(--accent-soft-text);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:13px;font-weight:600}.add-dish__prep-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:20px 0 2px;font-size:11.5px;font-weight:700}.add-dish__prep-hint{color:var(--text-faint);margin:0 0 8px;font-size:11.5px;line-height:1.4}.add-dish__prep{border:1px solid var(--card-border);width:100%;min-height:120px;color:var(--text);background:var(--card-bg);resize:none;box-sizing:border-box;border-radius:13px;outline:none;padding:12px 13px;font-family:inherit;font-size:14px;line-height:1.6}.add-dish__prep-count{color:var(--text-muted);margin-top:6px;font-size:12px;font-weight:600}.add-dish__delivery-note{background:var(--accent-soft-bg);color:var(--accent-soft-text);border-radius:16px;align-items:center;gap:10px;margin-top:12px;padding:16px;font-size:13.5px;line-height:1.4;display:flex}.add-dish__error{color:#cf6b6b;margin-top:10px;font-size:12.5px;font-weight:500}.add-dish__cancel{text-align:center;background:var(--divider);color:var(--text-muted);cursor:pointer;border:none;border-radius:14px;flex:1;padding:14px;font-size:15px;font-weight:600}.add-dish__confirm{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:14px;flex:1.6;padding:14px;font-size:15px;font-weight:700}.add-dish__confirm--disabled{background:var(--text-faint);opacity:.6;cursor:default}.shopping-progress{align-items:center;gap:10px;margin:10px 0 12px;display:flex}.shopping-filter__toggle{border:1px solid var(--card-border);background:var(--card-bg);color:var(--text-muted);cursor:pointer;border-radius:999px;margin-bottom:14px;padding:6px 12px;font-size:12.5px;font-weight:500;display:inline-block}.shopping-filter__toggle--on{background:var(--accent);border-color:var(--accent);color:#fff}.shopping-progress__track{background:#e6ebe4;border-radius:99px;flex:1;height:7px;overflow:hidden}.shopping-progress__fill{background:#7cb98a;border-radius:99px;height:100%;transition:width .2s}.shopping-progress__count{color:var(--text-muted);font-size:12px;font-weight:600}.shopping-group{margin-bottom:18px}.shopping-group__title{color:var(--accent-soft-text);margin-bottom:8px;font-size:13px;font-weight:700}.shopping-group__card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:16px;overflow:hidden}.shopping-item{border:none;border-top:1px solid var(--divider);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:12px;width:100%;padding:12px 14px;display:flex}.shopping-item:first-child{border-top:none}.shopping-item:disabled{cursor:default}.shopping-item__box{color:#fff;background:#fff;border:1.8px solid #cdd6cd;border-radius:6px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;display:flex}.shopping-item__box--on{background:#7cb98a;border-color:#7cb98a}.shopping-item__box--pantry{color:#9fb6a4;background:#eef1ec;border-color:#dfe4dd}.shopping-item__text{flex-direction:column;flex:1;min-width:0;display:flex}.shopping-item__name{color:var(--text);font-size:14.5px}.shopping-item__name--done{color:#9aa39a;text-decoration:line-through}.shopping-item__name--pantry{color:#a7b0a5}.shopping-item__note{color:#b7ada2;margin-top:1px;font-size:11px}.shopping-item__qty{color:var(--text-faint);font-size:12.5px;font-weight:500}.shopping-add{border:1.5px dashed #cdd6cd;border-radius:14px;align-items:center;gap:8px;padding:6px 6px 6px 13px;display:flex}.shopping-add__input{color:var(--text);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:14px}.shopping-add__input::placeholder{color:var(--text-muted)}.shopping-add__button{background:var(--accent-soft-bg);width:34px;height:34px;color:var(--accent-soft-text);cursor:pointer;border:none;border-radius:10px;font-size:18px;font-weight:600}.tab-bar{padding:10px 8px calc(env(safe-area-inset-bottom,0px) + 14px);background:var(--app-bg);border-top:1px solid #0000000d;flex:none;justify-content:space-around;align-items:center;display:flex;position:sticky;bottom:0}.tab-bar__item{cursor:pointer;color:var(--text-faint);background:0 0;border:none;flex-direction:column;align-items:center;gap:4px;font-size:10px;font-weight:600;display:flex}.tab-bar__item--active{color:var(--accent)}.tab-bar__icon-wrap{display:flex;position:relative}.tab-bar__badge{color:#fff;text-align:center;background:#cf6b6b;border-radius:999px;min-width:15px;height:15px;padding:0 3px;font-size:9.5px;font-weight:700;line-height:15px;position:absolute;top:-5px;right:-8px}.sheet-backdrop{z-index:30;background:#1e231e52;align-items:flex-end;animation:.18s fadein;display:flex;position:absolute;inset:0}.sheet{background:var(--app-bg);border-radius:28px 28px 0 0;flex-direction:column;width:100%;max-height:78%;padding:10px 20px 26px;animation:.26s cubic-bezier(.22,1,.36,1) sheetup;display:flex}.sheet__handle{background:#d6dcd6;border-radius:99px;flex:none;width:40px;height:5px;margin:4px auto 14px}.sheet__header{flex:none;justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.sheet__eyebrow{text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);font-size:11px;font-weight:700}.sheet__category-picker{margin-top:2px;display:inline-block;position:relative}.sheet__category-pill{background:var(--accent-soft-bg);color:var(--accent-soft-text);letter-spacing:-.01em;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:18px;font-weight:700;display:inline-flex}.sheet__category-chevron{font-size:12px}.sheet__category-select{opacity:0;cursor:pointer;border:none;width:100%;height:100%;position:absolute;inset:0}.sheet__category-hint{color:var(--text-faint);margin-top:5px;font-size:11.5px}.sheet__close{cursor:pointer;width:34px;height:34px;color:var(--text-muted);background:#e6ebe4;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:16px;display:flex}.sheet__toolbar{flex-wrap:wrap;gap:8px;margin:12px 0 6px;display:flex}.sheet__fast,.sheet__skip{cursor:pointer;color:var(--text-muted);background:#fff;border:1.5px solid #e2e6e0;border-radius:999px;align-items:center;gap:7px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.sheet__fast--on,.sheet__skip--on{color:var(--accent-dark);background:#e5efe6;border-color:#8fbf9e}.sheet__fast-check{font-size:14px}.sheet__list{margin-top:8px;overflow-y:auto}.sheet__option{border:1.5px solid var(--card-border);cursor:pointer;text-align:left;background:#fff;border-radius:16px;align-items:center;gap:13px;width:100%;margin-bottom:9px;padding:14px 15px;display:flex}.sheet__option--current{border-color:#8fbf9e}.sheet__dot{color:#fff;background:#fff;border:2px solid #d2d8d0;border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;display:flex}.sheet__dot--on{border-color:var(--accent);background:var(--accent)}.sheet__option-name{color:var(--text);flex:1;font-size:15px;font-weight:500}.sheet__option-recipe{flex:none;font-size:12px}.sheet__option-color{border-radius:50%;flex:none;width:9px;height:9px}.sheet__option-min{color:var(--text-muted);text-align:right;width:48px;font-size:12.5px;font-weight:500}.sheet__empty{text-align:center;color:var(--text-faint);padding:20px;font-size:13px}.recipe-sheet__header{flex:none;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.recipe-sheet__title{color:var(--text);font-size:20px;font-weight:700}.recipe-sheet__meta{color:var(--text-muted);margin-top:4px;font-size:12.5px}.recipe-sheet__label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);flex:none;margin-bottom:12px;font-size:11px;font-weight:700}.recipe-sheet__steps{flex-direction:column;gap:15px;padding-bottom:6px;display:flex;overflow-y:auto}.recipe-sheet__step{align-items:flex-start;gap:12px;display:flex}.recipe-sheet__step-number{background:var(--accent);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:flex}.recipe-sheet__step-text{color:var(--text);padding-top:2px;font-size:14.5px;line-height:1.45}@keyframes sheetup{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.update-banner{z-index:40;color:#fff;background:#2b3330;align-items:center;gap:10px;padding:10px 14px;font-size:13px;font-weight:500;display:flex;position:sticky;top:0}.update-banner__text{flex:1}.update-banner__update{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;padding:7px 14px;font-size:12.5px;font-weight:600}.update-banner__dismiss{color:#fff9;cursor:pointer;background:0 0;border:none;flex:none;padding:4px;font-size:13px}.floc-segmented{background:#e9ede7;border-radius:12px;gap:2px;margin-bottom:14px;padding:4px;display:flex}.floc-segmented__item{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:9px 6px;font-size:12.5px;font-weight:600;position:relative;overflow:visible}.floc-segmented__item--active{color:#3a4741;background:#fff;box-shadow:0 1px 2px #0000000d}.floc-segmented__badge{color:#fff;text-align:center;background:#cf6b6b;border-radius:999px;min-width:15px;height:15px;padding:0 3px;font-size:9.5px;font-weight:700;line-height:15px;position:absolute;top:-5px;right:-3px}.fridge-banner{color:#a5653f;background:#fbeee6;border:1px solid #f2ddcf;border-radius:14px;align-items:center;gap:8px;margin-bottom:14px;padding:12px 14px;font-size:13.5px;display:flex}.fridge-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:14px 0 8px;font-size:11px;font-weight:700}.fridge-section-title--urgent{color:#cf6b6b}.food-card{border:1px solid #0000;border-radius:16px;align-items:center;gap:12px;margin-bottom:9px;padding:12px 14px;display:flex}.food-card__icon{flex:none;font-size:22px}.food-card__text{cursor:pointer;flex-direction:column;flex:1;min-width:0;display:flex}.food-card__name{color:var(--text);font-size:15px;font-weight:600}.food-card__meta{color:var(--text-muted);margin-top:1px;font-size:12px}.food-card__days{white-space:nowrap;flex:none;font-size:12.5px;font-weight:700}.food-card__edit,.food-card__remove{color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;padding:4px;font-size:12px}.food-card__edit{font-size:14px}.food-card__edit:hover{color:var(--accent-dark);background:var(--accent-soft-bg)}.today-fridge-banner{color:#a5653f;cursor:pointer;text-align:left;background:#fbeee6;border:1px solid #f2ddcf;border-radius:14px;align-items:center;gap:10px;width:100%;margin-bottom:16px;padding:12px 14px;font-size:13.5px;display:flex}.today-fridge-banner__text{flex:1}.today-fridge-banner__chevron{flex:none;font-size:16px}.food-sheet__header{flex:none;justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.food-sheet__title{color:var(--text);font-size:20px;font-weight:700}.food-sheet__body{overflow-y:auto}.food-emoji-grid{flex-wrap:wrap;gap:8px;margin-bottom:6px;display:flex}.food-emoji-grid__item{border:1.5px solid var(--card-border);cursor:pointer;background:#fff;border-radius:11px;justify-content:center;align-items:center;width:42px;height:42px;font-size:19px;display:flex}.food-emoji-grid__item--active{background:var(--accent-soft-bg);border-color:#8fbf9e}.food-loc-chips{gap:8px;margin-bottom:6px;display:flex}.food-loc-chip{border:1.5px solid var(--card-border);color:var(--text-muted);cursor:pointer;background:#fff;border-radius:12px;flex:1;padding:10px 6px;font-size:13px;font-weight:600}.food-loc-chip--active{background:var(--accent-soft-bg);color:var(--accent-dark);border-color:#8fbf9e}.food-days-row{gap:10px;margin-top:6px;display:flex}.food-days-field{flex:1}.food-alert-hint{background:var(--accent-soft-bg);color:var(--accent-soft-text);border-radius:9px;margin-top:6px;padding:6px 8px;font-size:11px;line-height:1.35}.food-alert-suggest{color:var(--accent);cursor:pointer;background:0 0;border:1px solid #dde9dd;border-radius:9px;margin-top:6px;padding:5px 8px;font-size:11px;font-weight:700}.food-days-input{border:1px solid var(--card-border);background:#fff;border-radius:13px;align-items:center;gap:8px;padding:10px 14px;display:flex}.food-days-input--loading{opacity:.5}.food-days-input input{width:100%;color:var(--text);background:0 0;border:none;outline:none;flex:1;min-width:0;font-family:inherit;font-size:15px}.food-days-input span{color:var(--text-faint);flex:none;font-size:13px;font-weight:500}.food-days-input select{color:var(--text-faint);cursor:pointer;background:0 0;border:none;outline:none;flex:none;font-family:inherit;font-size:13px;font-weight:500}.food-sheet__save{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:15px;flex:none;width:100%;margin-top:16px;padding:15px;font-size:15px;font-weight:700}.food-sheet__save--disabled{background:var(--text-faint);opacity:.6;cursor:default}.fridge-header{justify-content:space-between;align-items:flex-start;margin-bottom:16px;display:flex}.fridge-header__actions{align-items:center;gap:8px;display:flex}.fridge-camera-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:13px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:flex;box-shadow:0 4px 12px #5a8f6f4d}.fridge-camera-btn svg{width:19px;height:19px}.fridge-icon-btn{width:40px;height:40px;color:var(--accent);cursor:pointer;background:#dfe8e0;border:none;border-radius:13px;flex:none;justify-content:center;align-items:center;font-size:15px;display:flex}.fridge-icon-btn svg{width:18px;height:18px}.fridge-search-input{width:0;max-width:0;height:40px;color:var(--text);opacity:0;background:#fff;border:none;border-radius:12px;padding:0;font-size:13.5px;transition:max-width .22s,opacity .16s,padding .22s,border-color .16s}.fridge-search-input--open{border:1.5px solid var(--card-border);opacity:1;width:150px;max-width:150px;padding:0 12px}.fridge-search-input:focus{border-color:#8fbf9e;outline:none}.fridge-search-results{margin-bottom:14px}.food-card--search{text-align:left;cursor:pointer;width:100%;font-family:inherit}.scan-invite-banner{background:var(--accent-soft-bg);cursor:pointer;text-align:left;border:1px solid #dde9dd;border-radius:14px;align-items:center;gap:10px;width:100%;margin-top:4px;margin-bottom:14px;padding:12px 14px;display:flex}.scan-invite-banner__icon{color:var(--accent);flex:none;display:flex}.scan-invite-banner__icon svg{width:18px;height:18px}.scan-invite-banner__text{color:var(--accent-soft-text);flex:1;font-size:12.5px}.scan-invite-banner__chevron{color:var(--accent);flex:none;font-size:16px}.scan-confirm-banner{background:var(--accent-soft-bg);border:1px solid #c9e0d0;border-radius:14px;align-items:center;gap:10px;margin-bottom:14px;padding:11px 14px;display:flex}.scan-confirm-banner__icon{background:var(--accent);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:flex}.scan-confirm-banner__text{color:var(--accent-dark);flex:1;font-size:13px;font-weight:700}.scan-confirm-banner__undo{color:var(--accent);cursor:pointer;background:0 0;border:none;flex:none;padding:4px;font-size:12.5px;font-weight:700}.scan-overlay{z-index:35;background:#1c211d;flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:20px;animation:.2s fadein;display:flex;position:absolute;inset:0}.scan-overlay__close{color:#fff;cursor:pointer;background:#ffffff24;border:none;border-radius:50%;width:32px;height:32px;font-size:13px;position:absolute;top:16px;left:16px}.scan-overlay__viewer{aspect-ratio:3/4;background:#2a312c;border-radius:22px;width:100%;max-width:320px;position:relative;overflow:hidden}.scan-overlay__photo{object-fit:cover;filter:brightness(.75);width:100%;height:100%}.scan-overlay__sweep{background:linear-gradient(90deg,#0000,#8fe0a8,#0000);height:2px;animation:2.2s ease-in-out infinite alternate sweep;position:absolute;left:0;right:0;box-shadow:0 0 12px #8fe0a8}.scan-overlay__progress{color:#fff;background:#ffffff1a;border-radius:14px;align-items:center;gap:10px;padding:10px 16px;font-size:13px;font-weight:500;display:flex}.scan-overlay__spinner{border:2.5px solid #ffffff40;border-top-color:#8fe0a8;border-radius:50%;flex:none;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes sweep{0%{top:6%}to{top:94%}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes softpulse{0%,to{opacity:1}50%{opacity:.55}}.scan-review-sheet{background:#f4f6f2}.scan-review__header{flex:none;justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.scan-review__cancel{width:60px;color:var(--text-faint);cursor:pointer;text-align:left;background:0 0;border:none;padding:4px 0;font-size:13px}.scan-review__title{color:var(--text);font-size:15px;font-weight:700}.scan-review__summary{background:var(--accent-soft-bg);border:1px solid #dde9dd;border-radius:14px;flex:none;align-items:center;gap:10px;margin-bottom:10px;padding:10px 12px;display:flex}.scan-review__thumb{object-fit:cover;border-radius:10px;flex:none;width:44px;height:44px}.scan-review__summary-text{color:var(--text);flex-direction:column;flex:1;font-size:13.5px;display:flex}.scan-review__summary-sub{color:var(--text-muted);margin-top:1px;font-size:11px;font-weight:500}.scan-review__count{color:var(--accent);flex:none;font-size:13px;font-weight:700}.scan-review__suggest-all{color:var(--accent);cursor:pointer;background:0 0;border:1px solid #dde9dd;border-radius:12px;flex:none;align-self:flex-start;margin-bottom:10px;padding:7px 12px;font-size:12.5px;font-weight:700}.scan-review__list{flex:1;min-height:0;overflow-y:auto}.scan-row{background:#fff;border:1.5px solid #e8ebe6;border-radius:16px;margin-bottom:9px;padding:12px 13px}.scan-row--discarded{background:#f7f8f6;border-color:#eef0ec}.scan-row__top{align-items:center;gap:10px;display:flex}.scan-row__check{color:#fff;cursor:pointer;background:0 0;border:1.5px solid #cdd6cd;border-radius:7px;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:13px;font-weight:700;display:flex}.scan-row__check--active{background:var(--accent);border-color:var(--accent)}.scan-row__icon{flex:none;font-size:21px}.scan-row__text{cursor:pointer;flex-direction:column;flex:1;min-width:0;display:flex}.scan-row__name{color:var(--text);background:0 0;border:1px solid #0000;border-radius:6px;width:100%;min-width:0;margin:-2px -4px;padding:2px 4px;font-family:inherit;font-size:14.5px;font-weight:600}.scan-row__name:focus{background:#fff;border-color:#8fbf9e;outline:none}.scan-row--discarded .scan-row__name{color:#a7b0a5;text-decoration:line-through}.scan-row__meta{color:#a2a99f;margin-top:1px;font-size:11px}.scan-row__loc{background:#e6eae4;border-radius:9px;gap:3px;margin-top:10px;padding:3px;display:flex}.scan-row__loc-item{color:#8a938b;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:7px 4px;font-size:10.5px;font-weight:600}.scan-row__loc-item--active{background:var(--accent);color:#fff;box-shadow:0 1px 3px #5a8f6f59}.scan-row__alert{align-items:center;gap:8px;margin-top:10px;display:flex}.scan-row__alert-label{color:#8a938b;flex:none;font-size:11.5px;font-weight:600}.scan-row__stepper{background:#f0f2ee;border-radius:9px;flex:none;align-items:center;gap:2px;padding:2px;display:flex}.scan-row__stepper button{color:#8a938b;cursor:pointer;background:#fff;border:none;border-radius:7px;width:28px;height:26px;font-size:15px}.scan-row__stepper button:last-child{color:var(--accent)}.scan-row__stepper button:disabled{color:#dfe4dd;cursor:default}.scan-row__stepper span{text-align:center;color:#3a4741;min-width:40px;font-size:12px;font-weight:700}.scan-row__ai-badge{text-align:right;color:var(--accent);cursor:pointer;background:0 0;border:none;flex:1;padding:4px;font-size:10.5px;font-weight:700}.scan-row__ai-badge--outline{color:var(--accent)}.scan-row__why{background:var(--accent-soft-bg);color:var(--accent-soft-text);border-radius:11px;margin-top:8px;padding:8px 10px;font-size:11.5px;line-height:1.4}.scan-error__text{color:var(--text-muted);margin:4px 0;font-size:13.5px;line-height:1.5}
