.bottom-nav{z-index:10;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--color-surface);border-top:1px solid var(--color-line);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav__link{min-height:var(--touch-target);color:var(--color-muted);flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:12px;font-weight:500;text-decoration:none;display:flex}.bottom-nav__link[aria-current=page]{color:var(--color-accent-text);font-weight:600}.app-layout{min-height:100dvh}.app-layout__main{max-width:640px;padding:calc(32px + env(safe-area-inset-top)) 20px calc(var(--nav-height) + env(safe-area-inset-bottom) + 24px);flex-direction:column;gap:16px;margin:0 auto;display:flex}.meal-settings{background:var(--color-surface);border-radius:var(--radius-card-sm);flex-direction:column;display:flex}.meal-settings__row{justify-content:space-between;align-items:center;gap:12px;min-height:52px;padding:8px 8px 8px 16px;font-size:16px;display:flex}.meal-settings__row+.meal-settings__row{border-top:1px solid var(--color-line)}.meal-settings__row--stack{flex-direction:column;align-items:stretch;gap:10px;padding:12px 16px}.meal-settings__stepper{background:var(--color-bg);border-radius:var(--radius-input);align-items:center;display:flex}.meal-settings__stepper button{width:var(--touch-target);height:var(--touch-target);cursor:pointer;background:0 0;border:0;font-size:20px}.meal-settings__stepper button:disabled{opacity:.4;cursor:default}.meal-settings__stepper span{text-align:center;min-width:24px;font-weight:600}.meal-settings__link{border:0;border-top:1px solid var(--color-line);text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;padding:14px 16px}.meal-settings__link>svg{color:var(--color-muted);flex-shrink:0}.meal-settings__link-text{flex-direction:column;gap:1px;min-width:0;display:flex}.meal-settings__hint{color:var(--color-muted);overflow-wrap:anywhere;font-size:13px}.meal-settings__notes{resize:vertical;min-height:88px;padding:12px 14px;font-size:16px}.meal-settings__actions{align-items:center;gap:12px;display:flex}.page-header{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.page-header__text{flex-direction:column;gap:2px;display:flex}.page-header__title{font-family:var(--font-heading);letter-spacing:-.02em;font-size:32px;font-weight:700;line-height:1.1}.page-header__subtitle{color:var(--color-muted);font-size:14px}.family__section{flex-direction:column;gap:8px;display:flex}.family__list{background:var(--color-surface);border-radius:var(--radius-card-sm);margin:0;padding:0;list-style:none}.family__row{align-items:center;gap:12px;padding:12px 16px;display:flex}.family__row+.family__row{border-top:1px solid var(--color-line)}.family__avatar{background:var(--color-accent);width:40px;height:40px;color:var(--color-on-accent);border-radius:20px;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.family__avatar--pending{background:var(--color-surface);color:var(--color-muted);border:1.5px dashed #5d7699}.family__who{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.family__name{overflow-wrap:anywhere;font-size:16px;font-weight:600}.family__detail{color:var(--color-muted);overflow-wrap:anywhere;font-size:13px}.family__badge{color:#8fe3bc;background:var(--color-accent-tint);border-radius:8px;padding:4px 8px;font-size:12px;font-weight:600}.card.family__invite{padding:16px}.family__invite-label{font-size:16px;font-weight:600}.family__note{font-size:13px}.card.family__account{flex-direction:row;justify-content:space-between;align-items:center;gap:12px;padding:16px}.family__account p{overflow-wrap:anywhere;min-width:0;font-size:14px}.invite-card__note{font-size:14px}.meal__back{min-height:var(--touch-target);color:var(--color-muted);align-self:flex-start;align-items:center;gap:4px;margin:-8px 0 -8px -6px;font-size:15px;font-weight:600;text-decoration:none;display:flex}.meal__picture{border-radius:var(--radius-card);width:100%;height:180px}.meal__header{flex-direction:column;gap:4px;display:flex}.meal__day{letter-spacing:.04em;text-transform:uppercase;color:var(--color-accent-text);font-size:12px;font-weight:600}.meal__title{font-family:var(--font-heading);letter-spacing:-.02em;font-size:30px;font-weight:700;line-height:1.1}.meal__meta{color:var(--color-muted);align-items:center;gap:8px;font-size:14px;display:flex}.meal__cooked{align-self:center}.meal__actions{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.meal__actions .button{flex:1}.meal__actions .secondary-button{align-items:center;gap:6px;display:flex}.meal__notice,.meal__note{font-size:14px}.meal__section{flex-direction:column;gap:8px;display:flex}.meal__ingredient{justify-content:space-between;padding:12px 16px}.meal__ingredient-name{overflow-wrap:anywhere;min-width:0;font-size:16px}.meal__amount{font-size:14px}.meal__status{color:var(--color-muted);flex-shrink:0;align-items:center;gap:4px;font-size:13px;font-weight:600;display:flex}.meal__status--have{color:var(--color-accent-text)}.meal__status--buy{color:var(--color-buy)}.meal__steps{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.meal__step{gap:12px;line-height:1.5;display:flex}.meal__step-number{background:var(--color-accent-tint);width:28px;height:28px;color:var(--color-accent-text);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.card.meal__cooked-form{padding:16px}.meal__cooked-title{font-size:18px;font-weight:600}.meal__used-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.meal__used{min-height:var(--touch-target);align-items:center;gap:12px;font-size:16px;display:flex}.meal__used input{width:20px;height:20px}.stepper{background:var(--color-surface);height:var(--touch-target);border-radius:22px;flex-shrink:0;align-items:center;display:flex}.stepper__button{width:40px;height:var(--touch-target);cursor:pointer;background:0 0;border:0;font-size:20px}.stepper__button:disabled{opacity:.4;cursor:default}.stepper__value{text-align:center;min-width:48px;font-size:14px;font-weight:600}.plan-start{align-items:flex-start}.plan-start__icon{background:var(--color-accent-tint);width:48px;height:48px;color:var(--color-accent-text);border-radius:14px;justify-content:center;align-items:center;display:flex}.plan-start__title{font-size:20px;font-weight:600}.plan-start .button{align-self:stretch}.plan__status{font-size:14px}.plan__meals{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.meal-card{background:var(--color-surface);border-radius:18px;align-items:center;gap:12px;padding:10px 12px 10px 10px;display:flex}.meal-card--done{opacity:.6}.meal-card__main{min-width:0;color:inherit;flex:1;align-items:center;gap:12px;text-decoration:none;display:flex}.meal-picture{object-fit:cover;border-radius:12px;flex-shrink:0}.meal-card__text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.meal-card__day{letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted);font-size:12px;font-weight:600}.meal-card__day--today{color:var(--color-accent-text)}.meal-card__title{overflow-wrap:anywhere;font-size:16px;font-weight:600}.meal-card__title--old{color:var(--color-muted);text-decoration:line-through}.meal-card__line{color:var(--color-muted);font-size:13px}.meal-card__buy{color:var(--color-buy);font-weight:600}.meal-card__swap{width:var(--touch-target);height:var(--touch-target);border-radius:var(--radius-button);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;display:flex}.meal-card--swapping{outline:2px solid var(--color-accent-text);flex-direction:column;align-items:stretch;padding:10px 12px 12px 10px}.meal-card__head{align-items:center;gap:12px;display:flex}.meal-card__old-picture{opacity:.55;border-radius:10px}.swap__box{background:var(--color-bg);border-radius:var(--radius-button);align-items:center;gap:8px;padding:4px 4px 4px 14px;display:flex}.swap__box:focus-within{outline:2px solid var(--color-accent-text);outline-offset:1px}.swap__input{min-width:0;height:var(--touch-target);background:0 0;border:0;outline:none;flex:1;font-size:15px}.swap__input::placeholder{color:var(--color-muted)}.swap__mic,.swap__send{height:var(--touch-target);border-radius:var(--radius-input);background:var(--color-accent);color:var(--color-on-accent);cursor:pointer;border:0;flex-shrink:0;justify-content:center;align-items:center;display:flex}.swap__mic{width:var(--touch-target)}.swap__mic--recording{background:#c9663f}.swap__send{padding:0 14px;font-size:15px;font-weight:600}.swap__mic:disabled,.swap__send:disabled{opacity:.6;cursor:default}.swap__status{font-size:14px}.swap__surprise{align-self:flex-start}.swap__options{flex-direction:column;gap:6px;display:flex}.swap__option{text-align:left;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-input);cursor:pointer;align-items:center;gap:12px;min-height:60px;padding:8px 12px 8px 8px;display:flex}.swap__option:first-child{border:1.5px solid var(--color-accent-text);background:var(--color-accent-tint)}.swap__option:disabled{opacity:.6;cursor:default}.swap__option .meal-picture{border-radius:10px}.swap__option-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.swap__option-title{font-size:15px;font-weight:600}.swap__option-line{color:var(--color-muted);font-size:13px}.swap__option:first-child .swap__option-line{color:#b9c7d8}.swap__pick{color:var(--color-accent-text);font-size:13px;font-weight:600}.plan__again{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.plan__again p{flex-basis:100%;font-size:14px}.plan-toast{left:20px;right:20px;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 12px);background:var(--color-raised);color:#fff;border-radius:var(--radius-button);align-items:center;gap:10px;max-width:600px;margin:0 auto;padding:12px 14px;font-size:14px;text-decoration:none;display:flex;position:fixed;box-shadow:0 6px 18px #0006}.plan-toast__text{flex:1}.plan-toast__action{color:#bfe0cc;font-weight:600}.quick-add{flex-direction:column;gap:8px;display:flex}.quick-add__box{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);align-items:center;gap:8px;padding:8px 8px 8px 16px;display:flex;position:relative}.quick-add__box--shopping{border-radius:var(--radius-card-sm);padding:4px 4px 4px 14px}.quick-add__input{min-width:0;height:var(--touch-target);background:0 0;border:0;outline:none;flex:1;font-size:16px}.quick-add__input::placeholder{color:var(--color-muted)}.quick-add__box:focus-within{outline:2px solid var(--color-accent-text);outline-offset:1px}.quick-add__photo,.quick-add__mic,.quick-add__send{cursor:pointer;border:0;flex-shrink:0;justify-content:center;align-items:center;display:flex}.quick-add__photo{width:var(--touch-target);height:var(--touch-target);border-radius:var(--radius-button);background:var(--color-bg);color:var(--color-muted)}.quick-add__photo:disabled{cursor:default;opacity:.7}.quick-add__mic{border-radius:var(--radius-card-sm);background:var(--color-accent);width:52px;height:52px;color:var(--color-on-accent)}.quick-add__box--shopping .quick-add__mic{width:var(--touch-target);height:var(--touch-target);border-radius:var(--radius-input)}.quick-add__mic--recording{background:#c9663f;animation:1.2s ease-in-out infinite quick-add-pulse}@keyframes quick-add-pulse{50%{box-shadow:0 0 0 6px #c9663f4d}}@media (prefers-reduced-motion:reduce){.quick-add__mic--recording{animation:none}}.quick-add__send{height:var(--touch-target);border-radius:var(--radius-input);background:var(--color-accent);color:var(--color-on-accent);padding:0 16px;font-size:15px;font-weight:600}.quick-add__mic:disabled,.quick-add__send:disabled{opacity:.6;cursor:default}.quick-add__status{font-size:14px}.review{background:var(--color-accent-tint);border-radius:var(--radius-card);flex-direction:column;gap:12px;padding:16px;display:flex}.review__heard{color:#8fe3bc;align-items:flex-start;gap:8px;font-size:13px;font-weight:600;display:flex}.review__heard>svg{flex-shrink:0;margin-top:2px}.review__heard>span{overflow-wrap:anywhere;flex:1;min-width:0}.review__close{color:#8fe3bc;cursor:pointer;background:0 0;border:0;flex-shrink:0;width:32px;height:32px;margin:-8px -8px 0 0;font-size:22px;line-height:1}.review__items{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.review__item{background:var(--color-surface);border-radius:var(--radius-input);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:15px;display:flex}.review__item strong{overflow-wrap:anywhere;min-width:0;font-weight:600}.review__item--editing{gap:8px;padding:6px 12px 6px 8px}.review__name-input{border:1.5px solid var(--color-input-border);background:var(--color-bg);border-radius:10px;flex:1;min-width:0;height:40px;padding:0 10px;font-size:16px}.review__select{border:1.5px solid var(--color-input-border);background:var(--color-bg);border-radius:10px;flex-shrink:0;max-width:45%;height:40px;padding:0 6px;font-size:14px}.review__action{color:var(--color-accent-text);flex-shrink:0;font-size:13px;font-weight:600}.review__action--remove{color:var(--color-buy)}.review__action--muted{color:var(--color-muted)}.review__actions{gap:8px;display:flex}.review__confirm,.review__edit{height:var(--touch-target);border-radius:var(--radius-input);cursor:pointer;font-size:15px;font-weight:600}.review__confirm{background:var(--color-accent);color:var(--color-on-accent);border:0;flex:1}.review__edit{color:#8fe3bc;background:0 0;border:1.5px solid #2f6b57;padding:0 16px}.review__confirm:disabled,.review__edit:disabled{opacity:.6;cursor:default}.pantry-editor{flex-direction:column;gap:10px;width:100%;display:flex}.pantry-editor__row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pantry-editor__field{flex-direction:column;gap:4px;min-width:0;display:flex}.pantry-editor__label{color:var(--color-muted);font-size:13px;font-weight:600}.pantry-editor__actions{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.pantry-editor__ran-out{color:var(--color-buy)}.pantry-editor__cancel{color:var(--color-muted)}.shopping{flex-direction:column;gap:14px;display:flex}.shopping--with-done{padding-bottom:72px}.live-badge{height:var(--touch-target);background:var(--color-surface);border-radius:22px;flex-shrink:0;align-items:center;gap:8px;padding:0 14px 0 6px;display:flex}.live-badge__avatars{display:flex}.avatar{border:2px solid var(--color-surface);color:#fff;border-radius:15px;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:600;display:flex}.live-badge__avatars .avatar+.avatar{margin-left:-10px}.avatar--small{border:0;flex-shrink:0;width:24px;height:24px;font-size:11px}.live-badge__status{align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.live-badge__dot{background:var(--color-muted);border-radius:4px;width:8px;height:8px}.live-badge__dot--live{background:#2f9e5f}.live-badge__dot--polling{background:var(--color-warning-text)}.shopping__activity{background:var(--color-warning-bg);border-radius:var(--radius-button);color:#f5c9ae;align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex}.shopping__activity-text{flex:1;min-width:0}.shopping__activity-text strong{font-weight:600}.shopping__activity-time{flex-shrink:0;font-size:12px}.shopping-item{padding-right:12px}.shopping-item__label{cursor:pointer;flex:1;align-items:center;gap:12px;min-width:0;min-height:52px;padding:10px 0 10px 16px;display:flex}.shopping-item__label input{flex-shrink:0;width:22px;height:22px;margin:0}.shopping-item__text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.shopping-item__name{overflow-wrap:anywhere;font-size:16px}.shopping-item__name--checked{color:var(--color-muted);text-decoration:line-through}.shopping-item__note,.shopping-item__who{color:var(--color-muted);font-size:12px}.shopping-item__remove{margin:0 -8px 0 0;font-size:20px}.shopping__done{left:0;right:0;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 16px);max-width:640px;margin:0 auto;padding:0 20px;position:fixed}.shopping__done-button{border-radius:var(--radius-button);background:var(--color-raised);color:#fff;cursor:pointer;border:0;width:100%;height:52px;font-size:16px;font-weight:600;box-shadow:0 6px 18px #0006}.shopping__done-button:disabled{opacity:.7;cursor:default}.code-input{border:0;min-width:0;margin:0;padding:0}.code-input__legend{color:var(--color-muted);margin-bottom:10px;padding:0;font-size:13px;font-weight:600}.code-input__boxes{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.code-input__box{border:1.5px solid var(--color-input-border);border-radius:var(--radius-input);background:var(--color-surface);text-align:center;width:100%;min-width:0;height:56px;font-size:24px;font-weight:600}.code-input__box--filled,.code-input__box:focus{border-color:var(--color-accent-text);outline:none}.sign-in{max-width:440px;min-height:100dvh;padding:calc(72px + env(safe-area-inset-top)) 24px 32px;flex-direction:column;gap:40px;margin:0 auto;display:flex}.sign-in__brand{flex-direction:column;gap:12px;display:flex}.sign-in__logo{background:var(--color-accent);width:52px;height:52px;color:var(--color-on-accent);border-radius:16px;justify-content:center;align-items:center;display:flex}.sign-in__title{font-family:var(--font-heading);letter-spacing:-.02em;font-size:40px;font-weight:700}.sign-in__tagline{color:var(--color-muted);font-size:17px}.card.sign-in__card{gap:20px;padding:24px}.sign-in__heading{font-size:20px;font-weight:600}.sign-in__label{color:var(--color-muted);margin-bottom:-12px;font-size:13px;font-weight:600}.sign-in__intro{flex-direction:column;gap:6px;display:flex}.sign-in__sent{color:var(--color-muted);font-size:15px}.sign-in__sent strong{color:var(--color-text);overflow-wrap:anywhere;font-weight:600}.sign-in__links{justify-content:space-between;gap:12px;margin:-8px 0;display:flex}.sign-in__note{font-size:14px}.sign-in__footer{color:var(--color-muted);align-items:flex-start;gap:12px;padding:0 4px;font-size:14px;line-height:1.5;display:flex}.sign-in__footer svg{flex-shrink:0;margin-top:1px}:root{--color-bg:#0e1a2b;--color-surface:#16263d;--color-raised:#2a4365;--color-text:#eaf0f7;--color-muted:#9fb0c6;--color-line:#22344f;--color-border:#2c4262;--color-input-border:#3a5378;--color-accent:#1b7f53;--color-on-accent:#fff;--color-accent-text:#6fd3a5;--color-accent-tint:#143a33;--color-warning-bg:#3a2418;--color-warning-text:#f2a97e;--color-buy:#f08a6a;--font-heading:"Bricolage Grotesque", system-ui, sans-serif;--font-body:Figtree, system-ui, sans-serif;--radius-card:20px;--radius-card-sm:16px;--radius-button:14px;--radius-input:12px;--touch-target:44px;--shadow-card:0 1px 2px #00000040;--nav-height:64px}*,:before,:after{box-sizing:border-box}html,body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;margin:0;font-size:16px;line-height:1.45}#root{min-height:100dvh}h1,h2,h3,p{margin:0}a{color:var(--color-accent-text)}button,input,select,textarea{font:inherit;color:inherit}input[type=checkbox]{accent-color:var(--color-accent-text)}:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.card{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);flex-direction:column;gap:12px;padding:20px;display:flex}.muted{color:var(--color-muted)}.button{border-radius:var(--radius-button);background:var(--color-accent);min-height:52px;color:var(--color-on-accent);cursor:pointer;border:0;padding:0 20px;font-size:17px;font-weight:600}.button:disabled{opacity:.6;cursor:default}.input{border:1.5px solid var(--color-input-border);border-radius:var(--radius-input);background:var(--color-surface);width:100%;min-height:52px;padding:0 16px;font-size:17px}.input:focus{border-color:var(--color-accent-text);outline:none}.badge{background:var(--color-accent-tint);color:var(--color-accent-text);border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:13px;font-weight:600}.page-message{text-align:center;padding:72px 24px}.error-text{color:var(--color-warning-text);font-size:14px}.link-button{min-height:var(--touch-target);color:var(--color-accent-text);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;text-decoration:underline}.link-button:disabled{opacity:.6;cursor:default}.section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);font-size:13px;font-weight:600}.input--compact{min-height:48px;padding:0 14px;font-size:16px}.button--compact{border-radius:var(--radius-input);min-height:48px;font-size:16px}.small-button,.secondary-button{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:10px;flex-shrink:0;height:36px;padding:0 12px;font-size:13px;font-weight:600}.secondary-button{height:var(--touch-target);padding:0 16px;font-size:15px}.icon-button{width:var(--touch-target);height:var(--touch-target);color:var(--color-muted);cursor:pointer;background:0 0;border:0;flex-shrink:0;margin:-4px -8px;font-size:22px}.small-button:disabled,.secondary-button:disabled,.icon-button:disabled{opacity:.6;cursor:default}.round-button{width:var(--touch-target);height:var(--touch-target);background:var(--color-surface);cursor:pointer;border:0;border-radius:22px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.round-button[aria-expanded=true]{background:var(--color-raised)}select.input{appearance:auto}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:18px;height:36px;padding:0 14px;font-size:14px;font-weight:500}.chip[aria-pressed=true]{border-color:var(--color-raised);background:var(--color-raised);color:#fff;font-weight:600}.item-section{flex-direction:column;gap:8px;display:flex}.item-list{background:var(--color-surface);border-radius:var(--radius-card-sm);margin:0;padding:0;list-style:none}.item-row{align-items:center;gap:12px;min-height:48px;display:flex}.item-row+.item-row{border-top:1px solid var(--color-line)}.item-row--editing{padding:12px 16px}.item-row__main{text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;min-width:0;min-height:48px;padding:12px 16px;display:flex}.item-row__name{overflow-wrap:anywhere;font-size:16px}.undo-notice{font-size:14px}.undo-notice__button{min-height:0;font-weight:600}
