:root{--color-paper:oklch(97% .012 95);--color-paper-2:oklch(94% .016 95);--color-paper-3:oklch(91% .02 95);--color-surface:oklch(99% .008 95);--color-ink:oklch(20% .012 250);--color-ink-soft:oklch(38% .018 250);--color-muted:oklch(46% .02 250);--color-rule:oklch(78% .024 95);--color-rule-strong:oklch(62% .035 95);--color-accent:oklch(86% .18 95);--color-accent-deep:oklch(70% .17 95);--color-accent-ink:oklch(20% .012 250);--color-accent-2:oklch(66% .18 235);--color-accent-2-soft:oklch(92% .045 235);--color-accent-3:oklch(68% .24 18);--color-mint:oklch(80% .16 150);--color-mint-soft:oklch(94% .035 150);--color-error:oklch(49% .19 25);--color-error-soft:oklch(94% .035 25);--color-focus:oklch(46% .19 250);--color-overlay:oklch(20% .012 250/.1);--color-overlay-soft:oklch(20% .012 250/.05);--font-display:"Plus Jakarta Sans", "Hiragino Sans", sans-serif;--font-body:"Plus Jakarta Sans", "Hiragino Sans", sans-serif;--font-label:"JetBrains Mono", "SFMono-Regular", monospace;--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5625rem;--text-xl:1.953rem;--text-2xl:2.441rem;--text-display:clamp(2.75rem, 8vw + .5rem, 5.25rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--rule-hairline:1px;--rule-heavy:2px;--radius-input:.75rem;--radius-card:1.25rem;--radius-pill:999px;--shadow-contact:0 1px 2px var(--color-overlay);--shadow-raised:0 16px 36px -22px var(--color-overlay);--page-max:75rem;--page-gutter:clamp(1rem, 4vw, 3rem);--z-sticky:200}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{scroll-behavior:smooth}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);margin:0;line-height:1.6}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}.app-shell{flex-direction:column;min-height:100svh;display:flex}.site-header,.page-intro,.recipe-workbench,.site-footer{width:min(100%, var(--page-max));padding-inline:var(--page-gutter);margin-inline:auto}.site-header{border-bottom:var(--rule-hairline) solid var(--color-rule);justify-content:space-between;align-items:center;min-height:4.5rem;display:flex}.wordmark,.header-action{white-space:nowrap;align-items:center;min-height:2.75rem;text-decoration:none;display:inline-flex}.wordmark{gap:var(--space-sm);font-family:var(--font-label);font-size:var(--text-sm);letter-spacing:-.02em;font-weight:500}.wordmark__mark{border-radius:var(--radius-pill);background:var(--color-accent);width:.875rem;height:.875rem;box-shadow:0 0 0 .25rem var(--color-paper-3);flex:none;display:inline-block}.header-action{border:0;border-bottom:2px solid var(--color-accent-2);color:inherit;cursor:pointer;font-size:var(--text-sm);background:0 0;padding:0;font-weight:700}.page-intro{gap:var(--space-xl);padding-block:var(--space-2xl) var(--space-xl);display:grid}.page-intro.page-intro--edit{padding-block:var(--space-sm);display:block}.page-intro--edit .back-link{margin-block-end:0}.page-intro h1{min-width:0;font-family:var(--font-display);font-size:var(--text-display);letter-spacing:-.045em;overflow-wrap:anywhere;margin:0;font-style:normal;font-weight:700;line-height:1.05}.page-intro p{max-width:38rem;margin:var(--space-md) 0 0;color:var(--color-ink-soft);font-size:var(--text-md)}.page-intro__aside{padding:var(--space-md);border-radius:var(--radius-card);background:var(--color-accent-2-soft);color:var(--color-ink);transform:translateX(var(--space-md));align-self:end;font-size:var(--text-sm)!important}.recipe-workbench{gap:var(--space-xl);align-items:start;padding-block-end:var(--space-3xl);display:grid}.import-page,.import-source,.url-import-form{width:min(100%, var(--page-max));padding-inline:var(--page-gutter);margin-inline:auto}.url-import-form{gap:var(--space-lg);padding-block:var(--space-lg) var(--space-3xl);display:grid}.url-import-form .primary-button{justify-self:start}.database-reset{width:min(100%, var(--page-max));padding:0 var(--page-gutter) var(--space-3xl);margin-inline:auto}.database-reset details{border-top:var(--rule-hairline) solid var(--color-rule)}.database-reset summary{padding-block:var(--space-md);color:var(--color-ink-soft);cursor:pointer;font-weight:700}.database-reset__body{gap:var(--space-md);padding-block:0 var(--space-lg);justify-items:start;display:grid}.database-reset__body>p{color:var(--color-ink-soft);margin:0}.database-reset__body>.database-reset__success{color:var(--color-ink);font-weight:700}.recipe-entry-actions{width:min(100%, var(--page-max));padding:var(--space-lg) var(--page-gutter) 0;margin-inline:auto;display:flex}.eyebrow,.page-intro .eyebrow{margin:0 0 var(--space-xs);color:var(--color-accent-3);font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:.12em;font-weight:700}.import-source{gap:var(--space-md);margin-block-end:var(--space-xl);display:grid}.import-source__heading,.import-source__heading>div{min-width:0}.import-source__heading{justify-content:space-between;align-items:start;gap:var(--space-md);padding:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-2);flex-wrap:wrap;display:flex}.import-source__heading h2{margin:var(--space-xs) 0 0;font-family:var(--font-display);font-size:var(--text-lg);overflow-wrap:anywhere}.import-source__heading a{text-underline-offset:var(--space-3xs);font-weight:700}.import-source__method{padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);background:var(--color-accent);font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:.06em;font-weight:700;display:inline-flex}.import-source__warning,.import-source__privacy,.import-source__url{padding-inline:var(--space-sm);color:var(--color-ink-soft);font-size:var(--text-sm);margin:0}.import-source__url a{overflow-wrap:anywhere}.import-source__warning{color:var(--color-error)}.import-source details{padding:var(--space-md);border:var(--rule-hairline) solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-surface)}.import-source summary{cursor:pointer;font-weight:700}.import-source details p{max-height:12rem;margin:var(--space-md) 0 0;color:var(--color-ink-soft);font-size:var(--text-sm);white-space:pre-wrap;overflow:auto}.recipe-form{gap:var(--space-lg);min-width:0;display:grid}.form-section{gap:var(--space-lg);min-width:0;padding:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-contact);margin:0;display:grid}.form-section--ingredients{gap:var(--space-md);padding:var(--space-md);background:var(--color-paper-2)}.form-section--steps{gap:var(--space-md);padding:var(--space-md);background:var(--color-accent-2-soft)}.form-section legend{padding:0 var(--space-sm);font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.025em;font-style:normal;font-weight:700}.section-copy{margin:calc(var(--space-sm) * -1) 0 0;color:var(--color-muted)}.field{gap:var(--space-xs);min-width:0;display:grid}.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}.field label{color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700}.field label span{color:var(--color-muted);font-family:var(--font-label);font-size:var(--text-xs);font-weight:400}.field input,.field textarea,.field select{width:100%;min-height:3rem;padding:var(--space-sm) var(--space-xl) var(--space-sm) var(--space-sm);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);outline-offset:1px;background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-contact);transition:background-color var(--dur-short) var(--ease-out);outline:2px solid #0000}.field textarea{resize:vertical;min-height:6rem}.field input::placeholder,.field textarea::placeholder{color:var(--color-muted);opacity:1}.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{border-color:var(--color-ink-soft);outline-color:var(--color-focus)}.field input:disabled,.field textarea:disabled,.field select:disabled{cursor:not-allowed;opacity:.55}.unit-custom-input{margin-block-start:var(--space-xs)}.field input[data-state=error],.field textarea[data-state=error]{border-color:var(--color-error);background:var(--color-error-soft)}.field-message{min-height:1lh;color:var(--color-muted);font-size:var(--text-xs);margin:0}[aria-invalid=true]+.field-message,.form-alert{color:var(--color-error)}.field--servings{max-width:9rem}.repeat-list{gap:var(--space-md);display:grid}.repeat-row,.step-row{border:var(--rule-hairline) solid var(--color-rule);border-radius:var(--radius-card);background:var(--color-surface);min-width:0}.repeat-row{gap:var(--space-xs);padding:var(--space-sm) 0 var(--space-md);border:0;border-bottom:var(--rule-hairline) solid var(--color-rule-strong);background:0 0;border-radius:0;grid-template-columns:1.5rem minmax(0,1fr) auto;align-items:start;display:grid}.repeat-row__index,.step-number{width:1.5rem;height:1.5rem;border-radius:var(--radius-pill);background:var(--color-accent);color:var(--color-accent-ink);font-family:var(--font-label);font-size:var(--text-xs);font-variant-numeric:tabular-nums;place-items:center;margin-block-start:var(--space-lg);display:grid}.repeat-row--compact .repeat-row__index{margin-block-start:.75rem}.ingredient-row__fields{gap:var(--space-xs);grid-template-columns:minmax(0,.72fr) minmax(0,1fr);min-width:0;display:grid}.field--ingredient-name{grid-column:1/-1}.ingredient-name-input{position:relative}.ingredient-name-input input{padding-inline-end:4.75rem}.ingredient-name-input .new-ingredient-badge{position:absolute;inset-block-start:50%;inset-inline-end:var(--space-sm);transform:translateY(-50%)}.ingredient-annotations{gap:var(--space-xs);grid-column:1/-1;display:grid}.ingredient-annotations .ingredient-normalization,.ingredient-annotations .unit-database-option{margin-block-start:0}.new-ingredient-badge{color:var(--color-accent-deep);font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:.04em;white-space:nowrap;align-items:center;margin-inline-start:var(--space-xs);font-weight:800;line-height:1;display:inline-flex}.repeat-row__remove,.step-row__remove{min-width:3rem;padding-inline:var(--space-xs)}.step-row{gap:var(--space-xs);padding:var(--space-sm) 0 var(--space-md);border:0;border-bottom:var(--rule-hairline) solid var(--color-rule-strong);background:0 0;border-radius:0;grid-template-columns:1.5rem minmax(0,1fr) auto;align-items:start;display:grid}.step-number{background:var(--color-accent-2);color:var(--color-ink);margin-block-start:.75rem}.step-row .step-textarea{min-height:calc(var(--space-2xl) + var(--space-sm));resize:none;overflow-y:hidden}.text-button,.add-button,.primary-button,.save-result button,.save-result a{border-radius:var(--radius-pill);white-space:nowrap;min-height:3rem;font-weight:700}.text-button{padding-inline:var(--space-md);color:var(--color-ink-soft);cursor:pointer;background:0 0;border:0}.text-button--danger{color:var(--color-error)}.text-button:disabled{cursor:not-allowed;opacity:.35}.text-button:active{background:var(--color-paper-3)}.add-button{padding-inline:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);background:var(--color-surface);color:var(--color-ink);cursor:pointer;box-shadow:var(--shadow-contact);transition:transform var(--dur-micro) var(--ease-out);justify-self:start}.add-button span{color:var(--color-accent-2);font-size:var(--text-md)}.add-button:active,.save-result button:active,.save-result a:active{transform:translateY(1px)}.add-button:disabled,.save-result button:disabled{cursor:not-allowed;opacity:.55;transform:none}.recipe-review{gap:var(--space-lg);padding:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-contact);display:grid}.recipe-review__heading,.recipe-review__heading h2,.recipe-review__heading p,.recipe-review__section h3{margin:0}.recipe-review__heading{gap:var(--space-xs);border-bottom:var(--rule-hairline) solid var(--color-rule);padding-block-end:var(--space-md);display:grid}.recipe-review__heading h2{font-family:var(--font-display);font-size:var(--text-xl);line-height:1.2}.recipe-review__heading>p:last-child{color:var(--color-ink-soft)}.recipe-review__basics{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.recipe-review__basics div{padding:var(--space-md);border-radius:var(--radius-input);background:var(--color-paper-2)}.recipe-review__basics dt{color:var(--color-muted);font-size:var(--text-xs)}.recipe-review__basics dd{margin:var(--space-xs) 0 0;overflow-wrap:anywhere;font-weight:700}.recipe-review__section{gap:var(--space-sm);display:grid}.recipe-review__ingredients,.recipe-review__steps{gap:var(--space-sm);margin:0;padding:0;list-style:none;display:grid}.recipe-review__ingredients>li,.recipe-review__steps>li{padding:var(--space-md);border:var(--rule-hairline) solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-paper-2)}.recipe-review__ingredient-line{justify-content:space-between;gap:var(--space-md);display:flex}.recipe-review__ingredient-line strong{overflow-wrap:anywhere;align-items:baseline;min-width:0;display:inline-flex}.ingredient-normalization{margin:var(--space-xs) 0 0;color:var(--color-ink-soft);font-size:var(--text-sm)}.recipe-review__ingredient-line span{color:var(--color-ink-soft);white-space:nowrap}.unit-status{margin:var(--space-sm) 0 0;color:var(--color-muted);font-size:var(--text-xs)}.unit-status--registered span{color:var(--color-mint-deep,var(--color-ink-soft));font-weight:700}.unit-database-option{gap:var(--space-sm);padding:var(--space-sm);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-surface);cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:start;margin-block-start:var(--space-sm);display:grid}.unit-database-option input{width:1.25rem;height:1.25rem;accent-color:var(--color-accent-deep);margin:.15rem 0 0}.unit-database-option span{gap:.15rem;display:grid}.unit-database-option small{color:var(--color-muted)}.recipe-review__steps{counter-reset:review-steps}.recipe-review__steps>li{gap:var(--space-sm);counter-increment:review-steps;grid-template-columns:1.5rem minmax(0,1fr);display:grid}.recipe-review__steps>li:before{content:counter(review-steps);border-radius:var(--radius-pill);background:var(--color-accent-2);width:1.5rem;height:1.5rem;font-family:var(--font-label);font-size:var(--text-xs);place-items:center;display:grid}.recipe-review__back{justify-self:start}.form-alert{padding:var(--space-md);border:var(--rule-hairline) solid var(--color-error);border-radius:var(--radius-input);background:var(--color-error-soft)}.form-alert ul{margin:var(--space-xs) 0 0;padding-inline-start:var(--space-lg)}.submit-bar{z-index:var(--z-sticky);bottom:max(var(--space-md), env(safe-area-inset-bottom));gap:var(--space-md);padding:var(--space-md);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper);box-shadow:var(--shadow-raised);display:grid;position:sticky}.submit-bar p{display:none}.primary-button{--btn-edge:var(--color-accent-deep);justify-content:center;align-items:center;gap:var(--space-xs);min-height:3.25rem;padding-inline:var(--space-xl);background:var(--color-accent);color:var(--color-accent-ink);cursor:pointer;box-shadow:0 4px 0 var(--btn-edge), var(--shadow-raised);transition:transform var(--dur-micro) var(--ease-out);border:0;display:inline-flex;transform:translateY(0)}.primary-button:active{box-shadow:0 1px 0 var(--btn-edge), var(--shadow-contact);transform:translateY(3px)}.primary-button:disabled{cursor:not-allowed;opacity:.55;transform:none}.spinner{border:2px solid var(--color-accent-deep);border-block-start-color:var(--color-ink);border-radius:var(--radius-pill);width:1rem;height:1rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.save-result{gap:var(--space-md);padding:var(--space-lg);border-radius:var(--radius-card);background:var(--color-mint-soft);color:var(--color-ink);grid-template-columns:auto minmax(0,1fr);display:grid}.save-result__mark{border-radius:var(--radius-pill);background:var(--color-mint);width:3rem;height:3rem;color:var(--color-ink);place-items:center;font-weight:700;display:grid}.save-result h2,.save-result p{margin:0}.save-result h2{font-family:var(--font-display);font-style:normal}.save-result__actions{gap:var(--space-sm);flex-wrap:wrap;margin-block-start:var(--space-md);display:flex}.save-result button,.save-result a{padding-inline:var(--space-md);border:var(--rule-hairline) solid var(--color-rule-strong);background:var(--color-surface);color:var(--color-ink);cursor:pointer;align-items:center;text-decoration:none;display:inline-flex}.site-footer{padding-block:var(--space-lg);border-top:var(--rule-hairline) solid var(--color-rule);color:var(--color-muted);font-family:var(--font-label);font-size:var(--text-xs);margin-top:auto}.site-footer p{margin:0}@media (hover:hover) and (pointer:fine){.header-action:hover{border-bottom-color:var(--color-accent-3)}.field input:hover,.field textarea:hover{background:var(--color-paper-2)}.add-button:hover,.save-result button:hover,.save-result a:hover{transform:translateY(-1px)}.primary-button:hover:not(:disabled){transform:translateY(-2px)}.text-button:hover:not(:disabled){background:var(--color-paper-3)}}@media (width>=40rem){.page-intro{grid-template-columns:minmax(0,1.5fr) minmax(14rem,.5fr);align-items:end;padding-block-start:var(--space-3xl)}.form-section{padding:var(--space-xl)}.form-section--ingredients,.form-section--steps{padding:var(--space-lg)}.ingredient-row__fields{grid-template-columns:minmax(0,1fr) minmax(4rem,.22fr) minmax(5.5rem,.34fr)}.field--ingredient-name{grid-column:auto}.submit-bar{grid-template-columns:minmax(0,1fr) auto;align-items:center}.submit-bar p{color:var(--color-muted);font-size:var(--text-sm);margin:0;display:block}}@media (pointer:coarse){.text-button,.add-button,.primary-button,.save-result button,.save-result a{min-height:3rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.15s!important;animation-duration:.15s!important;animation-iteration-count:1!important}}.site-nav-slab{justify-content:space-between;align-items:center;gap:var(--space-md);min-height:4.5rem;padding-inline:var(--page-gutter);border-bottom:var(--rule-heavy) solid var(--color-ink);background:var(--color-paper);color:var(--color-ink);display:flex}.slab-mark,.site-nav-slab nav a{min-height:2.75rem;color:var(--color-ink);white-space:nowrap;align-items:center;font-weight:700;line-height:1;text-decoration:none;display:inline-flex}.slab-mark{gap:var(--space-xs);font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase}.slab-mark img{object-fit:contain;flex:none;width:2.5rem;height:2.5rem}.site-nav-slab nav{align-items:center;gap:var(--space-xs);display:flex}.site-nav-slab nav a{padding-inline:var(--space-sm);font-size:var(--text-sm);letter-spacing:.04em}.site-nav-slab nav a[aria-current=page]{background:var(--color-accent);color:var(--color-accent-ink)}.site-nav-slab nav a:active{transform:translateY(1px)}@media (width<=39.999rem){.site-nav-slab{gap:var(--space-2xs);min-height:4rem;padding-inline:var(--space-2xs)}.slab-mark{flex:none}.slab-mark span{display:none}.slab-mark img{width:2rem;height:2rem}.site-nav-slab nav{flex:auto;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:0;min-width:0;display:grid}.site-nav-slab nav a{padding-inline:var(--space-3xs);font-size:var(--text-xs);justify-content:center}}.catalogue-page,.detail-page,.search-page{width:min(100%, var(--page-max));padding-inline:var(--page-gutter);margin-inline:auto}.catalogue-page{padding-block:var(--space-xl) var(--space-3xl)}.catalogue-intro{gap:var(--space-lg);min-width:0;padding-block:var(--space-lg) var(--space-2xl);align-items:end;display:grid}.catalogue-intro h1,.recipe-detail__header h1,.load-state h1{min-width:0;font-family:var(--font-display);letter-spacing:-.035em;overflow-wrap:anywhere;margin:0;font-style:normal;font-weight:700;line-height:1.05}.catalogue-intro h1{font-size:var(--text-2xl)}.catalogue-intro p:not(.recipe-count){max-width:58ch;margin:var(--space-sm) 0 0;color:var(--color-ink-soft)}.recipe-count{align-items:baseline;gap:var(--space-sm);margin:0;display:flex}.recipe-count strong{color:var(--color-accent-3);font-family:var(--font-display);font-size:var(--text-2xl);font-variant-numeric:tabular-nums;line-height:1}.recipe-count span{color:var(--color-ink-soft);font-weight:700}.catalogue-search{gap:var(--space-xs);max-width:50rem;margin-block-end:var(--space-xl);display:grid}.catalogue-search>label{color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700}.catalogue-search__controls{gap:var(--space-sm);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.catalogue-search input{width:100%;min-width:0;min-height:3.25rem;padding-inline:var(--space-md);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-ink)}.catalogue-search input:disabled,.catalogue-search button:disabled{cursor:not-allowed;opacity:.55}.catalogue-search button{min-width:4.5rem;min-height:3.25rem;padding-inline:var(--space-md);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-paper-2);color:var(--color-ink);cursor:pointer;white-space:nowrap;transition:transform var(--dur-micro) var(--ease-out);font-weight:700}.catalogue-search .catalogue-search__tag-trigger{min-width:3.25rem;font-size:var(--text-lg);padding-inline:0}.catalogue-search button:active{transform:translateY(1px)}.catalogue-search>p{min-height:1lh;color:var(--color-muted);font-size:var(--text-sm);margin:0}.recipe-index{gap:var(--space-lg);display:grid}.recipe-index__heading,.detail-section-heading,.site-footer__meta{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.recipe-index__heading{border-bottom:var(--rule-hairline) solid var(--color-rule-strong);padding-block-end:var(--space-sm)}.recipe-index__heading h1,.recipe-index__heading h2,.detail-section-heading h2{font-family:var(--font-display);margin:0;font-style:normal}.recipe-index__heading h1,.recipe-index__heading h2{min-width:0;font-size:var(--text-lg);overflow-wrap:anywhere;flex:1;line-height:1.3}.index-action,.back-link,.recipe-source a{min-height:2.75rem;color:var(--color-ink);text-decoration-thickness:var(--rule-heavy);text-underline-offset:var(--space-3xs);white-space:nowrap;align-items:center;font-weight:700;display:inline-flex}.index-action:active,.back-link:active,.recipe-source a:active{transform:translateY(1px)}.recipe-grid,.recipe-skeletons{gap:var(--space-md);grid-template-columns:minmax(0,1fr);display:grid}.recipe-card{border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-2);min-width:0;color:var(--color-ink);box-shadow:var(--shadow-contact)}.recipe-card[data-accent="1"]{background:var(--color-accent-2-soft);color:var(--color-ink)}.recipe-card[data-accent="2"]{background:var(--color-mint-soft);color:var(--color-ink)}.recipe-card>a{gap:var(--space-md);min-height:14rem;padding:var(--space-lg);color:inherit;transition:transform var(--dur-short) var(--ease-out);align-content:space-between;text-decoration:none;display:grid}.recipe-card>a:active{transform:translateY(2px)}.recipe-card__topline{justify-content:flex-end;align-items:center;gap:var(--space-md);color:var(--color-ink-soft);font-size:var(--text-sm);display:flex}.recipe-card h2{min-width:0;font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.025em;overflow-wrap:anywhere;margin:0;font-style:normal}.recipe-card p{max-width:65ch;color:var(--color-ink-soft);margin:0}.recipe-facts{gap:var(--space-sm);flex-wrap:wrap;margin:0;display:flex}.recipe-facts div{align-items:baseline;gap:var(--space-xs);display:flex}.recipe-facts dt{color:var(--color-ink-soft);font-size:var(--text-sm)}.recipe-facts dd{font-variant-numeric:tabular-nums;margin:0;font-weight:700}.recipe-skeleton,.detail-skeleton{border-radius:var(--radius-card);background:var(--color-paper-3);animation:loading-fade 1.2s var(--ease-in-out) infinite alternate;display:block}.recipe-skeleton{min-height:14rem}.detail-skeleton{min-height:32rem;margin-block-start:var(--space-lg)}@keyframes loading-fade{to{opacity:.55}}.load-state{gap:var(--space-md);max-width:58ch;padding:var(--space-xl);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-surface);color:var(--color-ink);display:grid}.load-state h1,.load-state h2,.load-state p{margin:0}.load-state button,.load-state>a{width:fit-content;min-height:3rem;padding-inline:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-pill);background:var(--color-accent);color:var(--color-accent-ink);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.load-state button:active,.load-state>a:active{transform:translateY(1px)}.load-state button:disabled{cursor:not-allowed;opacity:.55}.detail-page{padding-block:var(--space-lg) var(--space-3xl)}.back-link{margin-block-end:var(--space-lg)}.recipe-detail{gap:var(--space-2xl);display:grid}.recipe-detail__header{gap:var(--space-xs);min-width:0;padding-block:var(--space-2xs) var(--space-xl);border-bottom:var(--rule-heavy) solid var(--color-ink);display:grid}.detail-actions{align-items:center;gap:var(--space-2xs);flex-wrap:nowrap;display:flex}.detail-actions .back-link{margin-block-end:0;margin-inline-end:auto}.detail-actions .add-button{min-height:2.5rem;padding-inline:var(--space-md);align-items:center;text-decoration:none;display:inline-flex}.detail-actions .text-button{min-height:2.5rem;padding-inline:var(--space-sm)}.recipe-detail__intro{width:100%;min-width:0}.recipe-detail__header h1{font-size:clamp(2.5rem,6vw,4.5rem)}.recipe-detail__header p{max-width:none;margin:var(--space-md) 0 0;color:var(--color-ink-soft);font-size:var(--text-md)}.recipe-detail__body{gap:var(--space-xl);align-items:start;min-width:0;display:grid}.ingredient-panel,.steps-panel{min-width:0}.ingredient-panel{padding:var(--space-lg);border-radius:var(--radius-card);background:var(--color-paper-2);color:var(--color-ink)}.detail-section-heading{border-bottom:var(--rule-hairline) solid var(--color-rule-strong);padding-block-end:var(--space-md)}.detail-section-heading h2{font-size:var(--text-xl)}.detail-section-heading span{color:var(--color-ink-soft);font-size:var(--text-sm);white-space:nowrap;font-weight:700}.ingredient-list,.cooking-steps{margin:0;padding:0;list-style:none}.ingredient-list li+li,.cooking-steps li+li{border-top:var(--rule-hairline) solid var(--color-rule)}.ingredient-list__row{min-height:3rem;padding-block:var(--space-sm)}.ingredient-list__content{gap:var(--space-2xs) var(--space-sm);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;display:grid}.ingredient-list__content strong{overflow-wrap:anywhere;min-width:0}.ingredient-list__content strong a{-webkit-text-decoration-color:var(--color-accent-2);text-decoration-color:var(--color-accent-2);text-decoration-thickness:var(--rule-heavy);text-underline-offset:var(--space-2xs)}.ingredient-list__content>span{white-space:nowrap;font-weight:700}.cooking-steps li{gap:var(--space-sm);padding-block:var(--space-md);grid-template-columns:auto minmax(0,1fr);display:grid}.cooking-steps li>span{border-radius:var(--radius-pill);background:var(--color-accent-2-soft);width:2.25rem;height:2.25rem;color:var(--color-ink);font-variant-numeric:tabular-nums;place-items:center;font-weight:700;display:grid}.cooking-steps p{max-width:65ch;font-size:var(--text-md);margin:0}.recipe-source{justify-items:start;gap:var(--space-xs);border-top:var(--rule-hairline) solid var(--color-rule-strong);padding-block-start:var(--space-lg);display:grid}.recipe-source>span{color:var(--color-ink-soft);font-weight:700}.recipe-source a{overflow-wrap:anywhere;white-space:normal;min-width:0}.site-footer__meta{align-items:baseline}.simple-page-heading,.wiki-page{gap:var(--space-lg);display:grid}.simple-page-heading{border-bottom:var(--rule-heavy) solid var(--color-ink);margin-block-end:var(--space-xl);padding-block-end:var(--space-xl)}.simple-page-heading>span,.page-kind{width:fit-content;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);background:var(--color-accent-2-soft);font-family:var(--font-label);font-size:var(--text-xs);font-weight:700}.simple-page-heading h1,.wiki-page__header h1{font-family:var(--font-display);overflow-wrap:anywhere;margin:0;font-size:clamp(2.25rem,7vw,4.5rem);line-height:1.05}.simple-page-heading p{max-width:62ch;color:var(--color-ink-soft);margin:0}.page-editor{gap:var(--space-lg);max-width:48rem;padding:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-contact);display:grid}.page-editor .primary-button{justify-self:start}.page-editor--inline{background:var(--color-paper-2);max-width:none}.page-grid{gap:var(--space-md);grid-template-columns:minmax(0,1fr);display:grid}.page-card{border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-surface);min-width:0;box-shadow:var(--shadow-contact)}.page-card>a{gap:var(--space-md);min-height:11rem;padding:var(--space-lg);align-content:start;text-decoration:none;display:grid}.page-card h2,.page-card p{margin:0}.page-card h2{font-family:var(--font-display);font-size:var(--text-lg);overflow-wrap:anywhere}.page-card p{color:var(--color-ink-soft);-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.wiki-page__header{gap:var(--space-xs);padding-block:var(--space-2xs) var(--space-xl);border-bottom:var(--rule-heavy) solid var(--color-ink);display:grid}.wiki-page__intro{width:100%;min-width:0}.page-body{max-width:none;margin:var(--space-md) 0 0;color:var(--color-ink-soft);font-size:var(--text-md);overflow-wrap:anywhere;white-space:pre-wrap}.page-reference{color:var(--color-ink);-webkit-text-decoration-color:var(--color-accent-2);text-decoration-color:var(--color-accent-2);text-decoration-thickness:var(--rule-heavy);text-underline-offset:var(--space-2xs);font-weight:700}.page-relations,.page-relations__section{gap:var(--space-lg);display:grid}.page-relations__section h2{font-family:var(--font-display);font-size:var(--text-lg);margin:0}.ingredient-merge-panel{gap:var(--space-md);padding:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-surface);display:grid}.ingredient-merge-panel h2,.ingredient-merge-panel p{margin:0}.ingredient-merge-panel h2{font-family:var(--font-display);font-size:var(--text-lg)}.ingredient-merge-panel>.text-button{justify-self:start;padding-inline:0}.ingredient-merge-form{gap:var(--space-md);border-top:var(--rule-hairline) solid var(--color-rule-strong);padding-block-start:var(--space-md);display:grid}.ingredient-merge-warning{max-width:62ch;color:var(--color-error);font-weight:700}.ingredient-merge-form .primary-button{justify-self:start}.primary-button--danger{background:var(--color-error)}.search-page{padding-block:var(--space-xl) var(--space-3xl)}.search-form{gap:var(--space-xs);max-width:50rem;margin-block-end:var(--space-2xl);display:grid}.search-form>label{color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700}.search-form>div{gap:var(--space-sm);grid-template-columns:minmax(0,1fr) auto;display:grid}.search-form input{width:100%;min-width:0;min-height:3.25rem;padding-inline:var(--space-md);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-ink)}.search-results{gap:var(--space-lg);display:grid}.search-results>h2{font-family:var(--font-display);font-size:var(--text-lg);margin:0}.result-list{gap:var(--space-md);display:grid}.result-card{border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-contact)}.result-card>a{gap:var(--space-md);padding:var(--space-lg);text-decoration:none;display:grid}.result-card h2,.result-card p,.result-card dl{margin:0}.result-card h2{font-family:var(--font-display);font-size:var(--text-lg);overflow-wrap:anywhere}.result-card p,.result-empty{color:var(--color-ink-soft)}.result-card dl{gap:var(--space-md);flex-wrap:wrap;display:flex}.result-card dl div{gap:var(--space-xs);display:flex}.result-card dt{color:var(--color-muted)}.result-card dd{margin:0;font-weight:700}.result-empty{padding:var(--space-xl);border:var(--rule-hairline) dashed var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-2);margin:0}.nutrition-panel,.nutrition-summary{gap:var(--space-lg);padding:var(--space-lg);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-2);margin-block-start:var(--space-xl);display:grid}.nutrition-summary{grid-column:1/-1;margin-block-start:0}.nutrition-current{gap:var(--space-xs);display:grid}.nutrition-current>span,.nutrition-current>small{color:var(--color-ink-soft)}.nutrition-current .primary-button{justify-self:start;margin-block-start:var(--space-xs)}.nutrition-search{align-items:end;gap:var(--space-sm);grid-template-columns:minmax(0,1fr) auto;display:grid}.nutrition-search__actions{gap:var(--space-xs);align-items:center;display:flex}.nutrition-current__heading{align-items:baseline;gap:var(--space-sm);min-width:0;display:flex}.nutrition-current__heading>strong{overflow-wrap:anywhere;min-width:0}.nutrition-current__heading>.text-button{flex:none;padding-inline:0}.food-results,.conversion-list{gap:var(--space-xs);margin:0;padding:0;list-style:none;display:grid}.food-results button{justify-content:space-between;align-items:center;gap:var(--space-md);width:100%;min-height:3rem;padding:var(--space-sm) var(--space-md);border:var(--rule-hairline) solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-surface);color:inherit;text-align:left;display:flex}.food-results span{color:var(--color-ink-soft);font-size:var(--text-sm);white-space:nowrap}.food-pagination{justify-content:center;align-items:center;gap:var(--space-md);display:flex}.food-pagination>span{color:var(--color-ink-soft);font-size:var(--text-sm)}.nutrition-details{border-top:var(--rule-hairline) solid var(--color-rule);padding-block-start:var(--space-md)}.nutrition-details summary{cursor:pointer;font-weight:700}.compact-form{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr));margin-block-start:var(--space-md);display:grid}.compact-form label{gap:var(--space-2xs);color:var(--color-ink-soft);font-size:var(--text-sm);font-weight:700;display:grid}.compact-form input{min-width:0;min-height:2.75rem;padding-inline:var(--space-sm);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-surface)}.compact-form .primary-button{align-self:end}.conversion-list{color:var(--color-ink-soft);margin-block-start:var(--space-md)}.conversion-row{gap:var(--space-sm);padding-block:var(--space-sm);border-bottom:var(--rule-hairline) solid var(--color-rule);grid-template-columns:minmax(6rem,1fr) auto minmax(7rem,1fr);align-items:baseline;display:grid}.conversion-row strong{color:var(--color-ink);text-align:right}.conversion-section{overflow-x:auto}.conversion-form{gap:var(--space-xs);grid-template-columns:2rem minmax(6rem,1fr) 1rem minmax(7rem,1.2fr) 3rem;align-items:center;min-width:27rem;display:grid}.conversion-list{min-width:27rem}.conversion-form input,.conversion-form select{min-width:0;min-height:2.75rem;padding-inline:var(--space-sm);border:var(--rule-hairline) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-surface)}.conversion-weight{gap:var(--space-xs);align-items:center;min-width:0;display:flex}.conversion-weight input{width:100%}.conversion-quantity{text-align:center;font-weight:700}.conversion-form input[readonly]{background:var(--color-paper-3);color:var(--color-ink-soft)}.conversion-form .text-button{min-height:2.75rem;padding-inline:var(--space-xs);white-space:nowrap}.conversion-row-add{width:2.75rem;min-height:2.75rem;border-radius:var(--radius-pill);font-size:var(--text-lg);place-items:center;margin-block-start:var(--space-md);padding:0;display:grid}.nutrition-table-wrap{overflow-x:auto}.nutrition-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;min-width:40rem}.nutrition-table th,.nutrition-table td{padding:var(--space-sm);border-bottom:var(--rule-hairline) solid var(--color-rule);text-align:right}.nutrition-table th:first-child,.nutrition-table tbody th{text-align:left}.nutrition-table tbody th span,.nutrition-table tbody th small{display:block}.nutrition-table tbody th small{color:var(--color-muted);margin-top:.15rem;font-size:.6875rem;font-weight:400;line-height:1.35}.nutrition-table tfoot{font-weight:700}@media (width<=34rem){.nutrition-search,.compact-form{grid-template-columns:1fr}.food-results button{flex-direction:column;align-items:flex-start}}@media (hover:hover) and (pointer:fine){.site-nav-slab nav a:hover{background:var(--color-paper-3)}.catalogue-search input:hover{background:var(--color-paper-2)}.catalogue-search button:hover{transform:translateY(-1px)}.recipe-card>a:hover{transform:translateY(-2px)}.index-action:hover,.back-link:hover,.recipe-source a:hover{-webkit-text-decoration-color:var(--color-accent-2);text-decoration-color:var(--color-accent-2)}.page-card>a:hover,.result-card>a:hover{transform:translateY(-2px)}.load-state button:hover,.load-state>a:hover{transform:translateY(-1px)}}@media (width>=40rem){.catalogue-intro{grid-template-columns:minmax(0,1fr) auto}.recipe-grid,.recipe-skeletons,.page-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=60rem){.recipe-detail__body{grid-template-columns:minmax(18rem,.72fr) minmax(0,1.28fr)}.ingredient-panel{top:var(--space-lg);position:sticky}}@media (pointer:coarse){.catalogue-search input,.catalogue-search button,.site-nav-slab nav a,.index-action,.back-link,.recipe-source a{min-height:3rem}}@media (prefers-reduced-motion:reduce){.catalogue-search button,.recipe-card>a,.site-nav-slab nav a,.index-action,.back-link,.recipe-source a,.load-state button,.load-state>a{transform:none!important}.recipe-skeleton,.detail-skeleton{animation:none}}
