:root{--color-primary:#247a4d;--color-on-primary:#fff;--color-primary-container:#d8f0e2;--color-on-primary-container:#0f3d24;--color-secondary:#5b7a6a;--color-on-secondary:#fff;--color-secondary-container:#e2ebe6;--color-on-secondary-container:#1f3329;--color-neutral:#f4f7f5;--color-surface:#fff;--color-surface-container:#eaefee;--color-on-surface:#1a2420;--color-on-surface-variant:#5a6560;--color-outline:#c5cfc9;--color-outline-strong:#5f6a64;--color-error:#c62828;--color-on-error:#fff;--color-error-container:#fdecea;--color-success:#1b7a45;--color-on-success:#fff;--color-success-container:#e3f5ea;--color-purchased:#9aa8a0;--color-on-purchased:#3d4742;--color-purchased-surface:#e8ecea;--color-scrim:#1a242066;--color-tile-overlay:#ffffffb3;--color-tile-border:#1a24200f;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-page:24px;--space-section:16px;--space-inline:16px;--tile-gap:8px;--tile-grid-gap:6px;--tap-min:44px;--font-family:"DM Sans", sans-serif;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-size-label-sm:12px;--font-size-label-md:14px;--font-size-body-sm:14px;--font-size-body-md:16px;--font-size-body-lg:18px;--font-size-headline-sm:18px;--font-size-headline-md:22px;--font-size-headline-lg:28px;--font-size-sm:var(--font-size-body-sm);--font-size-base:var(--font-size-body-md);--font-size-md:var(--font-size-body-lg);--font-size-lg:var(--font-size-headline-md);--font-size-xl:var(--font-size-headline-lg);--font-size-2xl:32px;--font-size-3xl:36px;--line-height-tight:1.2;--line-height-snug:1.3;--line-height-body:1.5;--line-height-caption:1.45;--line-height-base:var(--line-height-body);--letter-spacing-headline-lg:-.02em;--letter-spacing-headline-md:-.015em;--letter-spacing-headline-sm:-.01em;--letter-spacing-label-sm:.02em;--letter-spacing-tight:var(--letter-spacing-headline-sm);--letter-spacing-tighter:var(--letter-spacing-headline-lg);--layout-max-width:1440px;--content-max-width:880px;--header-height:56px;--header-padding-x:var(--space-page);--nav-gap:var(--space-md);--dock-height:64px;--main-offset:var(--dock-height);--radius-sm:6px;--radius-md:10px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--z-dock:10;--z-dropdown:110;--z-dialog-backdrop:100;--z-dialog:101;--input-height:40px;--button-height:40px;--form-max-width:400px;--quick-add-dock-height:72px;--dialog-max-width:480px;--icon-size:24px;--keyboard-inset-bottom:0px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-family), serif;-webkit-font-smoothing:antialiased;background:var(--color-neutral);color:var(--color-on-surface);font-size:var(--font-size-body-md);font-weight:var(--font-weight-regular);line-height:var(--line-height-body)}button{font-size:var(--font-size-body-md);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit}body{position:relative}.root{isolation:isolate}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5,h6{color:var(--color-on-surface);font-weight:var(--font-weight-semibold)}h1{font-size:var(--font-size-headline-lg);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight)}h2{font-size:var(--font-size-headline-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-md);margin-bottom:0}h3{font-size:var(--font-size-headline-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-sm);margin-bottom:0}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-dock{left:0;right:0;bottom:var(--keyboard-inset-bottom);z-index:var(--z-dock);min-height:var(--dock-height);max-width:var(--layout-max-width);padding:0 var(--space-xs);padding-bottom:env(safe-area-inset-bottom,0px);background:var(--color-surface);border-top:1px solid var(--color-outline);flex-wrap:nowrap;justify-content:space-around;align-items:stretch;gap:0;margin:0 auto;display:flex;position:fixed}.dock-link{justify-content:center;align-items:center;gap:var(--space-xs);min-width:0;min-height:var(--tap-min);padding:var(--space-xs);font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);letter-spacing:var(--letter-spacing-label-sm);color:var(--color-on-surface-variant);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1 1 0;font-family:inherit;text-decoration:none;display:flex}.dock-link:hover{color:var(--color-on-primary-container)}.dock-link--active{color:var(--color-on-primary-container);background:var(--color-primary-container)}.dock-link__icon{flex-shrink:0;width:22px;height:22px}.dock-link__label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}main{max-width:var(--content-max-width);background:0 0;flex-direction:column;width:100%;min-height:100dvh;margin:0 auto;padding:0;display:flex}main.main--with-dock{min-height:calc(100vh - var(--dock-height));min-height:calc(100dvh - var(--dock-height));padding-bottom:calc(var(--dock-height) + env(safe-area-inset-bottom,0px))}.form-container{max-width:var(--form-max-width);width:100%;padding:var(--space-page);flex-direction:column;justify-content:center;margin:auto;display:flex}form{gap:var(--space-section);flex-direction:column;display:flex}.form-footer{margin-top:var(--space-section);text-align:center}.button{justify-content:center;align-items:center;gap:var(--space-sm);min-height:var(--button-height);height:var(--button-height);padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-on-primary);font-family:inherit;font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);cursor:pointer;border:none;text-decoration:none;display:inline-flex}.button:hover:not(:disabled),.button:active:not(:disabled){background:var(--color-on-primary-container);color:var(--color-on-primary)}.button:disabled{opacity:.6;cursor:not-allowed}.button--secondary{background:var(--color-secondary-container);color:var(--color-on-secondary-container)}.button--secondary:hover:not(:disabled),.button--secondary:active:not(:disabled){background:var(--color-surface-container);color:var(--color-on-surface)}.button--tertiary{color:var(--color-primary);background:0 0}.button--tertiary:hover:not(:disabled),.button--tertiary:active:not(:disabled){background:var(--color-primary-container);color:var(--color-on-primary-container)}.button--danger{background:var(--color-error);color:var(--color-on-error)}.button--danger:hover:not(:disabled){background:var(--color-error);filter:brightness(.92);color:var(--color-on-error)}.button--danger:active:not(:disabled){filter:brightness(.88)}.back-button{width:var(--button-height);height:var(--button-height);min-height:var(--button-height);border-radius:var(--radius-full);background:var(--color-tile-overlay);color:var(--color-on-surface);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.back-button:hover{background:var(--color-surface-container)}.back-button svg{width:var(--icon-size);height:var(--icon-size)}.field-label{margin-bottom:var(--space-xs);font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);color:var(--color-on-surface);display:block}.field-error{color:var(--color-error);font-size:var(--font-size-body-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-caption);margin-top:var(--space-xs)}.input{align-items:center;gap:var(--space-sm);width:100%;min-height:var(--input-height);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);font:inherit;padding:0 var(--space-md);display:flex}.input:focus-within{border-color:var(--color-primary);outline:none}.input__start-icon{color:var(--color-on-surface-variant);flex-shrink:0}.input__field{min-width:0;height:var(--input-height);font:inherit;font-size:var(--font-size-body-md);color:var(--color-on-surface);background:0 0;border:none;outline:none;flex:1;padding:0}.input__field::placeholder{color:var(--color-on-surface-variant)}.input[data-invalid]{background:var(--color-error-container);border-color:var(--color-error)}.input[data-invalid]:focus-within{outline-color:var(--color-error-container)}.field-textarea{width:100%;min-height:calc(var(--input-height) * 3);padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-on-surface);font:inherit;font-size:var(--font-size-body-md);line-height:var(--line-height-body);resize:vertical;display:block}.field-textarea:focus{border-color:var(--color-primary);outline:2px solid var(--color-primary-container);outline-offset:0}.field-checkbox{align-items:center;gap:var(--space-md);min-height:var(--button-height);cursor:pointer;display:flex}.checkbox-root{width:var(--space-xl);height:var(--space-xl);border:1px solid var(--color-outline);border-radius:var(--radius-sm);background:var(--color-surface);flex-shrink:0;justify-content:center;align-items:center;display:flex}.checkbox-root[data-checked]{background:var(--color-primary);border-color:var(--color-primary)}.checkbox-indicator{color:var(--color-on-primary);font-size:var(--font-size-label-md);line-height:1}.checkbox-root:not([data-checked]) .checkbox-indicator{display:none}.field-checkbox-label{font-size:var(--font-size-body-sm);color:var(--color-on-surface-variant);line-height:var(--line-height-caption)}.field-checkbox-copy{gap:var(--space-xs);flex-direction:column;min-width:0;display:flex}.field-checkbox-description{font-size:var(--font-size-label-sm);color:var(--color-on-surface-variant);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.select-trigger{width:100%;min-height:var(--input-height);padding:0 var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);font-family:inherit;font-size:var(--font-size-body-md);color:var(--color-on-surface);cursor:pointer;justify-content:space-between;align-items:center;display:flex}.select-trigger:focus-visible{border-color:var(--color-primary);outline:2px solid var(--color-primary-container);outline-offset:0}.select-trigger[data-disabled]{opacity:.6;cursor:not-allowed}.select-positioner{z-index:var(--z-dropdown)}.select-popup{background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-md);padding:var(--space-xs);min-width:var(--anchor-width);transform-origin:var(--transform-origin)}.select-list{max-height:var(--available-height);overflow-y:auto}.select-item{min-height:var(--tap-min);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:var(--font-size-body-md);color:var(--color-on-surface);cursor:pointer;align-items:center;display:flex}.select-item[data-highlighted]{background:var(--color-primary-container);color:var(--color-on-primary-container)}.select-item[data-selected]{font-weight:var(--font-weight-medium)}.dialog-backdrop{background:var(--color-scrim);z-index:var(--z-dialog-backdrop);position:fixed;inset:0}.dialog-popup{top:auto;bottom:var(--keyboard-inset-bottom,0px);z-index:var(--z-dialog);width:100%;max-height:calc(90dvh - var(--keyboard-inset-bottom,0px));padding:var(--space-page);background:var(--color-surface);color:var(--color-on-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;border:1px solid var(--color-outline);gap:var(--space-section);border-bottom:none;flex-direction:column;display:flex;position:fixed;left:0;right:0}.dialog-body{overscroll-behavior:contain;gap:var(--space-section);flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.dialog-body--fill{gap:var(--space-md);overflow:hidden}.dialog-popup--compact{gap:var(--space-md);padding:var(--space-md);padding-bottom:max(var(--space-md), env(safe-area-inset-bottom,0px))}.dialog-popup--compact .dialog-body{gap:var(--space-md)}@media (width<=639px){.dialog-popup--sheet{height:calc(90dvh - var(--keyboard-inset-bottom,0px));max-height:calc(90dvh - var(--keyboard-inset-bottom,0px))}}.dialog-title{font-size:var(--font-size-headline-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-sm);line-height:var(--line-height-snug);margin:0}.dialog-description{font-size:var(--font-size-body-md);color:var(--color-on-surface-variant);line-height:var(--line-height-body);margin:0}.dialog-actions{gap:var(--space-md);flex-wrap:wrap;justify-content:flex-end;display:flex}.dialog-popup--centered{width:calc(100% - 2 * var(--space-page));max-width:var(--dialog-max-width);max-height:calc(100vh - 2 * var(--space-page));max-height:calc(100dvh - 2 * var(--space-page));border-radius:var(--radius-xl);border-bottom:1px solid var(--color-outline);padding-bottom:var(--space-xl);inset:50% auto auto 50%;transform:translate(-50%,-50%)}.popover-trigger{min-width:var(--tap-min);min-height:var(--tap-min);border-radius:var(--radius-full);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-family:inherit;display:inline-flex}.popover-trigger:hover .avatar,.popover-trigger[data-popup-open] .avatar{background:var(--color-secondary-container);color:var(--color-on-secondary-container)}.popover-trigger:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.avatar{border-radius:var(--radius-full);background:var(--color-primary-container);width:36px;height:36px;color:var(--color-on-primary-container);justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.avatar-fallback{font-size:var(--font-size-label-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-label-sm);text-transform:uppercase;-webkit-user-select:none;user-select:none;line-height:1}.popover-popup .button{width:100%}.popover-popup{box-sizing:border-box;z-index:var(--z-dropdown);gap:var(--space-sm);min-width:160px;padding:var(--space-md);background:var(--color-surface);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:var(--radius-md);transform-origin:var(--transform-origin);outline:none;flex-direction:column;transition:transform .1s ease-out,opacity .1s ease-out;display:flex;box-shadow:0 4px 12px #1a24201a}.popover-popup[data-starting-style],.popover-popup[data-ending-style]{opacity:0;transform:scale(.98)}.collapsible{border-top:1px solid var(--color-outline);padding-top:var(--space-md)}.collapsible__trigger{justify-content:space-between;align-items:center;gap:var(--space-md);width:100%;min-height:var(--tap-min);color:var(--color-on-surface);font:inherit;font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;display:flex}.collapsible__icon{width:var(--icon-size);height:var(--icon-size);color:var(--color-on-surface-variant);transition:transform .15s}.collapsible__trigger[data-panel-open] .collapsible__icon{transform:rotate(180deg)}.collapsible__panel{gap:var(--space-section);padding-block:var(--space-md);flex-direction:column;display:flex}.collapsible__panel[data-closed]{display:none}.badge{padding:var(--space-xs);border-radius:var(--radius-sm);background:var(--color-surface-container);color:var(--color-on-surface-variant);font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);letter-spacing:var(--letter-spacing-label-sm);align-items:center;display:inline-flex}.chip{padding:var(--space-sm);border-radius:var(--radius-md);background:var(--color-secondary-container);color:var(--color-on-secondary-container);font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);letter-spacing:var(--letter-spacing-label-sm);align-items:center;display:inline-flex}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:var(--color-surface);--normal-text:var(--color-on-surface);--normal-border:var(--color-outline);--success-bg:var(--color-success);--success-text:var(--color-on-success);--success-border:var(--color-success);--error-bg:var(--color-error);--error-text:var(--color-on-error);--error-border:var(--color-error)}[data-sonner-toast]{font-family:var(--font-family);font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);border-radius:var(--radius-md)!important}.home{padding:var(--space-page);gap:var(--space-section);flex-direction:column;width:100%;display:flex}.home__welcome-header{justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.home__welcome-header h1{font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight);margin-bottom:0}.home__welcome-date{margin-top:var(--space-xs);color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);line-height:var(--line-height-body);text-transform:capitalize}.home__welcome-header .popover-trigger{min-width:var(--tap-min);min-height:var(--tap-min);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.home__stats{gap:var(--space-sm);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.home__stat{gap:var(--space-xs);min-width:0;padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.home__stat-value{font-size:var(--font-size-headline-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-md);line-height:var(--line-height-tight)}.home__stat-label{color:var(--color-on-surface-variant);font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-label-sm);line-height:var(--line-height-snug)}.home__today h2,.home__upcoming h2,.home__shopping h2,.home__recipes h2{font-size:var(--font-size-headline-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-sm);line-height:var(--line-height-snug);margin-bottom:var(--space-md)}.home__recipes-link{color:inherit;text-decoration:none}.home__recipes-link:hover{color:var(--color-primary)}.home__meal-list,.home__upcoming-list,.home__recipes-list{gap:var(--space-md);flex-direction:column;padding:0;list-style:none;display:flex}.home__meal,.home__panel{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.home__meal-label,.home__upcoming-when{font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-label-sm);color:var(--color-on-surface-variant);text-transform:capitalize}.home__meal-recipe,.home__upcoming-item{align-items:center;gap:var(--space-md);min-width:0;color:inherit;flex-direction:row;display:flex}.home__upcoming-item{width:100%;padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface)}.home__meal-thumb{border-radius:var(--radius-sm);object-fit:cover;background:var(--color-surface-container);flex-shrink:0;width:48px;height:48px}.home__meal-title{font-size:var(--font-size-body-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-body);overflow-wrap:anywhere;min-width:0}.home__meal-recipe:hover .home__meal-title,.home__upcoming-item:hover .home__meal-title{color:var(--color-primary)}.home__meal-note{color:var(--color-on-surface);font-size:var(--font-size-body-md);line-height:var(--line-height-body)}.home__meal-empty,.home__empty{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);line-height:var(--line-height-body)}.home__upcoming-body{gap:var(--space-xs);flex-direction:column;min-width:0;display:flex}.home__panel{color:inherit}.home__panel:hover{border-color:var(--color-outline-strong)}.home__panel-header{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.home__panel-title{font-size:var(--font-size-body-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}.home__panel-meta{color:var(--color-on-surface-variant);font-size:var(--font-size-body-sm);line-height:var(--line-height-caption)}.home__progress{--progress:0%;border-radius:var(--radius-full);background:var(--color-surface-container);height:8px;overflow:hidden}.home__progress-bar{width:var(--progress);border-radius:inherit;background:var(--color-primary);height:100%}@media (width>=768px){.home{padding:var(--space-xl)}.home__recipes-list{grid-template-columns:1fr 1fr;display:grid}}.recipes-index{padding:var(--space-page);gap:var(--space-section);flex-direction:column;width:100%;display:flex}.recipes-index__header{justify-content:space-between;align-items:start;gap:var(--space-md);display:flex}.recipes-index__header h1{font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight);margin-bottom:0}.recipes-index__actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.recipes-index__empty{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);line-height:var(--line-height-body)}.recipes-index__empty a,.recipes-index__empty-action{color:var(--color-primary);font:inherit;font-weight:var(--font-weight-medium);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.recipes-index__list{gap:var(--space-md);flex-direction:column;padding:0;list-style:none;display:flex}@media (width>=768px){.recipes-index{padding:var(--space-xl)}.recipes-index__list{grid-template-columns:1fr 1fr;display:grid}}.recipe-form{padding:var(--space-page);gap:var(--space-section);width:100%;max-width:var(--form-max-width);flex-direction:column;margin-inline:auto;display:flex}.recipe-form__header{justify-content:space-between;align-items:start;gap:var(--space-md);display:flex}.recipe-form__header h1{margin-bottom:var(--space-xs);font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight)}.recipe-form__lead{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);line-height:var(--line-height-body);margin:0}.recipe-form__form{gap:var(--space-section);flex-direction:column;display:flex}.recipe-form__ingredients-header{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-sm);display:flex}.recipe-form__ingredients-header .field-label{margin-bottom:0}.recipe-form__ingredient-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recipe-form__ingredient-row{align-items:center;gap:var(--space-sm);display:flex}.recipe-form__ingredient-row .input{flex:1;min-width:0}.recipe-form__add-line,.recipe-form__remove-line{min-height:var(--tap-min);height:var(--tap-min);padding-inline:var(--space-md);flex-shrink:0}.recipe-form__remove-line{width:var(--tap-min);padding:0}.recipe-form__icon{width:var(--icon-size);height:var(--icon-size)}.recipe-form__times{gap:var(--space-md);grid-template-columns:1fr;display:grid}.recipe-form__actions{padding-top:var(--space-sm)}@media (width>=768px){.recipe-form{padding:var(--space-xl)}.recipe-form__times{grid-template-columns:repeat(3,1fr)}}.recipe-form__image img{object-fit:cover;width:100%;height:100%}.ingredients-index{padding:var(--space-page);gap:var(--space-section);flex-direction:column;width:100%;display:flex}.ingredients-index__header h1{font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight);margin-bottom:0}.ingredients-index__filters{gap:var(--space-sm);flex-wrap:wrap;display:flex}.ingredients-index__chip{min-height:var(--tap-min);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-on-surface);font-family:inherit;font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.ingredients-index__chip:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.ingredients-index__chip[data-pressed]{background:var(--color-primary-container);color:var(--color-on-primary-container);border-color:var(--color-primary-container)}.ingredients-index__empty{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);line-height:var(--line-height-body)}.ingredients-index__list{gap:var(--space-md);flex-direction:column;padding:0;list-style:none;display:flex}.ingredients-index__row{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.ingredients-index__name{font-size:var(--font-size-body-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug)}.ingredients-index__row-main{gap:var(--space-sm);flex-direction:column;flex:1;min-width:0;display:flex}.ingredients-index__emoji{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.ingredients-index__emoji-preview-wrap{align-items:center;gap:var(--space-xs);display:inline-flex}.ingredients-index__emoji-preview{min-width:var(--tap-min);min-height:var(--tap-min);font-size:var(--font-size-headline-md);justify-content:center;align-items:center;line-height:1;display:inline-flex}.ingredients-index__emoji-fallback{color:var(--color-on-surface-variant);font-size:var(--font-size-label-sm);line-height:var(--line-height-snug)}.ingredients-index__emoji .field-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ingredients-index__emoji-clear:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (width>=768px){.ingredients-index{padding:var(--space-xl)}.ingredients-index__row{justify-content:space-between;align-items:flex-start;gap:var(--space-md);flex-direction:row}.ingredients-index__row .select-trigger{flex-shrink:0;min-width:240px}}.recipe-show{gap:var(--space-section);flex-direction:column;width:100%;display:flex}.recipe-show__header{gap:var(--space-lg);flex-direction:column;display:flex}.recipe-show__hero-media{width:100%;position:relative}.recipe-show__image{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.recipe-show__back{top:var(--space-page);left:var(--space-page);z-index:1;position:absolute}.recipe-show__edit{top:var(--space-page);right:var(--space-page);z-index:1;width:var(--button-height);height:var(--button-height);min-height:var(--button-height);border-radius:var(--radius-full);background:var(--color-tile-overlay);color:var(--color-on-surface);justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:absolute}.recipe-show__edit:hover{background:var(--color-surface-container)}.recipe-show__edit svg{width:var(--icon-size);height:var(--icon-size)}.recipe-show__hero-toolbar{padding:var(--space-page);justify-content:space-between;align-items:center;padding-bottom:0;display:flex}.recipe-show__hero-toolbar .recipe-show__back,.recipe-show__hero-toolbar .recipe-show__edit{position:static}.recipe-show__body{gap:var(--space-section);padding:var(--space-page);flex-direction:column;padding-top:0;display:flex}.recipe-show__title{gap:var(--space-sm);flex-direction:column;display:flex}.recipe-show__actions{justify-content:space-between;align-items:center;width:100%;display:flex}.recipe-show__meta{gap:var(--space-sm);padding:var(--space-md);background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-lg);display:flex}.recipe-show__meta-item{justify-items:center;gap:var(--space-xs);text-align:center;flex:1;grid-template-rows:auto auto auto;min-width:0;display:grid}.recipe-show__meta dt{display:contents}.recipe-show__meta-icon{width:var(--icon-size);height:var(--icon-size);color:var(--color-primary)}.recipe-show__meta-value{font-size:var(--font-size-label-md);font-weight:var(--font-weight-semibold);color:var(--color-on-surface)}.recipe-show__meta-label{font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-label-sm);color:var(--color-on-surface-variant)}.recipe-show__section{gap:var(--space-sm);flex-direction:column;display:flex}.recipe-show__ingredients{padding-left:var(--space-xl);gap:var(--space-sm);color:var(--color-on-surface-variant);flex-direction:column;list-style:outside;display:flex}.recipe-show__instructions{white-space:pre-wrap;color:var(--color-on-surface-variant);line-height:var(--line-height-body)}.recipe-show__source{font-size:var(--font-size-body-sm)}.recipe-show__source a{color:var(--color-primary);font-weight:var(--font-weight-medium)}.recipe-show__source a:hover{color:var(--color-on-primary-container)}@media (width>=768px){.recipe-show{padding-bottom:var(--space-xl)}.recipe-show__image{aspect-ratio:16/9}.recipe-show__hero-body,.recipe-show__body,.recipe-show__hero-toolbar{padding-inline:var(--space-xl)}.recipe-show__meta{margin-inline:var(--space-xl)}}.shopping-lists{padding:var(--space-page);gap:var(--space-section);flex-direction:column;width:100%;display:flex}.shopping-lists__header h1{font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight);margin-bottom:var(--space-md)}.shopping-lists__header p{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);line-height:var(--line-height-body)}.shopping-lists__create h2,.shopping-lists__items h2{font-size:var(--font-size-headline-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-sm);margin-bottom:var(--space-md)}.shopping-lists__create-form,.shopping-lists__rename-form{gap:var(--space-md);flex-direction:column;display:flex}.shopping-lists__empty{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md)}.shopping-lists__list{gap:var(--space-md);flex-direction:column;padding:0;list-style:none;display:flex}.shopping-lists__item{gap:var(--space-md);padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.shopping-lists__item-header{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.shopping-lists__item-name{font-size:var(--font-size-body-md);font-weight:var(--font-weight-semibold)}.shopping-lists__item-name a{color:inherit;text-decoration:none}.shopping-lists__item-name a:hover{color:var(--color-primary)}.shopping-lists__item-actions{gap:var(--space-md);flex-direction:column;display:flex}@media (width>=768px){.shopping-lists{padding:var(--space-xl)}.shopping-lists__create-form{flex-direction:row;align-items:flex-end}.shopping-lists__create-form .field-root,.shopping-lists__create-form [data-slot=field-root]{flex:1}.shopping-lists__rename-form{flex-direction:row;align-items:flex-end}.shopping-lists__rename-form .field-root,.shopping-lists__rename-form [data-slot=field-root]{flex:1}.shopping-lists__item-actions{flex-flow:wrap;align-items:flex-end}}.shopping-list-show{padding:var(--space-page);padding-bottom:calc(var(--quick-add-dock-height) + var(--space-page));gap:var(--space-md);flex-direction:column;width:100%;display:flex}.shopping-list-show__back{min-height:var(--tap-min);font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);color:var(--color-primary);align-items:center;text-decoration:none;display:inline-flex}.shopping-list-show__back:hover{color:var(--color-on-primary-container)}.shopping-list-show__title-row{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.shopping-list-show__title{font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight)}.shopping-list-detail-form{gap:var(--space-md);display:grid}.shopping-list-detail-form--row{gap:var(--space-md);grid-template-columns:1fr auto;width:100%;display:grid}@media (width>=768px){.shopping-list-show{padding:var(--space-xl);padding-bottom:calc(var(--quick-add-dock-height) + var(--space-xl))}}.planning{padding:var(--space-page);gap:var(--space-section);flex-direction:column;width:100%;display:flex}.planning__header{gap:var(--space-sm);flex-direction:column;display:flex}.planning__week-label{color:var(--color-on-surface-variant)}.planning__nav{justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:nowrap;display:flex}.planning__nav-btn{min-width:var(--tap-min);padding-inline:var(--space-sm);flex:none;justify-content:center;align-items:center;display:inline-flex}.planning__nav-btn svg{width:var(--icon-size);height:var(--icon-size)}.planning__nav-today{text-align:center;white-space:nowrap;flex:auto;min-width:0}.planning__shop,.planning__shop .button{width:100%}.planning__shop-empty{font-size:var(--font-size-body-sm);color:var(--color-on-surface-variant)}.planning__days{gap:var(--space-section);flex-direction:column;display:flex}.planning__day{gap:var(--space-sm);flex-direction:column;display:flex}.planning__day-title{text-transform:capitalize}.planning__slots{gap:var(--space-sm);flex-direction:column;display:flex}.planning__slot{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.planning__slot-label{font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-label-sm);color:var(--color-on-surface-variant);text-transform:uppercase}.planning__slot-content{gap:var(--space-sm);flex-direction:column;display:flex}.planning__slot-recipe{align-items:center;gap:var(--space-md);display:flex}.planning__slot-thumb{border-radius:var(--radius-sm);object-fit:cover;background:var(--color-surface-container);flex-shrink:0;width:40px;height:40px}.planning__slot-title{font-size:var(--font-size-body-md);font-weight:var(--font-weight-medium);color:var(--color-on-surface);min-width:0}.planning__slot-recipe:hover .planning__slot-title{color:var(--color-primary)}.planning__slot-note{color:var(--color-on-surface)}.planning__slot-empty{color:var(--color-on-surface-variant);text-align:left;width:100%;min-height:var(--tap-min)}.planning__slot-empty:hover{color:var(--color-primary)}.planning__slot-actions{gap:var(--space-sm);display:flex}.planning-dialog__mode{gap:var(--space-sm);flex-shrink:0;display:flex}.planning-dialog__mode .button{flex:1}.planning-dialog__recipe-panel{gap:var(--space-md);flex-direction:column;flex:1;min-height:0;display:flex}.planning-dialog__recipe-panel .dialog-actions{flex-shrink:0;margin-top:auto}.planning-dialog__recipes{gap:var(--space-xs);flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.planning-dialog__recipe{align-items:center;gap:var(--space-md);min-height:var(--button-height);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-sm);text-align:left;flex-shrink:0;width:100%;display:flex}.planning-dialog__recipe[data-selected],.planning-dialog__day[data-selected]{border-color:var(--color-primary);background:var(--color-primary-container);color:var(--color-on-primary-container)}.planning-dialog__recipe-thumb{border-radius:var(--radius-sm);object-fit:cover;background:var(--color-surface-container);flex-shrink:0;width:40px;height:40px}.planning-dialog__empty{color:var(--color-on-surface-variant);font-size:var(--font-size-body-sm)}.planning-dialog__days{gap:var(--space-xs);flex-direction:column;display:flex}.planning-dialog__day{min-height:var(--button-height);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-sm);background:var(--color-surface);text-transform:capitalize;justify-content:space-between;align-items:center;display:flex}@media (width>=768px){.planning__header h1{font-size:var(--font-size-headline-lg)}}.errors-page{padding:var(--space-page);gap:var(--space-md);flex-direction:column;width:100%;display:flex}.errors-page h1{font-size:var(--font-size-headline-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-lg);line-height:var(--line-height-tight)}.errors-page p{font-size:var(--font-size-body-md);color:var(--color-on-surface-variant)}.recipe-card{gap:var(--space-md);padding:var(--space-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);color:inherit;min-height:var(--tap-min);text-decoration:none;display:flex}.recipe-card:hover{border-color:var(--color-outline-strong)}.recipe-card__image{border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;width:72px;height:72px}.recipe-card__body{justify-content:center;gap:var(--space-xs);flex-direction:column;min-width:0;display:flex}.recipe-card__meta{color:var(--color-on-surface-variant);font-size:var(--font-size-body-sm);line-height:var(--line-height-caption)}.shopping-list-tile-wrapper{border-radius:var(--radius-lg);border:1px solid var(--color-tile-border);background:var(--color-surface);min-width:0;position:relative;overflow:hidden}.shopping-list-tile-wrapper--purchased{touch-action:pan-y;border-color:var(--color-outline);background:var(--color-purchased-surface)}.shopping-list-tile-wrapper__delete-hint{padding:0;padding-right:var(--space-md);border-radius:var(--radius-lg);background:var(--color-error);color:var(--color-on-error);font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);cursor:pointer;z-index:0;border:none;justify-content:flex-end;align-items:center;display:flex;position:absolute;inset:0}.shopping-list-tile{z-index:1;aspect-ratio:1;border-radius:inherit;background:inherit;width:100%;color:var(--color-on-surface);border:none;flex-direction:column;transition:transform .2s,opacity .2s;display:flex;position:relative;overflow:hidden}.shopping-list-tile--purchased{color:var(--color-on-purchased)}.shopping-list-tile__detail{top:var(--space-xs);right:var(--space-xs);z-index:2;width:var(--space-xl);height:var(--space-xl);min-height:unset;border-radius:var(--radius-sm);background:var(--color-tile-overlay);color:var(--color-on-surface);font-size:var(--font-size-label-md);cursor:pointer;border:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex;position:absolute}.shopping-list-tile__delete{top:var(--space-xs);left:var(--space-xs);z-index:2;width:var(--space-xl);height:var(--space-xl);min-height:unset;border-radius:var(--radius-sm);background:var(--color-tile-overlay);color:var(--color-error);cursor:pointer;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute}.shopping-list-tile__delete svg{width:14px;height:14px}.shopping-list-tile--purchased .shopping-list-tile__detail,.shopping-list-tile--purchased .shopping-list-tile__delete{color:var(--color-on-purchased)}.shopping-list-tile__main{justify-content:center;align-items:center;gap:var(--space-xs);width:100%;min-height:var(--tap-min);padding:var(--space-sm);cursor:pointer;text-align:center;color:inherit;background:0 0;border:none;flex-direction:column;flex:1;font-family:inherit;display:flex}.shopping-list-tile__main:active{transform:scale(.97)}.shopping-list-tile__icon{font-size:var(--font-size-headline-md);line-height:1}.shopping-list-tile__name{font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);word-break:break-word}.shopping-list-tile__subtitle{font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);line-height:var(--line-height-snug);letter-spacing:var(--letter-spacing-label-sm);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.shopping-list-tile--purchased .shopping-list-tile__subtitle{color:var(--color-purchased)}.shopping-list-tile-grid{gap:var(--tile-grid-gap);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width>=768px){.shopping-list-tile-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1024px){.shopping-list-tile-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.shopping-list-zone{gap:var(--space-md);flex-direction:column;display:flex}.shopping-list-zone__header{justify-content:space-between;align-items:baseline;gap:var(--space-sm);display:flex}.shopping-list-zone__header h2{font-size:var(--font-size-headline-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-headline-sm);line-height:var(--line-height-snug);margin:0}.shopping-list-zone__count{font-size:var(--font-size-body-sm);color:var(--color-on-surface-variant)}.shopping-list-zone__empty{color:var(--color-on-surface-variant);font-size:var(--font-size-body-md);margin:0}.shopping-list-zone--purchased{padding:var(--space-md);border-radius:var(--radius-lg);background:var(--color-purchased-surface)}.shopping-list-zone__clear-form{margin-top:var(--space-sm)}.shopping-list-zone__clear-button{width:100%}.shopping-list-quick-add--dock{bottom:calc(var(--dock-height) + var(--keyboard-inset-bottom,0px) + env(safe-area-inset-bottom,0px));z-index:var(--z-dock);padding:var(--space-md) var(--space-page);background:var(--color-surface);border-top:1px solid var(--color-outline);position:fixed;left:0;right:0}.shopping-list-quick-add__dock{gap:var(--space-md);max-height:70vh;max-width:var(--content-max-width);flex-direction:column-reverse;width:100%;margin:0 auto;display:flex;overflow-y:auto}.shopping-list-quick-add{gap:var(--space-md);flex-direction:column;display:flex}.shopping-list-quick-add__search-group{gap:var(--space-xs);flex-direction:column;display:flex}.shopping-list-quick-add__search-group-field{gap:var(--space-xs);align-items:stretch;display:flex}.shopping-list-quick-add__search-group-field .input{flex:1;min-width:0}.shopping-list-quick-add__input{width:100%;min-width:0;font-size:var(--font-size-body-md);height:var(--input-height);color:var(--color-on-surface);background:0 0;border:none;outline:none;flex:1}.shopping-list-quick-add__submit{width:auto;padding:var(--space-sm) var(--space-md);flex-shrink:0}.shopping-list-quick-add__error{padding:0 var(--space-md);margin:0}.shopping-list-quick-add__status{font-size:var(--font-size-body-sm);color:var(--color-outline-strong);margin:0}.shopping-list-quick-add__suggestions{border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);margin:0;padding:0;list-style:none;overflow:hidden}.shopping-list-quick-add__suggestion{align-items:center;gap:var(--space-sm);width:100%;min-height:var(--tap-min);padding:var(--space-md);text-align:left;font-family:inherit;font-size:var(--font-size-body-md);color:var(--color-on-surface);cursor:pointer;background:0 0;border:none;display:flex}.shopping-list-quick-add__suggestion:hover,.shopping-list-quick-add__suggestion--active{background:var(--color-primary-container);color:var(--color-on-primary-container)}.shopping-list-quick-add__frequent-label{font-size:var(--font-size-body-sm);color:var(--color-outline-strong);margin:0 0 var(--space-sm)}.shopping-list-quick-add__frequent-grid{gap:var(--tile-gap);flex-wrap:wrap;display:flex}.shopping-list-quick-add__suggestion-tile-grid{padding:var(--space-md)}.shopping-list-suggestion{justify-content:center;align-items:center;gap:var(--space-xs);min-width:72px;min-height:var(--tap-min);padding:var(--space-sm);border-radius:var(--radius-lg);cursor:pointer;border:none;flex-direction:column;font-family:inherit;transition:transform .15s;display:flex}.shopping-list-suggestion:active:not(:disabled){transform:scale(.96)}.shopping-list-suggestion:disabled{opacity:.6;cursor:not-allowed}.shopping-list-suggestion__icon{font-size:var(--font-size-headline-sm);line-height:1}.shopping-list-suggestion__name{font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);text-align:center;line-height:var(--line-height-tight)}.shopping-list-suggestion__subtitle{font-size:var(--font-size-label-sm);font-weight:var(--font-weight-medium);text-align:center;line-height:var(--line-height-snug);color:var(--color-on-surface-variant)}.shopping-list-suggestion--purchased{background:var(--color-purchased-surface);color:var(--color-on-purchased)}.shopping-list-suggestion--purchased .shopping-list-suggestion__subtitle{color:var(--color-on-purchased)}.shopping-list-suggestion--active{background:var(--color-primary-container);color:var(--color-on-primary-container)}.shopping-list-suggestion--active .shopping-list-suggestion__subtitle{color:var(--color-on-primary-container)}.add-to-list__ingredients{gap:var(--space-sm);flex-direction:column;max-height:40vh;display:flex;overflow-y:auto}.add-to-list__toggle-actions{gap:var(--space-lg);display:flex}.add-to-list__toggle-actions button{min-height:var(--button-height);font-family:inherit;font-size:var(--font-size-label-md);font-weight:var(--font-weight-medium);color:var(--color-primary);cursor:pointer}.add-to-list__toggle-actions button:hover{color:var(--color-on-primary-container)}.add-to-list__no-lists{font-size:var(--font-size-body-sm);color:var(--color-on-surface-variant)}
