.ds-dialog__overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);background:var(--color-surface-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ds-dialog-fade .14s ease-out}.ds-dialog{width:100%;max-width:30rem;max-height:90vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);animation:ds-dialog-rise .16s ease-out}.ds-dialog:focus-visible{outline:none}.ds-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-xl) var(--space-xl) 0}.ds-dialog__title{margin:0;font-size:var(--font-size-section);overflow-wrap:break-word}.ds-dialog__header button{display:grid;place-items:center;flex-shrink:0;width:2rem;height:2rem;font-size:1.25rem;line-height:1;color:var(--color-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer}.ds-dialog__header button:hover{color:var(--color-text);background:var(--color-surface-sunken)}.ds-dialog__header button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ds-dialog__body{display:grid;gap:var(--space-lg);padding:var(--space-md) var(--space-xl) var(--space-xl);color:var(--color-muted)}.ds-dialog__footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-sm)}@keyframes ds-dialog-fade{0%{opacity:0}}@keyframes ds-dialog-rise{0%{opacity:0;transform:translateY(8px) scale(.98)}}.ds-error-summary{border:1px solid var(--color-danger);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-lg);margin-bottom:var(--space-lg);max-width:32rem}.ds-error-summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ds-error-summary__heading{margin:0 0 var(--space-sm);font-weight:600;color:var(--color-danger)}.ds-error-summary ul{margin:0;padding-left:var(--space-lg)}.ds-error-summary a{color:var(--color-danger)}.ds-form-field{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-lg);max-width:32rem}.ds-form-field:last-child{margin-bottom:0}.ds-form-field__label{font-size:var(--font-size-caption);font-weight:600;color:var(--color-text)}.ds-form-field__required{color:var(--color-danger)}.ds-form-field__hint{margin:0;font-size:var(--font-size-caption);color:var(--color-muted);overflow-wrap:break-word}.ds-form-field__error{margin:0;font-size:var(--font-size-caption);color:var(--color-danger);overflow-wrap:break-word}.ds-form-field--disabled .ds-form-field__label{color:var(--color-muted)}.ds-form-field--error .ds-input,.ds-form-field--error .ds-select{border-color:var(--color-danger)}.ds-pagination{display:flex;align-items:center;gap:var(--space-md);font-size:var(--font-size-caption);color:var(--color-muted)}.ds-pagination button{font:inherit;color:var(--color-primary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-md);font-weight:600;cursor:pointer}.ds-pagination button:disabled{color:var(--color-muted);cursor:not-allowed}.ds-pagination button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ds-input,.ds-select{width:100%;min-height:2.5rem;font:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.ds-input::placeholder{color:var(--color-muted)}.ds-input:hover:not(:disabled),.ds-select:hover:not(:disabled){border-color:var(--color-icon)}.ds-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:var(--space-2xl);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23566072' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-md) center;cursor:pointer}.ds-input:disabled,.ds-select:disabled{background-color:var(--color-surface-sunken);color:var(--color-muted);cursor:not-allowed}.ds-input:focus-visible,.ds-select:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.ds-status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);font-size:var(--font-size-micro);font-weight:650;line-height:1.4;white-space:nowrap}.ds-status-badge:before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentColor}.ds-status-badge--neutral{background:var(--color-surface-sunken);color:var(--color-muted)}.ds-status-badge--info{background:var(--color-info-soft);color:var(--color-info)}.ds-status-badge--success{background:var(--color-success-soft);color:var(--color-success)}.ds-status-badge--warning{background:var(--color-warning-soft);color:var(--color-warning)}.ds-status-badge--danger{background:var(--color-danger-soft);color:var(--color-danger)}.ds-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--color-surface)}.ds-table th,.ds-table td{text-align:left;vertical-align:middle;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);overflow-wrap:break-word}.ds-table th:first-child,.ds-table td:first-child{padding-left:var(--space-xl)}.ds-table th:last-child,.ds-table td:last-child{padding-right:var(--space-xl)}.ds-table__cell--end{text-align:end}.ds-table thead th{background:var(--color-surface-sunken);font-size:var(--font-size-micro);font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted);border-top:1px solid var(--color-border)}.ds-table tbody tr{transition:background var(--transition-fast)}.ds-table tbody tr:hover{background:var(--color-surface-hover)}.ds-table tbody tr:last-child td{border-bottom:none}.ds-table__state{padding:var(--space-2xl) var(--space-xl);color:var(--color-muted);text-align:center}.ds-table__error{display:flex;align-items:center;justify-content:center;gap:var(--space-md);color:var(--color-danger)}.ds-icon{flex-shrink:0;vertical-align:middle}.ds-alert{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--font-size-body)}.ds-alert__icon{margin-top:.15rem}.ds-alert__content{display:grid;gap:var(--space-2xs);flex:1;min-width:0;overflow-wrap:break-word}.ds-alert__title{font-weight:650}.ds-alert__content small{display:block;opacity:.85;font-size:var(--font-size-caption)}.ds-alert__action{flex-shrink:0}.ds-alert--info{color:var(--color-info);background:var(--color-info-soft);border-color:color-mix(in srgb,var(--color-info) 20%,transparent)}.ds-alert--success{color:var(--color-success);background:var(--color-success-soft);border-color:color-mix(in srgb,var(--color-success) 20%,transparent)}.ds-alert--warning{color:var(--color-warning);background:var(--color-warning-soft);border-color:color-mix(in srgb,var(--color-warning) 25%,transparent)}.ds-alert--danger{color:var(--color-danger);background:var(--color-danger-soft);border-color:color-mix(in srgb,var(--color-danger) 20%,transparent)}.ds-spinner{display:inline-block;flex-shrink:0;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;opacity:.7;animation:ds-spin .7s linear infinite}@keyframes ds-spin{to{transform:rotate(360deg)}}.ds-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:2.5rem;padding:var(--space-sm) var(--space-lg);font:inherit;font-weight:600;line-height:1.2;white-space:nowrap;text-decoration:none;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.ds-button:hover{text-decoration:none}.ds-button:disabled{cursor:not-allowed;opacity:.5}.ds-button--sm{min-height:2rem;padding:var(--space-xs) var(--space-md);font-size:var(--font-size-caption)}.ds-button--primary{color:var(--color-primary-contrast);background:var(--color-primary);box-shadow:var(--shadow-card)}.ds-button--primary:hover:not(:disabled){background:var(--color-primary-hover)}.ds-button--secondary{color:var(--color-text);background:var(--color-surface);border-color:var(--color-border-strong);box-shadow:var(--shadow-card)}.ds-button--secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-icon)}.ds-button--ghost{color:var(--color-muted);background:transparent}.ds-button--ghost:hover:not(:disabled){color:var(--color-text);background:var(--color-surface-sunken)}.ds-button--danger{color:var(--color-danger-contrast);background:var(--color-danger)}.ds-button--danger:hover:not(:disabled){background:var(--color-danger-hover)}.ds-card{min-width:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.ds-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-lg) var(--space-xl) 0}.ds-card__titles{display:grid;gap:var(--space-2xs);min-width:0}.ds-card__title{font-size:var(--font-size-body);font-weight:650}.ds-card__description{color:var(--color-muted);font-size:var(--font-size-caption)}.ds-card__actions{display:flex;flex-shrink:0;gap:var(--space-sm)}.ds-card__body{padding:var(--space-lg) var(--space-xl) var(--space-xl)}.ds-card__body--flush{padding:var(--space-md) 0 0}.ds-empty-state{display:grid;justify-items:center;gap:var(--space-sm);padding:var(--space-3xl) var(--space-xl);text-align:center}.ds-empty-state__icon{display:grid;place-items:center;width:3rem;height:3rem;margin-bottom:var(--space-xs);color:var(--color-primary);background:var(--color-primary-soft);border-radius:50%}.ds-empty-state__title{font-weight:650}.ds-empty-state__description{max-width:28rem;color:var(--color-muted)}.ds-filter-chips{display:flex;flex-wrap:wrap;gap:var(--space-xs);padding:var(--space-2xs);background:var(--color-surface-sunken);border-radius:var(--radius-md)}.ds-filter-chip{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);min-height:2rem;color:var(--color-muted);font-size:var(--font-size-caption);font-weight:600;background:transparent;border:none;border-radius:var(--radius-sm);transition:background var(--transition-fast),color var(--transition-fast)}.ds-filter-chip:hover{color:var(--color-text)}.ds-filter-chip--active{color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-card)}.ds-filter-chip__count{min-width:1.4rem;padding:0 var(--space-xs);color:var(--color-muted);font-size:var(--font-size-micro);text-align:center;background:var(--color-surface-sunken);border-radius:var(--radius-pill)}.ds-filter-chip--active .ds-filter-chip__count{color:var(--color-primary);background:var(--color-primary-soft)}.ds-page-header{display:grid;gap:var(--space-md)}.ds-page-header__back{display:inline-flex;align-items:center;gap:var(--space-xs);width:fit-content;color:var(--color-muted);font-size:var(--font-size-caption);font-weight:600}.ds-page-header__back:hover{color:var(--color-text);text-decoration:none}.ds-page-header__row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-lg);flex-wrap:wrap}.ds-page-header__titles{display:grid;gap:var(--space-xs);min-width:0;max-width:52rem}.ds-page-header__description{color:var(--color-muted)}.ds-page-header__meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-xs);color:var(--color-muted);font-size:var(--font-size-caption)}.ds-page-header__actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm)}.ds-search-field{position:relative;display:block;flex:1 1 16rem;max-width:26rem}.ds-search-field__icon{position:absolute;top:50%;left:var(--space-md);color:var(--color-icon);transform:translateY(-50%);pointer-events:none}.ds-search-field__input{padding-left:calc(var(--space-md) + 1.5rem)}.brand{display:flex;align-items:center;gap:var(--space-sm)}.brand__mark{display:grid;place-items:center;width:2rem;height:2rem;color:var(--color-sidebar);background:var(--color-sidebar-accent);border-radius:var(--radius-md)}.brand__text{display:grid;line-height:1.15}.brand__name{font-weight:750;letter-spacing:-.01em}.brand__product{color:var(--color-sidebar-muted);font-size:var(--font-size-micro);font-weight:600;letter-spacing:.06em;text-transform:uppercase}.app-shell{min-height:100vh;overflow-x:clip}.app-shell__skip{position:absolute;top:var(--space-sm);left:var(--space-sm);z-index:40;padding:var(--space-sm) var(--space-md);color:var(--color-primary-contrast);background:var(--color-primary);border-radius:var(--radius-sm);transform:translateY(-200%)}.app-shell__skip:focus{transform:none}.app-shell__topbar{display:none}.app-shell__sidebar{position:fixed;inset:0 auto 0 0;z-index:30;display:flex;flex-direction:column;width:var(--sidebar-width);color:var(--color-sidebar-text);background:var(--color-sidebar)}.app-shell__sidebar-brand{padding:var(--space-xl) var(--space-lg) var(--space-lg);color:#fff}.app-shell__nav{flex:1;overflow-y:auto;padding:var(--space-sm) var(--space-md)}.nav-section+.nav-section{margin-top:var(--space-xl)}.nav-section__heading{margin:0 0 var(--space-xs);padding:0 var(--space-md);color:var(--color-sidebar-muted);font-size:var(--font-size-micro);font-weight:650;letter-spacing:.06em;text-transform:uppercase}.nav-section ul{display:grid;gap:var(--space-2xs);margin:0;padding:0;list-style:none}.nav-link{position:relative;display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);color:var(--color-sidebar-text);font-weight:550;border-radius:var(--radius-sm);transition:background var(--transition-fast),color var(--transition-fast)}.nav-link:hover{color:#fff;text-decoration:none;background:var(--color-sidebar-active)}.nav-link--active{color:#fff;background:var(--color-sidebar-active)}.nav-link--active:before{content:"";position:absolute;top:var(--space-sm);bottom:var(--space-sm);left:calc(-1 * var(--space-md));width:3px;background:var(--color-sidebar-accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.nav-link--active .ds-icon{color:var(--color-sidebar-accent)}.app-shell__sidebar a:focus-visible,.app-shell__sidebar button:focus-visible,.app-shell__sidebar select:focus-visible{outline:2px solid var(--color-sidebar-accent);outline-offset:2px;box-shadow:none}.app-shell__account{display:grid;gap:var(--space-md);padding:var(--space-lg);border-top:1px solid rgba(255,255,255,.08)}.account{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.account__avatar{display:grid;flex-shrink:0;place-items:center;width:2rem;height:2rem;color:var(--color-sidebar);font-weight:700;background:var(--color-sidebar-text);border-radius:50%}.account__text{display:grid;min-width:0;line-height:1.3}.account__name{overflow:hidden;color:#fff;font-size:var(--font-size-caption);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.account__role{color:var(--color-sidebar-muted);font-size:var(--font-size-micro)}.app-shell__locale .ds-form-field{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-sm);margin:0}.app-shell__locale .ds-form-field__label{margin:0;color:var(--color-sidebar-muted);font-size:var(--font-size-micro);font-weight:600}.app-shell__locale .ds-select{width:auto;min-height:2rem;padding-top:var(--space-xs);padding-bottom:var(--space-xs);color:#fff;font-size:var(--font-size-caption);background-color:#ffffff0f;border-color:#ffffff24}.app-shell__locale .ds-select option{color:var(--color-text)}.app-shell__sign-out.ds-button{justify-content:flex-start;width:100%;color:var(--color-sidebar-text)}.app-shell__sign-out.ds-button:hover:not(:disabled){color:#fff;background:var(--color-sidebar-active)}.app-shell__main{min-width:0;margin-left:var(--sidebar-width)}.app-shell__main:focus{outline:none}.app-shell__content{max-width:var(--content-max-width);margin:0 auto;padding:var(--space-2xl) var(--space-2xl) var(--space-3xl)}.app-shell__backdrop{display:none}@media(max-width:60rem){.app-shell__topbar{position:sticky;top:0;z-index:35;display:flex;height:var(--topbar-height);align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-lg);color:#fff;background:var(--color-sidebar)}.app-shell__menu-button{display:grid;place-items:center;width:2.5rem;height:2.5rem;color:#fff;background:transparent;border:0;border-radius:var(--radius-sm)}.app-shell__menu-button:hover{background:var(--color-sidebar-active)}.app-shell__sidebar{top:var(--topbar-height);visibility:hidden;transform:translate(-100%);transition:transform .18s ease,visibility .18s}.app-shell--menu-open .app-shell__sidebar{visibility:visible;transform:none}.app-shell__sidebar-brand{display:none}.app-shell__nav{padding-top:var(--space-lg)}.app-shell--menu-open .app-shell__backdrop{position:fixed;inset:var(--topbar-height) 0 0;z-index:25;display:block;background:var(--color-surface-overlay)}.app-shell__main{margin-left:0}.app-shell__content{padding:var(--space-xl) var(--space-lg) var(--space-2xl)}}.auth-layout{display:grid;min-height:100vh;place-items:center;padding:var(--space-xl) var(--space-lg);background:radial-gradient(60rem 30rem at 15% -10%,rgba(45,212,191,.18),transparent 60%),var(--color-sidebar)}.auth-layout__panel{display:grid;gap:var(--space-xl);width:min(100%,26rem)}.auth-layout__brand{display:grid;justify-items:center;gap:var(--space-sm);color:#fff;text-align:center}.auth-layout__brand .brand__mark{width:2.5rem;height:2.5rem}.auth-layout__brand>p{color:var(--color-sidebar-muted);font-size:var(--font-size-caption)}.auth-layout__card{padding:var(--space-2xl);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay)}.auth-layout__locale{display:flex;justify-content:center}.auth-layout__locale .ds-form-field{display:flex;flex-direction:row;align-items:center;gap:var(--space-sm);margin:0}.auth-layout__locale .ds-form-field__label{margin:0;color:var(--color-sidebar-muted);font-size:var(--font-size-caption)}.auth-layout__locale .ds-select{width:auto;min-height:2rem;color:#fff;background-color:#ffffff0f;border-color:#ffffff29}.auth-layout__locale .ds-select option{color:var(--color-text)}.sign-in{display:grid;gap:var(--space-lg)}.sign-in__titles{display:grid;gap:var(--space-xs)}.sign-in__titles h1{font-size:var(--font-size-section)}.sign-in__titles p{color:var(--color-muted);font-size:var(--font-size-caption)}.sign-in__form{display:grid;gap:var(--space-xs)}.sign-in__submit.ds-button{width:100%;margin-top:var(--space-sm)}.session-restoring{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);color:var(--color-muted)}.catalog-page,.catalog-detail{display:grid;gap:var(--space-xl);min-width:0}.catalog-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-md) var(--space-lg)}.catalog-toolbar .ds-search-field{flex:1 1 18rem;max-width:26rem}.catalog-toolbar__count{margin-left:auto;color:var(--color-muted);font-size:var(--font-size-caption);font-variant-numeric:tabular-nums}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--space-lg);margin:0;padding:0;list-style:none}.recipe-grid>li{display:flex;min-width:0}.recipe-card{display:flex;flex-direction:column;width:100%;overflow:hidden;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:box-shadow var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast)}a.recipe-card:hover{text-decoration:none;border-color:var(--color-border-strong);box-shadow:var(--shadow-raised);transform:translateY(-2px)}.recipe-card__photo{border-radius:0}.recipe-card__body{display:grid;gap:var(--space-sm);padding:var(--space-md) var(--space-lg) var(--space-lg)}.recipe-card__title{display:-webkit-box;overflow:hidden;font-weight:650;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.recipe-card__meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);color:var(--color-muted);font-size:var(--font-size-caption)}.recipe-card__no-photo{color:var(--color-warning);font-weight:600}.recipe-card--skeleton .recipe-card__body{padding-top:var(--space-lg)}.dish-thumbnail{position:relative;display:block;aspect-ratio:4 / 3;overflow:hidden;background:var(--color-surface-sunken);border-radius:var(--radius-sm)}.dish-thumbnail img{display:block;width:100%;height:100%;object-fit:cover}.dish-thumbnail__placeholder{display:grid;place-items:center;width:100%;height:100%;color:var(--color-icon)}.dish-thumbnail__placeholder--loading{animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton{display:block;background:var(--color-surface-sunken);border-radius:var(--radius-sm);animation:skeleton-pulse 1.4s ease-in-out infinite}.recipe-card__photo.skeleton{aspect-ratio:4 / 3;border-radius:0}.skeleton--line{height:.9rem;margin-bottom:var(--space-sm)}.skeleton--short{width:55%}.skeleton--row{height:3.25rem}.skeleton--tiles{height:5rem;margin:var(--space-md) 0}.skeleton--hero{height:20rem;border-radius:var(--radius-lg)}.skeleton--block{height:14rem;border-radius:var(--radius-lg)}@keyframes skeleton-pulse{50%{opacity:.55}}.catalog-table .ds-card__body{overflow-x:auto;border-radius:0 0 var(--radius-lg) var(--radius-lg)}.catalog-table-skeleton{display:grid;gap:var(--space-sm);padding:0 var(--space-lg) var(--space-lg)}.catalog-table__name{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:var(--space-md);min-width:14rem;color:var(--color-text)}.catalog-table__name:hover{text-decoration:none}.catalog-table__name:hover .catalog-table__label{color:var(--color-primary);text-decoration:underline}.catalog-table__thumb{grid-row:1 / span 2;width:40px;height:40px;aspect-ratio:auto}.catalog-table__label{font-weight:600}.catalog-table__id{grid-column:2;overflow:hidden;color:var(--color-muted);font-family:var(--font-family-mono);font-size:var(--font-size-micro);text-overflow:ellipsis;white-space:nowrap}.catalog-detail__id{display:inline-flex;align-items:center;gap:var(--space-2xs);min-width:0}.catalog-detail__id code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-detail__id .ds-button{min-height:1.75rem;padding:var(--space-xs)}.catalog-detail__layout{display:grid;grid-template-columns:minmax(0,1fr) 22rem;align-items:start;gap:var(--space-xl)}.catalog-detail__main,.catalog-detail__aside{display:grid;gap:var(--space-xl);min-width:0}.catalog-detail__aside{position:sticky;top:var(--space-xl)}.recipe-hero .ds-card__body{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);padding:0}.recipe-hero__facts{min-width:0;padding:var(--space-xl)}.recipe-photo{display:grid;align-content:start;gap:var(--space-md);padding:var(--space-lg);border-right:1px solid var(--color-border)}.recipe-photo__frame{position:relative;aspect-ratio:4 / 3;overflow:hidden;background:var(--color-surface-sunken);border-radius:var(--radius-md)}.recipe-photo__image{display:block;width:100%;height:100%;object-fit:cover}.recipe-photo__empty,.recipe-photo__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;justify-items:center;gap:var(--space-sm);padding:var(--space-lg);color:var(--color-muted);font-size:var(--font-size-caption);text-align:center}.recipe-photo__overlay{color:var(--color-text);background:#ffffffd1}.recipe-photo__upload{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);color:var(--color-muted);font-size:var(--font-size-caption)}.recipe-photo__input{position:absolute;width:1px;height:1px;opacity:0}.recipe-photo__input:focus-visible+label{box-shadow:var(--focus-ring)}.recipe-photo__input:disabled+label{cursor:not-allowed;opacity:.5}.recipe-photo__locked{color:var(--color-muted);font-size:var(--font-size-caption)}.nutrition{display:grid;gap:var(--space-lg)}.nutrition__header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md)}.nutrition__heading{font-size:var(--font-size-body)}.nutrition__servings{color:var(--color-muted);font-size:var(--font-size-caption)}.nutrition__servings strong{color:var(--color-text)}.nutrition__tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm);margin:0}.nutrition__tile{display:grid;gap:var(--space-2xs);padding:var(--space-md);background:var(--color-surface-sunken);border-radius:var(--radius-md)}.nutrition__tile--accent{grid-column:1 / -1;background:var(--color-primary-soft)}.nutrition__tile dt{color:var(--color-muted);font-size:var(--font-size-micro);font-weight:600;letter-spacing:.02em;text-transform:uppercase}.nutrition__tile dd{margin:0;font-size:var(--font-size-section);font-weight:700;font-variant-numeric:tabular-nums}.nutrition__tile--accent dd{color:var(--color-primary);font-size:var(--font-size-title)}.nutrition__allergens{display:grid;gap:var(--space-sm)}.nutrition__allergens h3{font-size:var(--font-size-caption)}.nutrition__none,.recipe-body__none{color:var(--color-muted);font-size:var(--font-size-caption)}.recipe-body__none--padded{padding:0 var(--space-xl) var(--space-xl)}.chip-list{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0;padding:0;list-style:none}.chip{padding:var(--space-2xs) var(--space-sm);font-size:var(--font-size-caption);font-weight:600;border-radius:var(--radius-pill)}.chip--warning{color:var(--color-warning);background:var(--color-warning-soft)}.recipe-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:start;gap:var(--space-xl)}.ingredient-list{margin:0;padding:0 0 var(--space-sm);list-style:none}.ingredient-list__item{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-xl)}.ingredient-list__item+.ingredient-list__item{border-top:1px solid var(--color-border)}.ingredient-list__name{display:grid;min-width:0}.ingredient-list__allergens{color:var(--color-warning);font-size:var(--font-size-micro);font-weight:600}.ingredient-list__amount{flex-shrink:0;color:var(--color-muted);font-variant-numeric:tabular-nums;text-align:right}.method-steps{display:grid;gap:var(--space-md);margin:0;padding:0;list-style:none;counter-reset:step}.method-steps li{position:relative;min-height:1.75rem;padding-left:2.5rem;counter-increment:step}.method-steps li:before{content:counter(step);position:absolute;top:0;left:0;display:grid;place-items:center;width:1.75rem;height:1.75rem;color:var(--color-primary);font-size:var(--font-size-caption);font-weight:700;background:var(--color-primary-soft);border-radius:50%}.publication-panel__body{display:grid;gap:var(--space-lg)}.publication-panel__hint,.publication-panel__note{color:var(--color-muted);font-size:var(--font-size-caption)}.publication-panel__actions{display:grid;gap:var(--space-sm)}.publication-panel__actions .ds-button{width:100%;white-space:normal}.checklist{display:grid;gap:var(--space-sm)}.checklist__heading{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-caption)}.checklist__failed-count{display:grid;place-items:center;min-width:1.25rem;height:1.25rem;padding:0 var(--space-xs);color:var(--color-danger-contrast);font-size:var(--font-size-micro);background:var(--color-danger);border-radius:var(--radius-pill)}.checklist__list{display:grid;margin:0;padding:0;list-style:none;border:1px solid var(--color-border);border-radius:var(--radius-md)}.checklist__item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-caption)}.checklist__item+.checklist__item{border-top:1px solid var(--color-border)}.checklist__icon{display:grid;place-items:center;width:1.25rem;height:1.25rem;margin-top:.05rem;border-radius:50%}.checklist__item--passed .checklist__icon{color:var(--color-success);background:var(--color-success-soft)}.checklist__item--failed .checklist__icon{color:var(--color-danger);background:var(--color-danger-soft)}.checklist__item--not_applicable .checklist__icon{color:var(--color-muted);background:var(--color-surface-sunken)}.checklist__text{display:grid;gap:var(--space-2xs)}.checklist__gate{font-weight:600}.checklist__reason{color:var(--color-danger)}.checklist__reason code{margin-left:var(--space-xs)}.checklist__status{color:var(--color-muted);font-size:var(--font-size-micro)}.checklist__item--failed .checklist__status{color:var(--color-danger);font-weight:600}.timeline{display:grid;margin:0;padding:0;list-style:none}.timeline__item{position:relative;display:grid;gap:var(--space-xs);padding:0 0 var(--space-lg) var(--space-xl)}.timeline__item:last-child{padding-bottom:0}.timeline__item:before{content:"";position:absolute;top:.35rem;left:.2rem;width:.6rem;height:.6rem;background:var(--color-surface);border:2px solid var(--color-border-strong);border-radius:50%}.timeline__item:not(:last-child):after{content:"";position:absolute;top:1.15rem;bottom:.1rem;left:.45rem;width:2px;background:var(--color-border)}.timeline__item--published:before{border-color:var(--color-success)}.timeline__item--review:before{border-color:var(--color-info)}.timeline__item--draft:before{border-color:var(--color-warning)}.timeline__item--selected:before{background:var(--color-primary);border-color:var(--color-primary)}.timeline__head{display:flex;align-items:center;gap:var(--space-sm)}.timeline__version{font-weight:650}.timeline__version[aria-current=page]{color:var(--color-text)}.timeline__events{display:grid;gap:var(--space-2xs);margin:0;padding:0;color:var(--color-muted);font-size:var(--font-size-caption);list-style:none;overflow-wrap:anywhere}.timeline__events time{display:block;color:var(--color-icon);font-size:var(--font-size-micro)}@media(max-width:75rem){.catalog-detail__layout{grid-template-columns:minmax(0,1fr)}.catalog-detail__aside{position:static}}@media(max-width:48rem){.recipe-hero .ds-card__body,.recipe-body{grid-template-columns:minmax(0,1fr)}.recipe-photo{border-right:0;border-bottom:1px solid var(--color-border)}.catalog-toolbar__count{margin-left:0}}.coach-report{display:grid;gap:var(--space-xl)}.coach-report__queue .ds-card__body{overflow-x:auto}.coach-report__note{padding:var(--space-md) var(--space-lg);color:var(--color-muted);font-size:var(--font-size-caption)}.coach-report__empty-detail,.coach-report__details{padding:var(--space-xl);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.coach-report__details{display:grid;gap:var(--space-xl)}.coach-report__details h2,.coach-report__details h3{margin-top:0}.ds-catalogue-badges{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.nutrition-coverage{display:grid;gap:var(--space-xl)}.nutrition-coverage__scroll{overflow-x:auto}.nutrition-coverage__summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--space-md);margin:0}.nutrition-coverage__summary>div{display:grid;gap:var(--space-2xs);padding:var(--space-md) var(--space-lg);background:var(--color-surface-sunken);border-radius:var(--radius-md)}.nutrition-coverage__summary dt{color:var(--color-muted);font-size:var(--font-size-caption);font-weight:600}.nutrition-coverage__summary dd{margin:0;font-size:var(--font-size-display);font-weight:700;font-variant-numeric:tabular-nums}.nutrition-coverage__matrix{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.nutrition-coverage__matrix caption{padding-bottom:var(--space-sm);color:var(--color-muted);font-size:var(--font-size-caption);text-align:left}.nutrition-coverage__matrix th,.nutrition-coverage__matrix td{padding:var(--space-sm) var(--space-md);text-align:right;border-bottom:1px solid var(--color-border)}.nutrition-coverage__matrix th:first-child{text-align:left;text-transform:uppercase}.nutrition-coverage__matrix thead th{color:var(--color-muted);font-size:var(--font-size-micro);font-weight:650;letter-spacing:.04em;text-transform:uppercase}.nutrition-coverage__controls{display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));align-items:end;gap:var(--space-md)}.nutrition-coverage__controls label{display:grid;gap:var(--space-xs);font-size:var(--font-size-caption);font-weight:600}.nutrition-coverage__result{display:grid;gap:var(--space-sm);margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.nutrition-coverage__result ul{margin:0;padding-left:var(--space-xl)}.nutrition-coverage__result details{padding:var(--space-sm) var(--space-md);background:var(--color-surface-sunken);border-radius:var(--radius-sm)}.nutrition-coverage__result summary{cursor:pointer;font-weight:600}:root{--color-primary: #0f766e;--color-primary-hover: #115e59;--color-primary-soft: #e3f3f1;--color-primary-contrast: #ffffff;--color-secondary: #0f766e;--color-secondary-contrast: #ffffff;--color-accent: #6d28d9;--color-accent-contrast: #ffffff;--color-success: #15803d;--color-success-soft: #e7f6ec;--color-success-contrast: #ffffff;--color-warning: #a15c07;--color-warning-soft: #fdf3e1;--color-warning-contrast: #ffffff;--color-danger: #b42318;--color-danger-hover: #912018;--color-danger-soft: #fdecea;--color-danger-contrast: #ffffff;--color-info: #1d4ed8;--color-info-soft: #e8effd;--color-background: #f5f6f8;--color-surface: #ffffff;--color-surface-sunken: #f1f3f6;--color-surface-hover: #f7f8fa;--color-surface-overlay: rgba(11, 18, 32, .55);--color-border: #e3e6eb;--color-border-strong: #cdd2da;--color-text: #0f172a;--color-muted: #566072;--color-icon: #8a93a3;--color-sidebar: #0b1220;--color-sidebar-text: #c3cbd7;--color-sidebar-muted: #8792a4;--color-sidebar-active: rgba(255, 255, 255, .08);--color-sidebar-accent: #2dd4bf;--font-family-base: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-size-micro: .75rem;--font-size-caption: .8125rem;--font-size-body: .9375rem;--font-size-section: 1.0625rem;--font-size-title: 1.625rem;--font-size-display: 2rem;--line-height-body: 1.5;--space-2xs: .125rem;--space-xs: .25rem;--space-sm: .5rem;--space-md: .75rem;--space-lg: 1rem;--space-xl: 1.5rem;--space-2xl: 2rem;--space-3xl: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-card: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);--shadow-raised: 0 6px 16px rgba(16, 24, 40, .08), 0 2px 4px rgba(16, 24, 40, .04);--shadow-overlay: 0 24px 48px rgba(11, 18, 32, .24);--sidebar-width: 15.5rem;--topbar-height: 3.5rem;--content-max-width: 80rem;--transition-fast: .12s ease;--focus-ring: 0 0 0 2px var(--color-surface), 0 0 0 4px var(--color-primary)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;background:var(--color-background);color:var(--color-text);font-family:var(--font-family-base);font-size:var(--font-size-body);line-height:var(--line-height-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{margin:0;line-height:1.25;letter-spacing:-.01em;overflow-wrap:break-word}h1{font-size:var(--font-size-title);font-weight:700}h2{font-size:var(--font-size-section);font-weight:650}h3{font-size:var(--font-size-body);font-weight:650}p{margin:0}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--focus-ring)}code{font-family:var(--font-family-mono);font-size:.85em;padding:.1em .35em;border-radius:var(--radius-sm);background:var(--color-surface-sunken)}img{max-width:100%}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed}button:not([class]){display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);color:var(--color-text);font-weight:550;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);transition:background var(--transition-fast),border-color var(--transition-fast)}button:not([class]):hover:not(:disabled){background:var(--color-surface-hover)}button:not([class]):disabled{opacity:.55}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation-duration:.01ms!important}}
