.app-layout{height:100vh;overflow:hidden;display:flex;background:var(--color-background)}.app-sidebar{display:flex;flex-direction:column;flex-shrink:0;width:15rem;padding:var(--space-lg) var(--space-md);background:var(--color-surface);border-right:1px solid var(--color-border);transition:width .15s ease;overflow-y:auto}.app-sidebar__top{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-sm) var(--space-xl)}.app-sidebar__brand{display:flex;align-items:center;font-family:var(--font-display);font-weight:700;font-size:var(--font-size-lg);color:var(--color-primary);overflow:hidden;white-space:nowrap}.app-sidebar__brand-mark{display:none}.app-sidebar__collapse-toggle{width:1.75rem;height:1.75rem;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.app-sidebar__collapse-toggle svg{width:1rem;height:1rem;transition:transform .15s ease}.app-sidebar__collapse-toggle:hover{background:var(--color-surface-alt);color:var(--color-text)}.app-sidebar__nav{display:flex;flex:1;flex-direction:column;gap:var(--space-xs)}.app-sidebar__nav a{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-base);color:var(--color-text);font-weight:600;font-size:var(--font-size-sm);text-decoration:none;white-space:nowrap;overflow:hidden}.app-sidebar__nav a svg{flex-shrink:0;width:1.25rem;height:1.25rem}.app-sidebar__nav a:hover{background:var(--color-surface-alt)}.app-sidebar__nav a.active{background:var(--color-primary);color:#fff}.app-sidebar__settings{padding-top:var(--space-md);border-top:1px solid var(--color-border)}.app-sidebar__settings-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;text-align:left;color:var(--color-text);background:none;border:none;border-radius:var(--radius-base);cursor:pointer}.app-sidebar__settings-toggle:hover{background:var(--color-surface-alt)}.app-sidebar__settings-toggle-left{display:flex;align-items:center;gap:var(--space-sm);overflow:hidden}.app-sidebar__settings-toggle-left svg{flex-shrink:0;width:1.25rem;height:1.25rem}.app-sidebar__settings-nav{margin-top:var(--space-xs)}.app-sidebar__footer{position:relative;padding-top:var(--space-md);border-top:1px solid var(--color-border)}.app-sidebar__account-toggle{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:.4rem var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;text-align:left;cursor:pointer;border-radius:var(--radius-base);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);overflow:hidden;white-space:nowrap}.app-sidebar__account-toggle:hover{background:var(--color-surface-alt)}.app-sidebar__avatar{flex-shrink:0;width:1.5rem;height:1.5rem;display:grid;place-items:center;border-radius:50%;background:var(--color-primary);color:#fff;font-size:var(--font-size-xs);font-weight:700}.app-sidebar__account-menu{position:absolute;bottom:calc(100% + var(--space-xs));left:0;right:0;display:flex;flex-direction:column;overflow:hidden;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base);box-shadow:var(--shadow-md)}.app-sidebar__account-menu a,.app-sidebar__account-menu button{padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;text-align:left;text-decoration:none;color:var(--color-text);background:none;border:none;cursor:pointer;white-space:nowrap}.app-sidebar__account-menu a:hover,.app-sidebar__account-menu button:hover{background:var(--color-surface-alt)}.app-sidebar__version{margin:var(--space-xs) 0 0;padding:0 var(--space-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);text-align:center}@media (min-width: 641px){.app-sidebar.collapsed{width:4.25rem;padding-left:var(--space-sm);padding-right:var(--space-sm)}.app-sidebar.collapsed .app-sidebar__top{flex-direction:column;gap:var(--space-sm);padding-left:0;padding-right:0}.app-sidebar.collapsed .app-sidebar__brand-full{display:none}.app-sidebar.collapsed .app-sidebar__brand-mark{display:block}.app-sidebar.collapsed .app-sidebar__collapse-toggle svg{transform:rotate(180deg)}.app-sidebar.collapsed .app-sidebar__nav a,.app-sidebar.collapsed .app-sidebar__settings-toggle,.app-sidebar.collapsed .app-sidebar__account-toggle{justify-content:center;padding-left:0;padding-right:0}.app-sidebar.collapsed .app-sidebar__settings-toggle-left{gap:0}.app-sidebar.collapsed .label,.app-sidebar.collapsed .chevron,.app-sidebar.collapsed .app-sidebar__version{display:none}.app-sidebar.collapsed .app-sidebar__account-menu{left:0;right:auto;width:12rem}}.app-content{flex:1;min-width:0;min-height:0;overflow-y:auto;padding:var(--space-xl)}@media (max-width: 640px){.app-layout{flex-direction:column}.app-sidebar{flex-direction:row;align-items:center;width:100%;padding:var(--space-sm) var(--space-md);border-right:none;border-bottom:1px solid var(--color-border)}.app-sidebar__top{padding:0 var(--space-sm) 0 0}.app-sidebar__brand{padding:0}.app-sidebar__collapse-toggle,.app-sidebar__version{display:none}.app-sidebar__nav{flex:1 1 auto;min-width:0;flex-direction:row;overflow-x:auto}.app-sidebar__nav a{flex-shrink:0}.app-sidebar__settings,.app-sidebar__footer{position:relative;flex:none;padding-top:0;border-top:none}.app-sidebar__settings-toggle,.app-sidebar__account-toggle{padding-left:var(--space-xs);padding-right:var(--space-xs)}.app-sidebar__settings-toggle-left .label,.app-sidebar__account-toggle .label,.app-sidebar__settings-toggle .chevron{display:none}.app-sidebar__settings-nav{position:absolute;top:calc(100% + var(--space-xs));right:0;flex-direction:column;width:14rem;padding:var(--space-xs);overflow-x:visible;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base);box-shadow:var(--shadow-md);z-index:10}.app-sidebar__account-menu{top:calc(100% + var(--space-xs));bottom:auto;left:auto;right:0;width:12rem}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:var(--color-background)}.auth-card{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;max-width:var(--max-width-form);padding:var(--space-xl);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.auth-card h1{font-size:var(--font-size-lg);text-align:center;margin-bottom:var(--space-sm)}.auth-card label{font-size:var(--font-size-sm);font-weight:600;margin-top:var(--space-sm)}.auth-card input{padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-base)}.auth-card button{margin-top:var(--space-md);padding:.6rem;font-family:var(--font-body);font-size:var(--font-size-base);font-weight:600;cursor:pointer;border-radius:var(--radius-base);border:none;background:var(--color-primary);color:#fff}.auth-card button:hover:not(:disabled){background:var(--color-primary-hover)}.auth-card button:disabled{opacity:.6;cursor:not-allowed}.auth-switch{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-md);text-align:center}.auth-switch a{color:var(--color-primary);font-weight:600}label{display:block;font-size:var(--font-size-sm);font-weight:600;margin-top:var(--space-sm)}input:not([type=checkbox]):not([type=radio]),select{width:100%;padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-base)}.allergy-select{display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:var(--space-xs) var(--space-md);margin:var(--space-sm) 0 0;padding:0;border:none}.allergy-select legend{grid-column:1/-1;padding:0;font-size:var(--font-size-sm);font-weight:600}.allergy-select__option{margin-top:0;font-weight:400;font-size:var(--font-size-base)}.onboarding-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:var(--color-background)}.onboarding-card{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;max-width:var(--max-width-form);padding:var(--space-xl);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.onboarding-card h1{font-size:var(--font-size-lg);text-align:center;margin-bottom:var(--space-sm)}.onboarding-card h2{margin:var(--space-md) 0 var(--space-xs);font-size:var(--font-size-base)}.onboarding-card button{margin-top:var(--space-md);padding:.6rem;font-family:var(--font-body);font-size:var(--font-size-base);font-weight:600;cursor:pointer;border-radius:var(--radius-base);border:none;background:var(--color-primary);color:#fff}.onboarding-card button:hover:not(:disabled){background:var(--color-primary-hover)}.onboarding-card button:disabled{opacity:.6;cursor:not-allowed}.onboarding-card .onboarding-skip{background:none;color:var(--color-text-muted);font-weight:600;text-decoration:underline}.onboarding-card .onboarding-skip:hover:not(:disabled){color:var(--color-text);background:none}.onboarding-step{color:var(--color-text-muted);font-size:var(--font-size-xs);text-align:center;text-transform:uppercase;letter-spacing:.04em;margin:0 0 var(--space-sm)}.onboarding-subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm);text-align:center;margin:0 0 var(--space-sm)}.source-select{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--space-xs) var(--space-md);margin:var(--space-sm) 0 0;padding:0;border:none}.source-select legend{grid-column:1/-1;padding:0;font-size:var(--font-size-sm);font-weight:600}.source-select__option{display:flex;align-items:center;gap:var(--space-xs);margin-top:0;font-weight:400;font-size:var(--font-size-base)}.source-select__icon{width:1.1em;height:1.1em;object-fit:contain;flex-shrink:0}.source-select__badge{padding:.1rem .4rem;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);background:var(--color-surface-alt);border-radius:var(--radius-base)}.source-select__badge.is-official{color:var(--color-primary)}.dialog-panel{display:flex;flex-direction:column;width:100%;max-width:48rem;max-height:calc(100vh - var(--space-2xl));margin:auto;padding:0;border:none;background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.dialog-panel::backdrop{background:#00000073}.dialog-panel__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border)}.dialog-panel__header h2{font-size:var(--font-size-lg)}.dialog-panel__close{flex:none;width:2rem;height:2rem;border:none;border-radius:var(--radius-base);background:transparent;color:var(--color-text-muted);font-size:var(--font-size-md);cursor:pointer}.dialog-panel__close:hover{background:var(--color-surface-alt);color:var(--color-text)}.dialog-panel__body{flex:1;min-height:0;overflow-y:auto;padding:var(--space-lg)}.dialog-panel__footer{flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-border)}.allergen-badges,.diet-badges,.disliked-badges{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:var(--space-sm) 0 0;padding:0;list-style:none}.allergen-badge,.diet-badge,.disliked-badge{padding:.15rem .6rem;font-size:var(--font-size-xs);font-weight:600;border-radius:var(--radius-pill)}.allergen-badge{color:var(--color-allergen-ink);background:var(--color-allergen)}.diet-badge{color:var(--color-tag-ink);background:var(--color-tag)}.disliked-badge{color:var(--color-text-muted);background:none;border:1px dashed var(--color-border)}.reproducible-badge{display:inline-block;margin:var(--space-sm) 0 0;padding:.15rem .6rem;font-size:var(--font-size-xs);font-weight:600;color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 12%,var(--color-surface));border-radius:var(--radius-pill)}.reproducible-badge--link{text-decoration:none;cursor:pointer}.reproducible-badge--link:hover{background:color-mix(in srgb,var(--color-primary) 22%,var(--color-surface))}.recipes-page{height:100%;display:flex;flex-direction:column}.recipes-page__header{flex-shrink:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-md)}.recipes-page__search{flex:1 1 16rem;max-width:24rem;padding:.5rem var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text)}.recipes-page__new-button{flex:none;padding:.5rem var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;color:#fff;background:var(--color-primary);border:none;border-radius:var(--radius-base);cursor:pointer;text-decoration:none}.recipes-page__new-button:hover{background:var(--color-primary-hover)}.recipes-page__status{margin-top:var(--space-xl);color:var(--color-text-muted);font-size:var(--font-size-md)}.recipes-page__status--error{color:var(--color-error)}.recipes-page__catalog{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(35vw,38vw);grid-template-rows:minmax(0,1fr);gap:var(--space-lg)}@media (max-width: 1024px){.recipes-page__catalog{grid-template-columns:1fr;grid-template-rows:auto;height:auto}}.recipe-tabs{flex-shrink:0;display:flex;gap:var(--space-xs);overflow-x:auto;border-bottom:1px solid var(--color-border);margin-bottom:var(--space-md)}.recipe-tabs__tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;display:flex;align-items:center;gap:.4rem;padding:var(--space-sm) var(--space-md);font-family:var(--font-display);font-size:var(--font-size-sm);font-weight:700;letter-spacing:.02em;color:var(--color-text-muted);background:none;border:none;border-bottom:2.5px solid transparent;cursor:pointer;transition:color .15s ease,border-color .15s ease}.recipe-tabs__tab svg{width:1.05rem;height:1.05rem;flex:none}.recipe-tabs__tab .recipe-tabs__source-icon{width:1.05rem;height:1.05rem;flex:none;object-fit:contain}.recipe-tabs__tab:hover{color:var(--color-text)}.recipe-tabs__tab.active{color:var(--color-primary);border-color:var(--color-primary)}.recipe-tabs__tab.placeholder{color:var(--color-border);cursor:not-allowed}.recipe-tabs__tab.placeholder:hover{color:var(--color-border)}.recipe-table-wrap{height:100%;min-height:0;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.recipe-table{width:100%;border-collapse:collapse;text-align:left}.recipe-table th{position:sticky;top:0;z-index:1;background:var(--color-surface);font-family:var(--font-display);font-size:var(--font-size-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);white-space:nowrap}.recipe-table td{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);vertical-align:middle}.recipe-table tbody tr{cursor:pointer;transition:background-color .12s ease}.recipe-table tbody tr:hover{background:var(--color-surface-alt)}.recipe-table tbody tr.selected{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface))}.recipe-table tbody tr.selected td:first-child{box-shadow:inset 3px 0 0 var(--color-primary)}.recipe-table tbody tr:last-child td{border-bottom:none}.recipe-table__photo{width:2.6rem;height:2.6rem;border-radius:var(--radius-base);background:var(--color-surface-alt);display:flex;align-items:center;justify-content:center;font-size:1.3rem;overflow:hidden}.recipe-table__photo img{width:100%;height:100%;object-fit:cover}.recipe-table__name{font-weight:600}.recipe-table__fav-mark{color:var(--color-tag);margin-left:.3rem;font-size:var(--font-size-sm)}.recipe-table__muted{color:var(--color-text-muted);font-size:var(--font-size-sm)}.recipes-page__header--sources{gap:var(--space-sm)}.source-item-table__imported-badge{padding:.1rem .5rem;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);background:var(--color-surface-alt);border-radius:var(--radius-pill);white-space:nowrap}.source-items-column{height:100%;min-height:0;display:flex;flex-direction:column;gap:var(--space-sm)}.source-items-retry{padding:0;font-family:inherit;font-size:inherit;font-weight:600;color:var(--color-primary);background:none;border:none;text-decoration:underline;cursor:pointer}@keyframes source-item-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.9}}.source-item-table__sentinel td{padding:0;border:none}.source-item-table__row--skeleton{cursor:default;pointer-events:none}.source-item-table__row--skeleton:hover{background:none}.source-item-table__photo--skeleton,.source-item-table__skeleton-bar{background:var(--color-border);animation:source-item-skeleton-pulse 1.4s ease-in-out infinite}.source-item-table__skeleton-bar{display:block;width:60%;height:.9rem;border-radius:var(--radius-pill)}@media (prefers-reduced-motion: reduce){.source-item-table__photo--skeleton,.source-item-table__skeleton-bar{animation:none;opacity:.6}}.source-item-preview__hint{margin:0 0 var(--space-sm);padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);color:var(--color-warning);background:color-mix(in srgb,var(--color-warning) 12%,var(--color-surface));border-radius:var(--radius-base)}.recipe-detail-panel{height:100%;min-height:0;display:flex;flex-direction:column;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.recipe-detail-panel__status{padding:var(--space-lg);color:var(--color-text-muted);font-size:var(--font-size-md)}.recipe-detail-panel__status--error{color:var(--color-error)}.recipe-detail-panel__header{flex-shrink:0;position:relative}.recipe-detail-panel__photo{height:9rem;width:100%;background:linear-gradient(160deg,color-mix(in srgb,var(--color-primary) 22%,var(--color-surface-alt)),var(--color-surface-alt));display:flex;align-items:center;justify-content:center;font-size:3rem;overflow:hidden}.recipe-detail-panel__photo img{width:100%;height:100%;object-fit:cover}.recipe-detail-panel__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--space-md) 0}.recipe-detail-panel__title-row h2{font-size:var(--font-size-lg)}.recipe-detail-panel__title-main{display:flex;flex-direction:column;gap:.2rem;min-width:0}.recipe-detail-panel__title-main h2{margin:0}.recipe-detail-panel__portions{margin:0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.recipe-detail-panel__title-badges{display:flex;flex-direction:column;align-items:flex-end;gap:.3rem}.recipe-detail-panel__title-badges .allergen-badges,.recipe-detail-panel__title-badges .disliked-badges{justify-content:flex-end;margin-top:0}.recipe-detail-panel__actions{flex-shrink:0;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md)}.recipe-detail-panel__danger-button{padding:.5rem var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;color:#fff;background:var(--color-error);border:none;border-radius:var(--radius-base);cursor:pointer}.recipe-detail-panel__danger-button:hover{opacity:.9}.recipe-detail-panel__danger-button:disabled{opacity:.6;cursor:not-allowed}.recipe-detail-panel__delete-confirm{display:flex;align-items:center;gap:var(--space-sm)}.recipe-detail-panel__delete-confirm button:not(.recipe-detail-panel__danger-button){padding:.5rem var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;border-radius:var(--radius-base);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.recipe-detail-panel__section{flex-shrink:0;padding:var(--space-md)}.recipe-detail-panel__section+.recipe-detail-panel__section{border-top:1px solid var(--color-border)}.recipe-detail-panel__section h3{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.recipe-detail-panel__section--description{padding:var(--space-lg) var(--space-md)}.recipe-detail-panel__description{color:var(--color-text);font-size:var(--font-size-base);line-height:1.7;margin:0}.recipe-detail-panel__steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-md);counter-reset:step}.recipe-detail-panel__steps li{counter-increment:step}.recipe-detail-panel__steps li:before{content:counter(step) ". ";font-weight:700;color:var(--color-primary)}.recipe-detail-panel__steps li img{display:block;max-width:100%;border-radius:var(--radius-base);margin-bottom:var(--space-xs)}.recipe-detail-panel__steps li p{display:inline;margin:0}.step-tech-step{display:inline;padding:0 .15em;margin:0;font:inherit;color:inherit;background:color-mix(in srgb,var(--color-primary) 14%,transparent);border:none;border-radius:.2em;text-decoration:underline dotted var(--color-primary);text-decoration-thickness:1px;text-underline-offset:.15em;cursor:help}.step-tech-step:hover,.step-tech-step:focus-visible{background:color-mix(in srgb,var(--color-primary) 24%,transparent);outline:none}.step-tech-step--manual{background:color-mix(in srgb,var(--color-tag) 18%,transparent);text-decoration-color:var(--color-tag)}.step-tech-step--manual:hover,.step-tech-step--manual:focus-visible{background:color-mix(in srgb,var(--color-tag) 28%,transparent)}.recipe-detail-panel__tech-step-hint{margin:0 0 var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-muted)}.tech-step-correction-popover{margin-top:var(--space-xs);padding:var(--space-md);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-md)}.tech-step-correction-popover__selection{font-weight:600;margin:0 0 var(--space-sm)}.tech-step-correction-popover__list{display:flex;flex-wrap:wrap;gap:var(--space-xs);list-style:none;margin:0 0 var(--space-sm);padding:0}.tech-step-correction-popover__list button{padding:.3rem .6rem;font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);cursor:pointer}.tech-step-correction-popover__list button:hover:not(:disabled){background:color-mix(in srgb,var(--color-primary) 14%,transparent);border-color:var(--color-primary)}.tech-step-correction-popover__list button:disabled{opacity:.5;cursor:not-allowed}.tech-step-correction-popover__list .tech-step-correction-popover__remove{color:var(--color-error);border-color:var(--color-error)}.tech-step-correction-popover__cancel{background:none;border:none;color:var(--color-text-muted);text-decoration:underline;cursor:pointer;padding:0;font-size:var(--font-size-sm)}.favorite-star-button{position:absolute;top:var(--space-sm);right:var(--space-sm);width:2.2rem;height:2.2rem;border-radius:50%;border:none;cursor:pointer;background:color-mix(in srgb,var(--color-surface) 82%,transparent);box-shadow:var(--shadow-sm);color:var(--color-border);display:flex;align-items:center;justify-content:center;transition:transform .12s ease,color .12s ease}.favorite-star-button svg{width:1.2rem;height:1.2rem}.favorite-star-button:hover:not(:disabled){transform:scale(1.08)}.favorite-star-button:disabled{cursor:not-allowed}.favorite-star-button.is-favorite{color:var(--color-tag)}.favorite-star-button.is-favorite svg{fill:currentColor}.recipe-detail-panel__source-link{position:absolute;top:var(--space-sm);right:var(--space-sm);width:2.2rem;height:2.2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-surface) 82%,transparent);box-shadow:var(--shadow-sm);color:var(--color-text-muted);transition:transform .12s ease,color .12s ease}.recipe-detail-panel__source-link svg{width:1.1rem;height:1.1rem}.recipe-detail-panel__source-link:hover,.recipe-detail-panel__source-link:focus-visible{color:var(--color-primary);transform:scale(1.08);outline:none}.field-error{color:var(--color-error);font-size:var(--font-size-xs);margin:0}.form-error{color:var(--color-error);font-size:var(--font-size-sm)}.recipe-form{display:flex;flex-direction:column;gap:var(--space-xs)}.recipe-form label{font-size:var(--font-size-sm);font-weight:600;margin-top:var(--space-sm)}.recipe-form input,.recipe-form textarea,.recipe-form select{padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base);resize:vertical}.recipe-form__section{margin-top:var(--space-xl)}.recipe-form__section h2{font-size:var(--font-size-lg);margin-bottom:var(--space-sm)}.recipe-form__ingredient-list{list-style:none;margin:0 0 var(--space-sm);padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.recipe-form__actions{margin-top:var(--space-xl)}.recipe-form button[type=submit]{padding:.6rem var(--space-lg);font-family:var(--font-body);font-size:var(--font-size-base);font-weight:600;cursor:pointer;border:none;border-radius:var(--radius-base);background:var(--color-primary);color:#fff}.recipe-form button[type=submit]:hover:not(:disabled){background:var(--color-primary-hover)}.recipe-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.import-recipe__unresolved{margin:var(--space-sm) 0;padding:var(--space-sm) var(--space-md);background:color-mix(in srgb,var(--color-warning) 8%,var(--color-surface));border:1px solid color-mix(in srgb,var(--color-warning) 30%,var(--color-border));border-radius:var(--radius-md)}.import-recipe__unresolved h3{margin:0 0 var(--space-xs);font-size:var(--font-size-base)}.import-recipe__unresolved-list{list-style:none;margin:var(--space-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.import-recipe__unresolved-row{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.import-recipe__unresolved-row span{flex:1 1 auto;font-size:var(--font-size-sm)}.import-recipe__unresolved-row button{flex:none;padding:.3rem var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-xs);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base);cursor:pointer}.import-recipe__unresolved-row button:hover{border-color:var(--color-primary)}.diet-tag-select{border:none;padding:0;margin:var(--space-xs) 0 0;display:flex;flex-wrap:wrap;gap:var(--space-xs)}.diet-tag-select legend{width:100%;padding:0 0 var(--space-xs);font-size:var(--font-size-sm);font-weight:600}.diet-tag-select label{margin-top:0;font-weight:400}.ingredient-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);padding:var(--space-sm);background:var(--color-surface);border-radius:var(--radius-base)}.ingredient-row__icon{display:flex;flex-shrink:0;color:var(--color-text-muted)}.ingredient-row__icon svg{width:1.25rem;height:1.25rem}.ingredient-row__name{font-weight:600;margin-right:auto}.ingredient-row__quantity{width:5rem}.ingredient-row__unit{width:11rem}.ingredient-row__remove{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);line-height:1;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text-muted)}.ingredient-row__remove:hover{color:var(--color-error);border-color:var(--color-error)}.ingredient-row--incomplete .ingredient-row__unit{border-color:var(--color-error)}.ingredient-row__error{width:100%;margin:0}.ingredient-picker{display:flex;flex-direction:column;gap:var(--space-sm);-webkit-user-select:none;user-select:none;padding:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base)}.ingredient-picker__search{display:flex;align-items:center;gap:var(--space-xs)}.ingredient-picker__search input{flex:1 1 auto;min-width:0;padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-base);border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface-alt);color:var(--color-text);-webkit-user-select:text;user-select:text}.ingredient-picker__display-options{position:relative;flex-shrink:0}.ingredient-picker__display-toggle{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface-alt);color:var(--color-text-muted)}.ingredient-picker__display-toggle svg{width:1.5rem;height:1.5rem}.ingredient-picker__display-toggle:hover{border-color:var(--color-primary);color:var(--color-text)}.ingredient-picker__display-toggle.active{border-color:var(--color-primary);color:var(--color-primary)}.ingredient-picker__display-menu{position:absolute;z-index:10;top:calc(100% + var(--space-xs));right:0;display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-base);box-shadow:var(--shadow-md)}.ingredient-picker__display-menu label{font-size:var(--font-size-sm);white-space:nowrap}.ingredient-picker__display-menu label .check-mark{margin-left:0}.ingredient-picker__categories{display:flex;gap:var(--space-xs);overflow-x:auto;padding-bottom:var(--space-xs)}.ingredient-picker__category{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--space-xs) var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-sm);white-space:nowrap;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-alt);color:var(--color-text-muted)}.ingredient-picker__category svg{flex-shrink:0;width:1rem;height:1rem}.ingredient-picker__category:hover{border-color:var(--color-primary);color:var(--color-text)}.ingredient-picker__category.active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.ingredient-picker__subcategories{display:flex;gap:var(--space-xs);overflow-x:auto;padding-bottom:var(--space-xs);margin-top:calc(var(--space-xs) * -1)}.ingredient-picker__subcategory{display:flex;align-items:center;gap:4px;flex-shrink:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:2px var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-xs);white-space:nowrap;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:transparent;color:var(--color-text-muted)}.ingredient-picker__subcategory svg{flex-shrink:0;width:.85rem;height:.85rem}.ingredient-picker__subcategory:hover{border-color:var(--color-tag);color:var(--color-text)}.ingredient-picker__subcategory.active{border-color:var(--color-tag);background:var(--color-tag);color:var(--color-tag-ink)}.ingredient-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:var(--space-xs);max-height:18rem;overflow-y:auto;padding:2px}.ingredient-picker__card{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-sm);text-align:center;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface-alt);color:var(--color-text)}.ingredient-picker__card:hover{border-color:var(--color-primary);background:var(--color-surface)}.ingredient-picker__card-icon{display:flex;align-items:center;justify-content:center}.ingredient-picker__card-icon svg{width:1.75rem;height:1.75rem}.ingredient-picker__card-name{font-size:var(--font-size-sm)}.ingredient-picker__empty{padding:var(--space-md);font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center}.step-list-editor__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm);counter-reset:step}.step-list-editor__item{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm);background:var(--color-surface);border-radius:var(--radius-base);counter-increment:step}.step-list-editor__item:before{content:counter(step);flex:none;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:var(--space-xs);font-size:var(--font-size-xs);font-weight:600;color:#fff;background:var(--color-primary);border-radius:50%}.step-list-editor__reorder{display:flex;flex-direction:column;gap:.15rem}.step-list-editor__reorder button{padding:.1rem .4rem;line-height:1;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface)}.step-list-editor__reorder button:disabled{opacity:.4;cursor:not-allowed}.step-list-editor__fields{flex:1;display:flex;flex-direction:column;gap:var(--space-xs)}.step-list-editor__fields textarea,.step-list-editor__fields input{padding:var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-background);color:var(--color-text);resize:vertical}.step-list-editor__remove{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);line-height:1;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text-muted)}.step-list-editor__remove:hover{color:var(--color-error);border-color:var(--color-error)}.step-list-editor__add{margin-top:var(--space-sm);padding:.5rem var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;border:1px dashed var(--color-border);border-radius:var(--radius-base);background:none;color:var(--color-primary)}.step-list-editor__add:hover{border-color:var(--color-primary)}.disliked-ingredients-field{min-width:0;border:none;padding:0;margin:var(--space-md) 0 0}.disliked-ingredients-field legend{padding:0 0 var(--space-xs);font-size:var(--font-size-sm);font-weight:600}.disliked-ingredients-field__chips{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0 0 var(--space-sm);padding:0;list-style:none}.disliked-ingredients-field__chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .3rem .2rem .6rem;font-size:var(--font-size-sm);background:var(--color-surface-alt);border-radius:var(--radius-pill)}.disliked-ingredients-field__chip svg{width:1rem;height:1rem;flex-shrink:0}.disliked-ingredients-field__chip button{display:flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;padding:0;font-size:var(--font-size-xs);line-height:1;color:var(--color-text-muted);background:none;border:none;border-radius:50%;cursor:pointer}.disliked-ingredients-field__chip button:hover{background:var(--color-border);color:var(--color-text)}.tooltip{position:relative;display:inline}.tooltip__bubble{position:absolute;bottom:calc(100% + var(--space-xs));left:50%;z-index:10;width:max-content;max-width:16rem;padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);font-weight:400;line-height:1.3;color:var(--color-background);background:var(--color-text);border-radius:var(--radius-base);box-shadow:var(--shadow-sm);opacity:0;visibility:hidden;transform:translate(-50%,4px);transition:opacity .12s ease,transform .12s ease,visibility .12s;pointer-events:none}.tooltip__bubble:after{position:absolute;top:100%;left:50%;width:.5rem;height:.5rem;content:"";background:var(--color-text);transform:translate(-50%,-50%) rotate(45deg)}.tooltip:hover .tooltip__bubble,.tooltip:focus-within .tooltip__bubble{opacity:1;visibility:visible;transform:translate(-50%)}.recipe-picker-dialog{width:95vw;max-width:85rem;height:80vh;max-height:80vh}.recipe-picker-dialog .dialog-panel__body{display:flex;flex-direction:column}.recipe-picker-dialog .recipe-table-wrap{flex:1;min-height:0}.recipe-picker-dialog .recipes-page__catalog{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.recipe-picker__filters{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-md)}.recipe-picker__search{width:100%;padding:var(--space-sm) var(--space-md);border:1.5px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-base)}.recipe-picker__filter-label{display:block;margin-bottom:var(--space-xs);font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-muted)}.recipe-picker__chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs)}.filter-chip{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-primary) 12%,var(--color-surface));color:var(--color-primary);font-size:var(--font-size-sm);font-weight:600}.filter-chip button{border:none;background:transparent;color:inherit;cursor:pointer;padding:0;font-size:var(--font-size-xs)}.recipe-picker__toggle-ingredient-picker{padding:var(--space-xs) var(--space-sm);border:1.5px dashed var(--color-border);border-radius:var(--radius-pill);background:transparent;color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer}.recipe-picker__toggle-ingredient-picker:hover{border-color:var(--color-primary);color:var(--color-primary)}.recipe-picker-confirm{display:flex;flex-direction:column;gap:var(--space-sm)}.recipe-picker-confirm label{font-weight:600}.recipe-picker-confirm input[type=number]{padding:var(--space-sm) var(--space-md);border:1.5px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-base);max-width:8rem}.recipe-picker-confirm__actions{display:flex;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-sm)}.recipe-picker-confirm__confirm{background:var(--color-primary);color:var(--color-surface);border:none;border-radius:var(--radius-base);padding:var(--space-sm) var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;cursor:pointer}.recipe-picker-confirm__confirm:hover{background:var(--color-primary-hover)}.recipe-picker-confirm__confirm:disabled{opacity:.6;cursor:not-allowed}.dialog-panel__footer button:not(.recipe-picker-confirm__confirm){padding:var(--space-sm) var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;border-radius:var(--radius-base);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.dialog-panel__footer button:not(.recipe-picker-confirm__confirm):hover{border-color:var(--color-primary);color:var(--color-primary)}.week-nav{position:relative;display:flex;align-items:center;gap:var(--space-xs)}.week-nav__arrow{width:2rem;height:2rem;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-md);cursor:pointer}.week-nav__arrow:hover{background:var(--color-surface-alt)}.week-nav__label{display:flex;align-items:center;gap:var(--space-xs);padding:.45rem var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);color:var(--color-text);font-weight:600;font-size:var(--font-size-sm);cursor:pointer}.week-nav__label:hover{background:var(--color-surface-alt)}.today-badge{font-size:var(--font-size-xs);font-weight:600;color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 14%,transparent);padding:.1rem .4rem;border-radius:var(--radius-pill)}.calendar-popover{position:absolute;top:calc(100% + var(--space-xs));right:0;z-index:10;width:18rem;padding:var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.calendar-popover__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-sm);font-weight:700;font-size:var(--font-size-sm);text-transform:capitalize}.calendar-popover__header button{width:1.6rem;height:1.6rem;border:none;background:none;cursor:pointer;font-size:var(--font-size-base);color:var(--color-text-muted);border-radius:var(--radius-base)}.calendar-popover__header button:hover{background:var(--color-surface-alt)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-grid__weekday{text-align:center;font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:600;padding-bottom:var(--space-xs)}.calendar-grid__day{aspect-ratio:1;display:grid;place-items:center;font-size:var(--font-size-sm);border-radius:var(--radius-base);cursor:pointer;color:var(--color-text);border:none;background:none;font:inherit}.calendar-grid__day:hover{background:var(--color-surface-alt)}.calendar-grid__day--muted{color:var(--color-border)}.calendar-grid__day--in-selected-week{background:color-mix(in srgb,var(--color-primary) 14%,transparent);border-radius:0}.calendar-grid__day--today{box-shadow:inset 0 0 0 2px var(--color-primary);font-weight:700}.planning-page{height:100%;display:flex;flex-direction:column}.planning-page__header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-md);margin-bottom:var(--space-lg)}.planning-page__status{color:var(--color-text-muted);font-size:var(--font-size-md)}.planning-page__status--error{color:var(--color-error)}.planning-grid-wrapper{flex:1;min-height:0;overflow:auto;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}table.planning-grid{width:100%;height:100%;min-width:62rem;border-collapse:collapse;table-layout:fixed}table.planning-grid th,table.planning-grid td{border:1px solid var(--color-border);vertical-align:top}table.planning-grid thead th{padding:var(--space-sm) var(--space-md);background:var(--color-surface-alt);text-align:left}table.planning-grid thead th:first-child{width:9rem}table.planning-grid thead th .day-name{display:block;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-weight:600}table.planning-grid thead th .day-date{display:block;font-size:var(--font-size-md);font-weight:700;margin-top:2px;color:var(--color-text)}table.planning-grid thead th.today{background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface-alt))}table.planning-grid thead th.today .day-date{color:var(--color-primary)}table.planning-grid tbody th{padding:var(--space-sm) var(--space-md);background:var(--color-surface-alt);text-align:center;vertical-align:middle;font-size:var(--font-size-sm);font-weight:600}table.planning-grid td.today{background:color-mix(in srgb,var(--color-primary) 4%,var(--color-surface))}table.planning-grid tbody th,table.planning-grid tbody td{border-top:none;border-bottom:1px solid var(--color-border)}table.planning-grid tbody tr.band-end th,table.planning-grid tbody tr.band-end td{border-bottom:2px solid var(--color-border)}.meal-cell{padding:var(--space-sm)}.meal-cell__content{display:flex;flex-direction:column;gap:var(--space-xs);height:100%}.meal-cell__recipes{display:flex;flex-direction:column;gap:var(--space-xs)}.recipe-chip{display:flex;align-items:center;gap:var(--space-xs);width:100%;box-sizing:border-box;padding:.3rem var(--space-sm);border-radius:var(--radius-pill);background:var(--color-tag);color:var(--color-tag-ink);font-size:var(--font-size-xs);font-weight:600}.recipe-chip__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-chip__remove{flex-shrink:0;width:1rem;height:1rem;display:grid;place-items:center;border:none;background:none;cursor:pointer;color:inherit;opacity:0;font-size:.65rem;border-radius:50%}.recipe-chip:hover .recipe-chip__remove{opacity:.7}.recipe-chip__remove:hover{opacity:1;background:#00000026}.add-recipe-btn{width:100%;box-sizing:border-box;padding:.35rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-base);background:none;color:var(--color-text-muted);font-size:var(--font-size-base);line-height:1;cursor:pointer}.add-recipe-btn:hover{color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 8%,transparent)}.settings-page__status{color:var(--color-text-muted);font-size:var(--font-size-md)}.settings-page__status--error{color:var(--color-error)}.settings-page__section{margin-top:var(--space-lg);padding:var(--space-lg);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.settings-page__section-title{margin:0 0 var(--space-sm);font-size:var(--font-size-md)}.settings-page__saving,.settings-page__saved{margin:var(--space-sm) 0 0;font-size:var(--font-size-sm);font-weight:600}.settings-page__saving{color:var(--color-text-muted)}.settings-page__saved{color:var(--color-success)}.settings-page__actions{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.settings-page button{padding:.5rem var(--space-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;border-radius:var(--radius-base);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.settings-page button:hover:not(:disabled){background:var(--color-surface-alt)}.settings-page button:disabled{opacity:.6;cursor:not-allowed}.settings-page__hint{color:var(--color-text-muted);font-size:var(--font-size-sm)}.settings-page__invite-section{margin-top:var(--space-md)}.settings-page__members{list-style:none;margin:var(--space-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.settings-page__member{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-xs) 0}.settings-page__member-badge{margin-left:var(--space-xs);padding:.1rem .4rem;font-size:var(--font-size-xs);font-weight:600;color:var(--color-primary);background:var(--color-surface-alt);border-radius:var(--radius-base)}.settings-page__invite-code{font-family:monospace;font-size:var(--font-size-md);letter-spacing:.08em}.settings-page__danger-zone{margin-top:var(--space-lg);border:1.5px solid var(--color-error);background:color-mix(in srgb,var(--color-error) 8%,var(--color-surface))}button.settings-page__danger-button{color:#fff;background:var(--color-error);border-color:var(--color-error)}button.settings-page__danger-button:hover:not(:disabled){opacity:.9}button.settings-page__link-button{padding:0;font:inherit;color:var(--color-primary);background:none;border:none;cursor:pointer;text-decoration:underline}.theme-select{border:none;padding:0;margin:0}.theme-select legend{padding:0 0 var(--space-sm);font-weight:600;font-size:var(--font-size-sm)}.shopping-list-page{height:100%;display:flex;flex-direction:column}.shopping-list-page__header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-md);margin-bottom:var(--space-lg)}.shopping-list-page__status{color:var(--color-text-muted);font-size:var(--font-size-md)}.shopping-list-page__status--error{color:var(--color-error)}.shopping-list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:var(--space-lg)}.shopping-list__group-title{display:flex;align-items:center;gap:var(--space-xs);margin:0 0 var(--space-sm);font-size:var(--font-size-md);font-weight:700;color:var(--color-text)}.shopping-list__group-title svg{width:1.2rem;height:1.2rem;color:var(--color-text-muted)}.shopping-list__items{display:flex;flex-direction:column;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.shopping-list__item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border)}.shopping-list__item:last-child{border-bottom:none}.shopping-list__item-icon{flex-shrink:0;display:grid;place-items:center;color:var(--color-text-muted)}.shopping-list__item-icon svg{width:1.25rem;height:1.25rem}.shopping-list__item-name{flex:1;min-width:0;color:var(--color-text)}.shopping-list__item-quantity{flex-shrink:0;font-weight:600;color:var(--color-text);font-variant-numeric:tabular-nums}:root{--color-background: #eef2ed;--color-surface: #ffffff;--color-surface-alt: #e2e8e0;--color-text: #1f2a22;--color-text-muted: #57685a;--color-border: #c7d0c4;--color-primary: #2e6b4a;--color-primary-hover: #244f38;--color-accent: #cc4b26;--color-accent-hover: #a83c1c;--color-tag: #c98a1b;--color-tag-ink: #3a2c05;--color-success: #2e6b4a;--color-warning: #c98a1b;--color-error: #b3271e;--color-allergen: #a8123f;--color-allergen-ink: #ffe9ef;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--font-display: "Bahnschrift", "Arial Narrow", "Segoe UI", sans-serif;--font-body: "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-mono: "Cascadia Mono", Consolas, "SF Mono", "Liberation Mono", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.375rem;--font-size-xl: 1.75rem;--font-size-2xl: 2.25rem;--font-size-3xl: 3rem;--radius-base: 4px;--radius-md: 10px;--radius-lg: 18px;--radius-pill: 999px;--max-width-form: 22rem;--shadow-sm: 0 1px 2px rgba(31, 42, 34, .08), 0 1px 1px rgba(31, 42, 34, .06);--shadow-md: 0 6px 16px rgba(31, 42, 34, .12), 0 2px 6px rgba(31, 42, 34, .08)}:root{color-scheme:light dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-background: #14181a;--color-surface: #1c221e;--color-surface-alt: #262e27;--color-text: #edf1ea;--color-text-muted: #a9b5a6;--color-border: #384038;--color-primary: #5fae7e;--color-primary-hover: #7cc496;--color-accent: #ea7a48;--color-accent-hover: #f0946c;--color-tag: #e8b84b;--color-tag-ink: #2a2005;--color-success: #5fae7e;--color-warning: #e8b84b;--color-error: #e5675a;--color-allergen: #e2547b;--color-allergen-ink: #3a0416;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 8px 20px rgba(0, 0, 0, .45)}}:root[data-theme=dark]{--color-background: #14181a;--color-surface: #1c221e;--color-surface-alt: #262e27;--color-text: #edf1ea;--color-text-muted: #a9b5a6;--color-border: #384038;--color-primary: #5fae7e;--color-primary-hover: #7cc496;--color-accent: #ea7a48;--color-accent-hover: #f0946c;--color-tag: #e8b84b;--color-tag-ink: #2a2005;--color-success: #5fae7e;--color-warning: #e8b84b;--color-error: #e5675a;--color-allergen: #e2547b;--color-allergen-ink: #3a0416;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 8px 20px rgba(0, 0, 0, .45)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-body);font-size:var(--font-size-base);line-height:1.55;color:var(--color-text);background:var(--color-background)}h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-display);font-weight:700;text-wrap:balance}h1{font-size:var(--font-size-2xl)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}label:has(>input[type=checkbox]),label:has(>input[type=radio]){position:relative;display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-weight:400;border:1.5px solid var(--color-border);border-radius:var(--radius-base);background:var(--color-surface);cursor:pointer;transition:background-color .15s ease,border-color .15s ease}label:has(>input[type=checkbox]):hover,label:has(>input[type=radio]):hover{border-color:var(--color-primary)}label:has(>input[type=checkbox]).is-selected,label:has(>input[type=radio]).is-selected{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 12%,var(--color-surface));color:var(--color-primary);font-weight:600}label:has(>input[type=checkbox]):has(:focus-visible),label:has(>input[type=radio]):has(:focus-visible){outline:2px solid var(--color-accent);outline-offset:2px}input[type=checkbox],input[type=radio]{position:absolute;width:1px;height:1px;margin:0;opacity:0}.check-mark{flex:none;width:.9rem;height:.9rem;background:var(--color-primary);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%);transform:scale(0);transition:transform .1s ease}.is-selected .check-mark{transform:scale(1)}
