:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--palette-neutral-0:#fff;--palette-neutral-50:#f5f7f8;--palette-neutral-100:#eaeef1;--palette-neutral-200:#dde3e7;--palette-neutral-300:#c3cdd4;--palette-neutral-400:#8a959d;--palette-neutral-600:#5c6770;--palette-neutral-900:#1c2226;--palette-neutral-925:#222b31;--palette-neutral-950:#1a2126;--palette-neutral-975:#12171a;--palette-neutral-800:#2e3940;--palette-neutral-700:#3d4a52;--palette-neutral-500:#6f7c85;--palette-neutral-350:#9aa7af;--palette-neutral-150:#e8edef;--palette-accent-100:#e7f0f5;--palette-accent-200:#c8dce6;--palette-accent-300:#8fc2da;--palette-accent-400:#a8d2e6;--palette-accent-600:#2c5f7a;--palette-accent-700:#24506a;--palette-accent-800:#1b3f55;--palette-accent-soft-dark:#1e3641;--palette-accent-tint-dark:#2a4a5a;--palette-focus-light:#17618a;--palette-butter-200:#f7e7c2;--palette-butter-300:#f2d79b;--palette-butter-600:#a8802f;--palette-butter-dark:#d9be7e;--palette-clay-100:#f6e7e4;--palette-clay-600:#a8544a;--palette-clay-700:#8e453c;--palette-clay-300-dark:#e39a8e;--palette-clay-soft-dark:#3a2622;--palette-ochre-100:#f6e6c4;--palette-ochre-700:#7a5a12;--palette-ochre-300-dark:#d9b562;--palette-ochre-soft-dark:#3a2e12;--color-canvas:var(--palette-neutral-50);--color-surface:var(--palette-neutral-0);--color-surface-raised:var(--palette-neutral-0);--color-surface-sunken:var(--palette-neutral-100);--color-border:var(--palette-neutral-200);--color-border-strong:var(--palette-neutral-300);--color-overlay:#141e246b;--color-ink:var(--palette-neutral-900);--color-ink-muted:var(--palette-neutral-600);--color-ink-subtle:var(--palette-neutral-400);--color-ink-on-accent:var(--palette-neutral-0);--color-accent:var(--palette-accent-600);--color-accent-hover:var(--palette-accent-700);--color-accent-pressed:var(--palette-accent-800);--color-accent-soft:var(--palette-accent-100);--color-accent-tint:var(--palette-accent-200);--color-accent-ink:var(--palette-accent-600);--color-danger:var(--palette-clay-600);--color-danger-hover:var(--palette-clay-700);--color-danger-soft:var(--palette-clay-100);--color-danger-ink:var(--palette-clay-600);--color-warning:var(--palette-ochre-700);--color-warning-soft:var(--palette-ochre-100);--color-warning-ink:var(--palette-ochre-700);--color-focus:var(--palette-focus-light);--color-joy:var(--palette-butter-300);--color-joy-soft:var(--palette-butter-200);--color-joy-ink:var(--palette-butter-600);--font-display:"Fraunces Variable", Georgia, "Times New Roman", serif;--font-sans:"Atkinson Hyperlegible Next Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--text-2xs:.75rem;--text-xs:.8125rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.25rem;--leading-tight:1.15;--leading-snug:1.3;--leading-normal:1.5;--leading-relaxed:1.65;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.06em;--space-05:.125rem;--space-1:.25rem;--space-1-5:.375rem;--space-2:.5rem;--space-2-5:.625rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--layout-gutter:var(--space-4);--layout-measure:46rem;--layout-measure-prose:34rem;--tap-min:2.75rem;--tap-comfortable:3rem;--tab-bar-height:3.5rem;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.25rem;--radius-full:999px;--card-padding:var(--space-4);--elevation-0:none;--elevation-1:0 1px 2px #1c22260d;--elevation-2:0 2px 8px #1c222614;--elevation-3:0 12px 32px #1c22262e;--duration-fast:.12s;--duration-base:.2s;--duration-slow:.32s;--duration-page:.26s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-entrance:cubic-bezier(.05, .7, .1, 1);--motion-rise:.75rem;--motion-rise-sheet:1.5rem;--duration-loop:1.4s;--z-base:0;--z-sticky:10;--z-nav:20;--z-banner:30;--z-skip:100}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-canvas:var(--palette-neutral-975);--color-surface:var(--palette-neutral-950);--color-surface-raised:var(--palette-neutral-925);--color-surface-sunken:var(--palette-neutral-800);--color-border:var(--palette-neutral-800);--color-border-strong:var(--palette-neutral-700);--color-overlay:#0009;--color-ink:var(--palette-neutral-150);--color-ink-muted:var(--palette-neutral-350);--color-ink-subtle:var(--palette-neutral-500);--color-ink-on-accent:var(--palette-neutral-975);--color-accent:var(--palette-accent-300);--color-accent-hover:var(--palette-accent-400);--color-accent-pressed:var(--palette-accent-200);--color-accent-soft:var(--palette-accent-soft-dark);--color-accent-tint:var(--palette-accent-tint-dark);--color-accent-ink:var(--palette-accent-400);--color-danger:var(--palette-clay-300-dark);--color-danger-hover:var(--palette-clay-300-dark);--color-danger-soft:var(--palette-clay-soft-dark);--color-danger-ink:var(--palette-clay-300-dark);--color-warning:var(--palette-ochre-300-dark);--color-warning-soft:var(--palette-ochre-soft-dark);--color-warning-ink:var(--palette-ochre-300-dark);--color-focus:var(--palette-accent-400);--color-joy:var(--palette-butter-dark);--color-joy-soft:var(--palette-accent-tint-dark);--color-joy-ink:var(--palette-butter-dark);--elevation-1:0 1px 2px #0006;--elevation-2:0 2px 10px #00000080;--elevation-3:0 16px 40px #000000a6}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:1ms;--duration-base:1ms;--duration-slow:1ms;--duration-page:1ms}}@font-face{font-family:Fraunces Variable;src:url(/assets/fraunces-latin-wght-ukD16Tqj.woff2)format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Next Variable;src:url(/assets/atkinson-hyperlegible-next-latin-wght-BcXVPD7q.woff2)format("woff2-variations");font-weight:200 800;font-style:normal;font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;margin:0}h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);text-wrap:balance;margin:0}h2{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-ink-muted)}img{max-width:100%}:where(a,button,input,select,textarea,label.btn,[tabindex]):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.app-main:focus,.app-main:focus-visible{outline:none}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visually-hidden:focus-visible+label{outline:2px solid var(--color-focus);outline-offset:2px}.skip-link{left:var(--layout-gutter);z-index:var(--z-skip);padding:var(--space-2-5) var(--space-3);min-height:var(--tap-min);background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--elevation-2);align-items:center;text-decoration:none;display:inline-flex;position:absolute;top:-100px}.skip-link:focus{top:calc(var(--safe-top) + var(--space-2))}.muted{color:var(--color-ink-muted)}.meta{color:var(--color-ink-muted);font-size:var(--text-sm)}.tabular{font-variant-numeric:tabular-nums}.app{flex-direction:column;min-height:100dvh;display:flex}::view-transition-old(root){animation-duration:var(--duration-page);animation-timing-function:var(--ease-standard)}::view-transition-new(root){animation-duration:var(--duration-page);animation-timing-function:var(--ease-standard)}::view-transition-group(recipe-cover){animation-duration:var(--duration-page);animation-timing-function:var(--ease-entrance)}.app-bar{z-index:var(--z-sticky);justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--layout-gutter);padding-top:calc(var(--safe-top) + var(--space-3));padding-left:calc(var(--safe-left) + var(--layout-gutter));padding-right:calc(var(--safe-right) + var(--layout-gutter));background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;position:sticky;top:0}.brand{min-height:var(--tap-min);font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);color:var(--color-ink);align-items:center;text-decoration:none;display:inline-flex}.offline-pill{padding:var(--space-1) var(--space-2-5);font-size:var(--text-2xs);font-weight:var(--weight-semibold);border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent-ink);animation:rise-in var(--duration-fast) var(--ease-out)}.app-main{width:100%;max-width:var(--layout-measure);padding:var(--layout-gutter);padding-left:calc(var(--safe-left) + var(--layout-gutter));padding-right:calc(var(--safe-right) + var(--layout-gutter));padding-bottom:calc(var(--tab-bar-height) + var(--safe-bottom) + var(--space-8));flex:1;margin:0 auto}.tab-bar{z-index:var(--z-nav);background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:var(--safe-bottom);padding-left:var(--safe-left);padding-right:var(--safe-right);display:flex;position:fixed;bottom:0;left:0;right:0}.tab-link{justify-content:center;align-items:center;gap:var(--space-05);min-height:var(--tab-bar-height);padding:var(--space-1) var(--space-2);font-size:var(--text-2xs);font-weight:var(--weight-medium);color:var(--color-ink-muted);transition:color var(--duration-fast) var(--ease-standard);flex-direction:column;flex:1;text-decoration:none;display:flex}.tab-link .tab-icon{border-radius:var(--radius-full);width:1.5rem;height:1.5rem;transition:box-shadow var(--duration-fast) var(--ease-out);display:block;box-shadow:0 .375rem 0 -.25rem #0000}.tab-link[aria-current=page]{color:var(--color-accent-ink);font-weight:var(--weight-semibold)}.tab-link[aria-current=page] .tab-icon{box-shadow:0 .375rem 0 -.25rem}.list-page,.detail,.editor{display:block}.list-page{padding-bottom:var(--space-12)}.detail{max-width:var(--layout-measure-prose)}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.page-header h1{flex:12rem;min-width:0}.section{margin-bottom:var(--space-8)}.section:last-child{margin-bottom:0}.two-up{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));display:grid}.header-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.editor-actions{gap:var(--space-2);margin-top:var(--space-6);justify-content:flex-end;display:flex}.inline-form{gap:var(--space-2);flex:1;align-items:flex-start;display:flex}.inline-form .input{margin-bottom:0}.empty{gap:var(--space-4);text-align:center;padding:var(--space-12) var(--space-4);color:var(--color-ink-muted);text-wrap:balance;animation:rise-in var(--duration-slow) var(--ease-out);justify-items:center;display:grid}@keyframes rise-in{0%{opacity:0;translate:0 var(--motion-rise)}to{opacity:1;translate:none}}@media (prefers-reduced-motion:reduce){@keyframes rise-in{0%{opacity:0}to{opacity:1}}}.btn{justify-content:center;align-items:center;gap:var(--space-1-5);min-height:var(--tap-comfortable);padding:var(--space-2-5) var(--space-4);font:inherit;font-weight:var(--weight-semibold);border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);text-decoration:none;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled,.btn-disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-ink-on-accent)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-secondary{background:var(--color-accent-soft);color:var(--color-accent-ink);border-color:#0000}.btn-secondary:hover:not(:disabled){background:var(--color-accent-tint)}.btn-danger{background:var(--color-surface);color:var(--color-danger-ink);border-color:var(--color-danger)}.btn-icon{min-width:var(--tap-comfortable);font-size:var(--text-lg);color:var(--color-ink-muted);background:0 0;border-color:#0000;padding:0;line-height:1}.btn-icon:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-ink)}.fab{right:calc(var(--safe-right) + var(--layout-gutter));bottom:calc(var(--tab-bar-height) + var(--safe-bottom) + var(--space-4));z-index:var(--z-nav);min-height:var(--tap-comfortable);padding-inline:var(--space-5);border-radius:var(--radius-full);box-shadow:var(--elevation-3);position:fixed}.text-link{color:var(--color-accent-ink);text-underline-offset:.2em}.field{margin-bottom:var(--space-4);display:block}.field-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-ink-muted);margin-bottom:var(--space-1-5);display:block}.input,.unit-select{width:100%;min-height:var(--tap-comfortable);padding:var(--space-2-5) var(--space-3);font:inherit;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md)}.input::placeholder{color:var(--color-ink-subtle)}.unit-select{padding-inline:var(--space-2)}.search{margin-bottom:var(--space-5)}.amount-input{text-align:right;font-variant-numeric:tabular-nums}.name-input{min-width:0}.step-input{resize:vertical;min-height:5.25rem;line-height:var(--leading-normal)}.convert-hint{margin-top:var(--space-1-5);min-height:var(--tap-min);padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--text-xs);text-align:left;color:var(--color-accent-ink);background:var(--color-accent-soft);border-radius:var(--radius-sm);cursor:pointer;animation:rise-in var(--duration-fast) var(--ease-entrance);border:none;display:inline-block}.rows{gap:var(--space-5);margin-bottom:var(--space-4);display:grid}.ingredient-row,.direction-row{gap:var(--space-1-5);display:grid}.ingredient-fields{grid-template-columns:5rem 6rem 1fr var(--tap-comfortable);gap:var(--space-1-5);align-items:start;display:grid}.direction-fields{grid-template-columns:1.5rem 1fr var(--tap-comfortable);gap:var(--space-1-5);align-items:start;display:grid}.step-number{color:var(--color-ink-subtle);padding-top:var(--space-3);font-variant-numeric:tabular-nums}@media (width<=26.5rem){.ingredient-fields{grid-template-columns:5rem 1fr var(--tap-comfortable)}.ingredient-fields .amount-input{grid-area:1/1}.ingredient-fields .unit-select{grid-area:1/2}.ingredient-fields .btn-icon{grid-area:1/3}.ingredient-fields .name-input{grid-area:2/1/3/-1}}.recipe-cards,.rows,.ingredient-list,.check-list,.stat-list{margin:0;padding:0;list-style:none}.recipe-cards{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));display:grid}.recipe-card{height:100%;padding:var(--card-padding);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--elevation-1);color:inherit;transition:box-shadow var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.recipe-card:active{box-shadow:var(--elevation-0);transform:scale(.99)}.recipe-card h2{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--weight-semibold);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);text-transform:none;color:var(--color-ink);margin-bottom:var(--space-1)}.recipe-card .meta{font-size:var(--text-2xs)}.preview{color:var(--color-ink-muted);font-size:var(--text-xs);margin:var(--space-1) 0 0;display:none}@media (width>=40rem){.preview{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}.cover-hero,.card-cover,.cover-thumb{background:var(--color-surface-sunken);object-fit:cover;width:100%;height:auto;display:block}.cover-hero{aspect-ratio:4/3;border-radius:var(--radius-lg);margin-bottom:var(--space-5);view-transition-name:recipe-cover}.cover-pending{display:block}@media (prefers-reduced-motion:reduce){.cover-hero{view-transition-name:none}}.card-cover,.card-placeholder{aspect-ratio:4/3;width:calc(100% + 2 * var(--card-padding));max-width:none;margin:calc(-1 * var(--card-padding)) calc(-1 * var(--card-padding)) var(--space-3)}.recipe-card.has-cover{padding-top:0}.card-placeholder{background:var(--color-joy-soft);color:var(--color-joy-ink);display:block}.cover-preview{margin-bottom:var(--space-3)}.cover-thumb{aspect-ratio:4/3;border-radius:var(--radius-md);max-width:20rem;margin-bottom:var(--space-1-5)}.cover-preview .muted{font-size:var(--text-sm)}.cover-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.detail h1{font-size:var(--text-2xl)}.ingredient-list li{gap:var(--space-3);padding:var(--space-3) 0;font-size:var(--text-md);border-bottom:1px solid var(--color-border);display:flex}.qty{font-variant-numeric:tabular-nums;font-weight:var(--weight-bold);color:var(--color-accent-ink);flex:none;min-width:6rem}.direction-list{padding-left:var(--space-5);gap:var(--space-5);font-size:var(--text-md);line-height:var(--leading-relaxed);display:grid}.direction-list li::marker{font-family:var(--font-display);font-weight:var(--weight-bold);color:var(--color-accent-ink)}.check-list{gap:var(--space-05);display:grid}.check{align-items:center;gap:var(--space-3);min-height:var(--tap-comfortable);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);cursor:pointer;display:flex}.check:hover{background:var(--color-surface)}.check input{width:1.25rem;height:1.25rem;accent-color:var(--color-accent)}.check .count{font-variant-numeric:tabular-nums;font-size:var(--text-sm);color:var(--color-ink-muted);margin-left:auto}.error{padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger-ink);margin-bottom:var(--space-4);animation:rise-in var(--duration-fast) var(--ease-entrance)}.banner{gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:var(--text-sm);animation:rise-in var(--duration-base) var(--ease-entrance);flex-wrap:wrap;align-items:center;display:flex}.banner span{flex:15rem}.banner-warning{background:var(--color-warning-soft);color:var(--color-warning-ink)}.banner-warning .btn{color:inherit;background:0 0;border-color:currentColor}.banner-info{background:var(--color-accent-soft);color:var(--color-ink);border:1px solid var(--color-accent-tint)}.banner-info .btn-secondary{background:var(--color-surface)}.meter{border-radius:var(--radius-full);background:var(--color-surface-sunken);height:.625rem;margin-bottom:var(--space-2);overflow:hidden}.meter-fill{background:var(--color-accent);height:100%;transition:width var(--duration-slow) var(--ease-out)}.meter-fill-warning{background:var(--color-warning)}.stat-list{gap:var(--space-05);display:grid}.stat-list li{justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border);display:flex}.storage-row{gap:var(--space-3);align-items:center;display:flex}.storage-thumb{border-radius:var(--radius-sm);flex:none;width:4.5rem;height:3.375rem;margin:0}.storage-row-text{gap:var(--space-05);min-width:0;display:grid}.storage-row-text h2{font-size:var(--text-base);font-weight:var(--weight-semibold);text-transform:none;letter-spacing:var(--tracking-normal);color:var(--color-ink);margin:0}.confirm[open]{inset:auto var(--layout-gutter) calc(var(--safe-bottom) + var(--layout-gutter));width:auto;max-width:43rem;padding:var(--space-5);color:var(--color-ink);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--elevation-3);gap:var(--space-4);transition:opacity var(--duration-base) var(--ease-entrance), translate var(--duration-base) var(--ease-entrance), display var(--duration-base) allow-discrete;justify-items:end;margin:0 auto;display:grid;position:fixed}@starting-style{.confirm[open]{opacity:0;translate:0 var(--motion-rise-sheet)}}@media (prefers-reduced-motion:reduce){@starting-style{.confirm[open]{translate:none}}}.confirm p{justify-self:start;margin:0}.confirm::backdrop{background:var(--color-overlay);transition:background-color var(--duration-base) var(--ease-standard), display var(--duration-base) allow-discrete}@starting-style{.confirm::backdrop{background:0 0}}.progress-indeterminate{border-radius:var(--radius-full);background:var(--color-accent-soft);height:.25rem;margin-bottom:var(--space-3);overflow:hidden}.progress-indeterminate:after{content:"";border-radius:var(--radius-full);background:var(--color-accent);width:40%;height:100%;animation:progress-sweep var(--duration-loop) var(--ease-standard) infinite;display:block}@keyframes progress-sweep{0%{transform:translate(-100%)}to{transform:translate(350%)}}@media (prefers-reduced-motion:reduce){.progress-indeterminate{display:none}}.loading{animation:rise-in var(--duration-base) var(--ease-out) var(--duration-slow) both}.cover-fade{animation:rise-in var(--duration-slow) var(--ease-out)}
