:root{--color-background-primary:#fff;--color-background-secondary:#f9fafb;--color-text-primary:#555;--color-text-secondary:#6b7280;--color-border-primary:#e5e7eb;--color-border-secondary:#d1d5db;--color-border-tertiary:#f3f4f6;--color-text-danger:#dc2626;--color-background-accent:#1d9e75;--color-background-accent-light:#e1f5ee;--color-border-gray:#999;--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--color-text-primary);background:var(--color-background-primary);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}body{margin:0}#root{flex-direction:column;width:100%;max-width:480px;min-height:100svh;margin:0 auto;display:flex}@media (width>=768px){#root{max-width:none}}p{margin:0}a{color:inherit}.screen{background:var(--color-background-primary);flex-direction:column;width:100%;height:100svh;display:flex;overflow:hidden}.app-bar{background:#1d9e75;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.app-bar__logo{border-radius:8px;flex-shrink:0;width:25px;height:25px}.app-bar__title{text-align:center;color:#fff;flex:1;font-size:20px;font-weight:500}.app-bar__action{color:#fff;cursor:pointer;text-align:right;background:0 0;border:none;min-width:60px;padding:0;font-size:14px;font-weight:500}.page-header{border-bottom:.5px solid var(--color-border-tertiary);background-color:var(--color-background-accent);color:#fff;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.back-btn{cursor:pointer;color:#fff;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:16px;font-weight:500;display:flex}.header-action{cursor:pointer;color:#fff;background:0 0;border:none;padding:0;font-size:14px;font-weight:500}.view-nav{border-bottom:.5px solid var(--color-border-tertiary);gap:8px;padding:10px 16px;display:flex}@media (width>=768px){.view-nav{justify-content:flex-end}}.content{flex:1;padding:12px 16px 40px;overflow-y:auto}.cal-nav{z-index:2;background-color:#fff;justify-content:space-between;align-items:center;padding:12px 16px 8px;display:flex;position:relative}.cal-nav__title{font-size:16px;font-weight:500}.nav-btn{cursor:pointer;color:var(--color-text-primary);background:0 0;border:none;padding:0 8px;font-size:22px}.cal-grid{z-index:1;grid-template-columns:repeat(7,1fr);gap:2px;padding:0 12px 10px;display:grid;position:relative;box-shadow:0 1px 15px -5px #00000080}.dow{text-align:center;color:var(--color-text-secondary);padding:4px 0;font-size:11px}.cal-day{text-align:center;cursor:pointer;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:40px;padding:8px 4px;font-size:15px;display:flex}.cal-day--selected{color:#fff;background:#1d9e75}.cal-day--today:not(.cal-day--selected){background:var(--color-background-secondary)}.dot{background:#1d9e75;border-radius:50%;width:5px;height:5px}.cal-day--selected .dot,.cal-day--today .dot{background:#fff}.selected-date-row{border-top:.5px solid var(--color-border-tertiary);border-bottom:.5px solid var(--color-border-tertiary);justify-content:space-between;align-items:center;margin-top:8px;padding:10px 16px;display:flex}.selected-date-row__label{font-size:15px;font-weight:500}.day-content{background-color:#f5f5f5;box-shadow:inset 0 0 5px #0000001a}.cal-view-toggle{padding:10px 16px 0;display:flex}.cal-view-toggle__btn{cursor:pointer;color:#1d9e75;background:0 0;border:1px solid #1d9e75;flex:1;padding:6px 0;font-size:13px}.cal-view-toggle__btn:first-child{border-right:none;border-radius:6px 0 0 6px}.cal-view-toggle__btn:last-child{border-radius:0 6px 6px 0}.cal-view-toggle__btn--active{color:#fff;background:#1d9e75}.calendar-layout{flex-direction:column;flex:1;display:flex;overflow:hidden}@media (width>=768px){.calendar-layout{flex-direction:row}.calendar-panel{border-right:1px solid var(--color-border-primary);flex-shrink:0;width:320px;overflow-y:auto}}.day-panel{flex-direction:column;flex:1;display:flex;overflow:hidden}.day-panel .selected-date-row{margin-top:0}.side-panel{display:none}@media (width>=768px){.side-panel{border-left:1px solid var(--color-border-primary);flex-direction:column;flex-shrink:0;width:33.33vw;display:flex;overflow:hidden}}.side-panel__header{border-bottom:.5px solid var(--color-border-tertiary);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;font-size:15px;font-weight:500;display:flex}.side-panel__content{flex-direction:column;flex:1;padding:12px 16px 40px;display:flex;overflow:hidden}.btn--panel-active{box-shadow:inset 0 0 0 2px #fff9}.meal-section{border-radius:8px;margin-bottom:12px;overflow:hidden;box-shadow:0 1px 5px -2px #00000080}.meal-header{background:var(--color-background-accent);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.meal-title{color:#fff;font-size:15px;font-weight:500}.meal-add-btn{border:.5px solid var(--color-border-secondary);cursor:pointer;color:#1d9e75;background:0 0;border-radius:6px;padding:4px 10px;font-size:13px}.meal-empty{color:var(--color-text-secondary);background-color:#fff;padding:10px 14px;font-size:13px}.entry-card{border-top:.5px solid var(--color-border-tertiary);background-color:#fff;padding:10px 14px}.entry-card__row{align-items:center;gap:8px;display:flex}.entry-card__info{flex:1}.entry-card__name{font-size:14px;font-weight:500}.entry-card__meta{color:var(--color-text-secondary);margin-top:1px;font-size:12px}.entry-card__meta a{color:#1d9e75;margin-left:6px;text-decoration:none}.expand-btn{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;padding:4px;font-size:11px}.entry-card__delete-btn{color:#e53e3e}.remove-btn{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;padding:4px;font-size:13px}.note-display{border:1px solid var(--color-border-secondary);background-color:#ffffe0;border-radius:8px;justify-content:space-between;align-items:center;margin-top:6px;padding:6px 10px;display:flex}.note-display__content{cursor:pointer;align-items:center;gap:4px;display:flex}.note-display__text{color:var(--color-text-secondary);font-size:14px;font-weight:700}.add-note-btn{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;margin-top:4px;padding:4px 0;font-size:12px}.note-edit{margin-top:8px}.note-edit__actions{gap:6px;margin-top:6px;display:flex}.ing-list{border-top:.5px solid var(--color-border-tertiary);margin-top:8px;padding-top:8px}.ing-list__item{color:var(--color-text-secondary);padding:2px 0;font-size:12px}.instructions{border-top:.5px solid var(--color-border-tertiary);margin-top:10px;padding-top:10px}.instructions__label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:11px;font-weight:500}.instructions__body{color:var(--color-text-primary);white-space:pre-wrap;margin-bottom:8px;font-size:13px;line-height:1.5}.recipe-card{border:.5px solid var(--color-border-tertiary);cursor:pointer;border-radius:12px;align-items:center;margin-bottom:8px;padding:12px 14px;display:flex}.recipe-card__info{flex:1}.recipe-card__name{font-weight:500}.recipe-card__meta{color:var(--color-text-secondary);margin-top:3px;font-size:12px}.recipe-card__linked{color:#1d9e75;margin-left:6px}.recipe-card__chevron{color:var(--color-text-secondary);font-size:14px}.recipe-card__rating{margin-top:4px}.recipe-option{border:.5px solid var(--color-border-tertiary);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:10px 12px;display:flex}.recipe-option--selected{background:#e1f5ee;border:1.5px solid #1d9e75}.recipe-option__name{font-size:14px;font-weight:500}.recipe-option__serves{color:var(--color-text-secondary);font-size:12px}.section-title{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:12px;font-weight:500}.ing-row{border-bottom:.5px solid var(--color-border-tertiary);align-items:center;gap:8px;padding:8px 0;display:flex}.ing-row__name{flex:1;font-size:14px}.ing-row__qty{color:var(--color-text-secondary);font-size:13px}.add-ing-box{background:var(--color-background-secondary);border-radius:10px;margin-top:8px;padding:12px}.add-ing-box__row{gap:8px;margin-bottom:8px;display:flex}.add-ing-box__row>*{flex:1}.textarea{resize:vertical;min-height:100px;font-family:inherit}@media (width>=768px){.recipe-modal-overlay{justify-content:center;align-items:center}}.recipe-modal{flex-direction:column;width:100%;max-height:85vh;display:flex;overflow:hidden}@media (width>=768px){.recipe-modal{border-radius:16px;width:560px}}.recipe-modal .screen{border-radius:inherit;flex:1;height:100%;min-height:0}.recipe-view{background:var(--color-background-primary);border-radius:inherit;flex-direction:column;height:100%;display:flex;overflow:hidden}.recipe-view__header{background:var(--color-background-accent);color:#fff;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.recipe-view__title{text-overflow:ellipsis;white-space:nowrap;color:#fff;flex:1;min-width:0;margin-right:12px;font-size:16px;font-weight:500;overflow:hidden}.recipe-view__actions{flex-shrink:0;align-items:center;gap:12px;display:flex}.recipe-view__content{flex:1;padding:16px;overflow-y:auto}.recipe-view__meta{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.recipe-view__serves{color:var(--color-text-secondary);font-size:14px}.recipe-view__link{color:#1d9e75;font-size:14px;text-decoration:none}.recipe-view__section{margin-bottom:16px}.recipe-view__instructions{color:var(--color-text-primary);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.6}.import-section-title{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:12px 0 4px;font-size:11px;font-weight:500}.import-item{border-bottom:.5px solid var(--color-border-tertiary);align-items:center;gap:8px;padding:8px 0;display:flex}.import-item--uncertain{border-left:3px solid #f59e0b;align-items:flex-start;padding-top:10px;padding-left:8px}.import-item__info{flex:1;justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.import-item__info--top{align-items:flex-start}.import-item__name-group{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.import-item__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;overflow:hidden}.import-item__modifier{color:var(--color-text-secondary);background:var(--color-background-secondary);border:.5px solid var(--color-border-tertiary);vertical-align:middle;border-radius:4px;margin-right:5px;padding:0 5px;font-size:11px;font-weight:500;display:inline-block}.import-item__alternatives{color:var(--color-text-secondary);font-size:12px;font-style:italic}.import-item__qty-group{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.import-item__qty{color:var(--color-text-secondary);white-space:nowrap;font-size:13px}.import-item__merged{color:#1d9e75;text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:500}.import-item__edit{flex:1;min-width:0}.import-item__fields{gap:6px;display:flex}.import-item__fields>*{flex:1}.import-item__raw{color:var(--color-text-secondary);margin-top:4px;font-size:11px;font-style:italic}.import-warning-icon{color:#f59e0b;flex-shrink:0;margin-top:2px;font-size:16px}.side-panel--recipes .side-panel__content{overflow-y:auto}.side-panel--recipes .recipe-header.side-panel__header{display:block}.side-panel--recipes .recipe-header.side-panel__header .recipe-header__title{justify-content:space-between;align-items:center;padding-bottom:8px;display:flex}.grocery-list-content{flex-direction:column;flex:1;height:0;display:flex}.grocery-list-items{background-color:#ffffe0;flex-direction:column;flex:1;display:flex;overflow-y:auto}.grocery-list-items>.grocery-item{padding:11px 8px}.swipeable-row{z-index:1;border-bottom:.5px solid var(--color-border-gray);position:relative}.swipeable-row .swipeable-row__content{background-color:#ffffe0;padding:11px 8px}.grocery-item{cursor:pointer;align-items:center;gap:10px;padding:0;display:flex}.grocery-item--checked{opacity:.45}.grocery-item__name{flex:1;font-size:14px;font-weight:500}.grocery-item__name--checked{text-decoration:line-through}.grocery-item__qty{color:var(--color-text-secondary);font-size:13px}.checkbox{border:1.5px solid var(--color-border-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.checkbox--checked{background:#1d9e75;border:none}.checkbox__mark{color:#fff;font-size:11px}.date-range-card{border-bottom:.5px solid var(--color-border-tertiary);flex:none;margin-bottom:16px;padding:12px 0}.date-range-card__row{gap:8px;margin-bottom:12px;display:flex}.date-range-card__row>*{flex:1}.grocery-empty{color:var(--color-text-secondary);text-align:center;padding:20px 0;font-size:14px}.grocery-count{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:12px;font-weight:500}.generated-section{flex-direction:column;flex:100%;margin-bottom:24px;display:flex;overflow:hidden}.grocery-generated-list{overflow-y:auto}.generated-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.add-to-list-picker{margin-top:12px}.add-to-list-picker__count{float:right;color:var(--color-text-secondary);font-size:12px;font-weight:400}.saved-lists-section{flex-direction:column;flex:1;padding-top:16px;display:flex;overflow:hidden}.saved-lists-section__header{flex:none;justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.new-list-inline{align-items:center;gap:6px;display:flex}.new-list-inline__input{width:140px;padding:6px 8px;font-size:13px}.new-list-inline__cancel{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;padding:4px;font-size:14px}.grocery-lists-bar{border-bottom:.5px solid var(--color-border-tertiary);flex:none;align-items:center;gap:6px;padding:10px 0;display:flex;overflow-x:auto}.grocery-lists-bar::-webkit-scrollbar{display:none}.grocery-list-tab{border:.5px solid var(--color-border-secondary);cursor:pointer;color:var(--color-text-secondary);white-space:nowrap;background:0 0;border-radius:20px;flex-shrink:0;padding:6px 14px;font-size:13px;font-weight:500}.grocery-list-tab--active{color:#fff;background:#1d9e75;border-color:#1d9e75}.grocery-add-list-btn{border:.5px solid var(--color-border-secondary);cursor:pointer;color:#1d9e75;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:18px;line-height:1;display:flex}.grocery-list-header{background-color:var(--color-background-accent-light);flex:0;justify-content:space-between;align-items:center;margin-bottom:4px;padding:10px 12px 6px;display:flex}.grocery-list-header__name{font-size:15px;font-weight:500}.grocery-list-header__actions{align-items:center;gap:8px;display:flex}.grocery-item--plain{cursor:default;padding:11px 0}.grocery-item__delete,.grocery-item__move{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:12px}@media (pointer:coarse){.grocery-item__delete,.grocery-item__move{display:none}}.grocery-item__delete:hover{color:var(--color-text-danger)}.grocery-item__move:hover{color:#1d9e75}.move-picker{z-index:200;background:#0006;align-items:flex-end;display:flex;position:fixed;inset:0}.move-picker__sheet{background:var(--color-background-primary);border-radius:16px 16px 0 0;width:100%;padding:16px}.move-picker__title{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:12px;font-size:13px;font-weight:500}.move-picker__option{border:.5px solid var(--color-border-tertiary);text-align:left;cursor:pointer;width:100%;color:var(--color-text-primary);background:0 0;border-radius:10px;margin-bottom:8px;padding:12px 14px;font-size:14px;font-weight:500;display:block}.move-picker__option:hover{background:var(--color-background-secondary)}.move-picker__cancel{width:100%;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;margin-top:4px;padding:12px;font-size:14px;display:block}.generate-panel{border-bottom:.5px solid var(--color-border-tertiary);flex-shrink:0;padding:12px 16px}.generate-panel--collapsed .generate-panel__body{display:none}.generate-panel__toggle{cursor:pointer;width:100%;color:var(--color-text-primary);background:0 0;border:none;justify-content:space-between;align-items:center;margin-bottom:10px;padding:0;display:flex}.generate-panel__title{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:500}.generate-panel__body__row{gap:8px;margin-bottom:10px;display:flex}.generate-panel__body__row>*{flex:1}.save-list-box{align-items:flex-end;gap:8px;margin-top:12px;display:flex}.save-list-box__input{flex:none}.swipeable-row{position:relative}.swipeable-row__content{z-index:1;position:relative}.swipeable-row__action{z-index:0;align-items:center;display:flex;position:absolute;top:0;bottom:0;overflow:hidden}.swipeable-row__action .material-symbols-rounded{color:#fff;flex-shrink:0;font-size:22px}.swipeable-row__action--left{background:#e53e3e;justify-content:flex-end;padding-right:16px;right:0}.swipeable-row__action--right{background:#1d9e75;justify-content:flex-start;padding-left:16px;left:0}.btn{width:100%;color:var(--color-text-primary);border:.5px solid var(--color-border-secondary);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:10px 16px;font-size:14px;font-weight:500;display:inline-flex}.btn--accent{color:#fff;background:#1d9e75;border:none}.btn--small{width:auto;padding:6px 12px}.btn--small.btn--icon{padding:6px 12px}.btn--icon{color:#1d9e75;border:none;justify-content:center;align-items:center;width:auto;padding:0;display:flex}.btn--icon.btn--accent{color:#fff}.btn--icon.btn--danger{color:#e53e3e;background:0 0;border:none}.btn--icon-text{gap:6px}.btn--danger{color:#fff;background:#e53e3e;border:none}.btn:disabled{opacity:.4;cursor:not-allowed}.field{margin-bottom:12px}.field__label{color:var(--color-text-secondary);margin-bottom:4px;font-size:12px;display:block}.field__input{border:.5px solid var(--color-border-secondary);background:var(--color-background-primary);width:100%;color:var(--color-text-primary);border-radius:8px;padding:8px 10px;font-size:14px}.field-label{color:var(--color-text-secondary);margin-bottom:4px;font-size:12px;display:block}.field-input,.field-select{border:.5px solid var(--color-border-secondary);background:var(--color-background-primary);width:100%;color:var(--color-text-primary);border-radius:8px;padding:8px 10px;font-size:14px}.overlay{z-index:100;background:#0006;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=768px){.overlay{justify-content:center;align-items:center}}.modal{background:var(--color-background-primary);border-radius:16px 16px 0 0;flex-direction:column;width:100%;max-height:85vh;padding:16px;display:flex;overflow:hidden}@media (width>=768px){.modal{border-radius:16px;width:540px;max-height:80vh}}.modal__header{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.modal__header-title{font-weight:500}.modal__close{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;font-size:18px}.modal__hint{color:var(--color-text-secondary);margin-bottom:12px;font-size:13px}.modal__recipe-tab{flex-direction:column;flex:1;min-height:0;padding-top:12px;display:flex;overflow:hidden}.modal__recipe-list{flex:1;min-height:0;padding-bottom:4px;overflow-y:auto}.modal__scroll-body{flex:1;min-height:0;overflow-y:auto}.modal__actions{flex-shrink:0;margin-top:14px}.modal__recipe-actions{border-top:.5px solid var(--color-border-tertiary);flex-shrink:0;margin-top:8px;padding-top:8px}.modal__standalone-tab{flex:1;min-height:0;padding-top:12px;overflow-y:auto}.tabs{background:var(--color-background-secondary);border-radius:8px;gap:4px;margin-bottom:12px;padding:3px;display:flex}.tab{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;border-radius:6px;flex:1;padding:6px 4px;font-size:13px}.tab--active{background:var(--color-background-primary);color:var(--color-text-primary);border:.5px solid var(--color-border-tertiary);font-weight:500}.link-btn{color:#1d9e75;cursor:pointer;background:0 0;border:none;font-size:13px}.empty-state{text-align:center;padding:60px 20px}.empty-state__icon{margin-bottom:12px;font-size:32px}.empty-state__text{color:var(--color-text-secondary);margin-bottom:16px}.error-text{color:var(--color-text-danger);margin-bottom:12px;font-size:13px}.star-rating{gap:2px;display:flex}.star-rating__star{cursor:pointer;color:var(--color-border-secondary);background:0 0;border:none;padding:0 1px;font-size:20px;line-height:1;transition:color .1s}.star-rating__star--filled{color:#f59e0b}.star-rating__star:disabled{cursor:default}.star-rating__star:not(:disabled):hover{color:#f59e0b}.recipe-controls{gap:8px;margin-bottom:12px;display:flex}.recipe-controls__filter{flex:1;min-width:0}.recipe-controls__sort{flex-shrink:0;width:auto}.autocomplete{margin-bottom:12px;position:relative}.autocomplete__dropdown{background:var(--color-background-primary);border:.5px solid var(--color-border-secondary);z-index:10;border-radius:8px;margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 4px 12px #0000001a}.autocomplete__option{cursor:pointer;border-bottom:.5px solid var(--color-border-tertiary);padding:9px 12px;font-size:14px}.autocomplete__option:last-child{border-bottom:none}.autocomplete__option:hover{background:var(--color-background-secondary)}.auth-screen{background:var(--color-background-primary);flex-direction:column;justify-content:center;min-height:100vh;padding:32px 24px;display:flex}.auth-screen__hero{text-align:center;margin-bottom:32px}.auth-screen__icon{margin-bottom:8px;font-size:40px}.auth-screen__heading{font-size:22px;font-weight:500}.auth-screen__fields{margin-top:16px}.household-screen{background:var(--color-background-primary);min-height:100vh;padding:32px 24px}.household-screen__hero{text-align:center;margin-bottom:32px}.household-screen__icon{margin-bottom:8px;font-size:32px}.household-screen__heading{margin-bottom:8px;font-size:18px;font-weight:500}.household-screen__sub{color:var(--color-text-secondary);font-size:14px}
