.recipe-page{max-width:680px;margin:0 auto;padding:40px var(--gutter)}.recipe-topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 16px;margin-bottom:12px}.recipe-breadcrumbs{flex:1 1}.recipe-breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 0;list-style:none;padding:0;margin:0;font-size:var(--fs-small);line-height:1.3334;color:var(--ink-3)}.recipe-breadcrumbs li+li:before{content:"›";margin:0 9px}.recipe-breadcrumbs a{display:inline-block;padding:12px 9px;padding-block:max(0px,calc((44px - 1lh) / 2));margin:-12px -9px;margin-block:min(0px,calc((1lh - 44px) / 2));color:var(--link);font-weight:600}.recipe-breadcrumbs a:focus-visible{outline-offset:-6px;border-radius:10px}@media (max-width:719px){.recipe-breadcrumbs li:last-child{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}}@media (min-width:720px){.recipe-breadcrumbs{min-width:0}.recipe-breadcrumbs ol{flex-wrap:nowrap}.recipe-breadcrumbs li{flex:none}.recipe-breadcrumbs li:last-child{flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.lang-switcher{position:relative;flex:none;display:inline-flex;align-items:center;min-height:44px;padding:0 36px 0 16px;color:var(--ink-3)}.lang-switcher:before{inset:4px 0;border-radius:var(--r-pill);background:var(--card);box-shadow:var(--shadow-card),0 0 0 1px var(--card-edge);transition:box-shadow var(--dur-fast) var(--ease-out)}.lang-switcher:after,.lang-switcher:before{content:"";position:absolute;pointer-events:none}.lang-switcher:after{top:50%;right:15px;width:10px;height:6px;margin-top:-3px;background:currentColor;-webkit-mask:var(--chevron) center /contain no-repeat;mask:var(--chevron) center /contain no-repeat;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.lang-current{position:relative;font-family:var(--font-text);font-size:1rem;font-weight:600;line-height:1.2;color:var(--ink-2);white-space:nowrap;pointer-events:none}.lang-select{position:absolute;inset:0;width:100%;height:100%;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:0;border-radius:var(--r-pill);background:transparent;font-size:1rem;opacity:0;cursor:pointer}.lang-switcher:hover:before{box-shadow:var(--shadow-card),0 0 0 1.5px var(--primary)}.lang-switcher:focus-within:before{outline:2.5px solid var(--primary);outline-offset:3px}@supports selector(:has(a)){.lang-switcher:focus-within:not(:has(:focus-visible)):before{outline:none}}.recipe-cover,.recipe-hero{display:block;width:100%;aspect-ratio:16/10;border-radius:var(--r-card)}.recipe-hero{object-fit:cover;background:var(--surface-tint)}.recipe-cover{display:flex;align-items:center;justify-content:center;gap:clamp(8px,2.5%,20px);padding:0 16px 24px;background:radial-gradient(circle at 16% 30%,rgba(74,186,235,.08) 0 60px,transparent 61px),radial-gradient(circle at 84% 74%,rgba(74,186,235,.06) 0 40px,transparent 41px),linear-gradient(135deg,var(--surface-tint) 0,var(--primary-wash) 55%,var(--surface-tint) 100%);overflow:hidden}.recipe-cover-icon{display:grid;place-items:center;width:clamp(72px,22%,132px);aspect-ratio:1;border-radius:50%;background:color-mix(in srgb,var(--surface) 70%,transparent)}.recipe-cover-icon img{width:76%;height:auto;aspect-ratio:1;object-fit:contain}.recipe-cover-clay{width:clamp(96px,30%,160px);height:auto;opacity:var(--clay-dim)}.recipe-head{position:relative;margin:-40px 12px 0;padding:16px 18px;border-radius:var(--r-card);background:linear-gradient(var(--card),var(--card)),var(--page);box-shadow:var(--shadow-card),0 0 0 1px var(--card-edge)}.recipe-title{font-size:var(--fs-page-title);margin:0;overflow-wrap:break-word}.recipe-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.recipe-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--r-pill);font-size:var(--fs-caption);font-weight:600;line-height:1.4}.recipe-badge--age{background:var(--primary-wash);color:var(--primary-ink)}.recipe-badge--category{background:var(--surface-tint);color:var(--ink-2)}.recipe-stats{container-type:inline-size;margin-top:16px;border-radius:var(--r-card);background:var(--card);box-shadow:var(--shadow-card),0 0 0 1px var(--card-edge)}.recipe-stats-grid{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);padding:14px 4px}.recipe-stat{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:0 6px;text-align:center}.recipe-stat+.recipe-stat:before{content:"";position:absolute;top:50%;left:0;width:1px;height:30px;margin-top:-15px;background:var(--border)}.recipe-stat-label,.recipe-stat-value{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-stat-value{font-family:var(--font-display);font-size:var(--fs-title);font-weight:var(--fw-title);line-height:1.25;color:var(--ink)}.recipe-stat-unit{font-family:var(--font-text);font-weight:500}.recipe-stat-label,.recipe-stat-unit{font-size:var(--fs-label);color:var(--ink-2)}.recipe-stat-label{line-height:1.3}@container (width < 20rem){.recipe-stats-grid{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:25px}.recipe-stat:nth-child(odd):before{display:none}.recipe-stat:nth-child(n+3):after{content:"";position:absolute;top:-13px;left:12px;right:12px;height:1px;background:var(--border)}}.recipe-description{max-width:35em;margin-top:16px;font-size:var(--fs-body);line-height:1.65;color:var(--ink-2);text-wrap:pretty}.recipe-label{font-family:var(--font-text);font-size:var(--fs-label);font-weight:600;line-height:1.4;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}:lang(ja) .recipe-label,:lang(ko) .recipe-label,:lang(zh) .recipe-label{text-transform:none;letter-spacing:.06em;font-size:var(--fs-caption)}.recipe-section-title{font-size:var(--fs-h3);margin:28px 0 12px}.recipe-allergens{margin-top:16px}.recipe-allergen-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;list-style:none}.recipe-badge--allergen{padding:4px 12px;background:var(--surface-tint);color:var(--ink-2)}.recipe-badge--allergen:has(img){padding-left:8px}.recipe-badge--allergen-primary{background:var(--diaper-wash);color:var(--diaper-ink);box-shadow:inset 0 0 0 1px rgba(245,158,11,.35)}.recipe-badge-icon{flex:none;width:18px;height:18px;opacity:var(--clay-dim)}.recipe-safety{container-type:inline-size;display:flex;flex-direction:column;gap:10px;margin-top:12px}.recipe-safety-note{display:flex;align-items:flex-start;gap:10px;padding:12px;border-radius:var(--radius-callout);background:var(--note-fill);--note-fill:var(--diaper-wash);--note-ink:var(--diaper-ink)}.recipe-safety-note--critical{--note-fill:rgba(239,68,68,0.09);--note-ink:var(--danger-ink)}.recipe-safety-note--info{--note-fill:rgba(74,186,235,0.09);--note-ink:var(--primary-ink)}.recipe-safety-icon{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:var(--note-ink);background:var(--note-fill);background:color-mix(in srgb,currentColor 14%,transparent)}.recipe-safety-copy{flex:1 1;min-width:0;padding-top:3px}.recipe-safety-note-title{display:block;font-family:var(--font-display);font-size:var(--fs-small);font-weight:var(--fw-headline);line-height:1.35;color:var(--note-ink)}.recipe-safety-note-body{margin-top:4px;font-size:var(--fs-small);line-height:1.55;color:var(--ink-2)}.recipe-safety-note-source{margin-top:4px;font-size:var(--fs-caption);line-height:1.4;color:var(--ink-2)}@container (width < 16rem){.recipe-safety-note{flex-direction:column;gap:6px}.recipe-safety-copy{padding-top:0}}.recipe-ingredients{list-style:none;padding:4px 0;border-radius:var(--r-card);background:var(--card);box-shadow:var(--shadow-card),0 0 0 1px var(--card-edge)}.recipe-ingredient{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:10px 14px}.recipe-ingredient+.recipe-ingredient:before{content:"";position:absolute;top:0;left:70px;right:0;height:1px;background:var(--border)}.recipe-ingredient-tile{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--surface-tint)}.recipe-ingredient-icon{width:34px;height:34px;object-fit:contain}.recipe-ingredient-name{flex:1 1 4.5rem;min-width:0;font-size:var(--fs-body);line-height:1.35;color:var(--ink);overflow-wrap:break-word}.recipe-ingredient-optional{margin-left:6px;font-size:var(--fs-caption);color:var(--ink-3)}.recipe-ingredient-amount{flex:none;max-width:100%;margin-left:auto;padding:3px 10px;border-radius:var(--r-pill);background:var(--surface-tint);font-size:var(--fs-caption);font-weight:500;line-height:1.4;color:var(--ink-2);text-align:right}.recipe-instructions{container-type:inline-size;display:flex;flex-direction:column;gap:10px;list-style:none;padding:0}.recipe-step{display:flex;align-items:flex-start;gap:12px;padding:14px;border-radius:var(--r-sm);background:var(--card);box-shadow:var(--shadow-card),0 0 0 1px var(--card-edge);--step-wash:var(--feeding-wash);--step-ink:var(--feeding-ink)}.recipe-step:nth-child(5n+2){--step-wash:var(--food-wash);--step-ink:var(--food-ink)}.recipe-step:nth-child(5n+3){--step-wash:var(--diaper-wash);--step-ink:var(--diaper-ink)}.recipe-step:nth-child(5n+4){--step-wash:var(--note-wash);--step-ink:var(--note-ink)}.recipe-step:nth-child(5n+5){--step-wash:var(--sleep-wash);--step-ink:var(--sleep-ink)}.recipe-step-number{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:11px;background:var(--step-wash);color:var(--step-ink);font-family:var(--font-display);font-size:1rem;font-weight:var(--fw-title);line-height:1}.recipe-step-text{flex:1 1;min-width:0;padding-top:2px;font-size:var(--fs-body);line-height:1.65;color:var(--ink);text-wrap:pretty}.recipe-steps{margin-bottom:40px}@container (width < 16rem){.recipe-step{flex-direction:column;gap:8px}.recipe-step-text{padding-top:0}}.app-banner{display:flex;align-items:center;gap:16px;padding:16px 20px;margin-bottom:24px;background:var(--color-surface);border-radius:var(--r-card);box-shadow:var(--shadow-card),0 0 0 1px var(--card-edge);--bar-shadow:0 -2px 16px rgba(74,186,235,0.10)}.app-banner .brand-tile{width:44px;height:44px}.app-banner-text{flex:1 1;min-width:0;container-type:inline-size}.app-banner-name{font-family:var(--font-display);font-size:1rem;font-weight:700;line-height:1.25;color:var(--color-text)}.app-banner-name:lang(zh){font-weight:600;letter-spacing:.045em}.app-banner-tagline{font-size:var(--fs-caption);line-height:1.35;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@container (width < 7.625rem){.app-banner-tagline:lang(zh){display:none}}@container (width < 10.125rem){.app-banner-tagline:lang(ko){display:none}}@container (width < 11rem){.app-banner-tagline:lang(en){display:none}}@container (width < 12.375rem){.app-banner-tagline:lang(es),.app-banner-tagline:lang(fr){display:none}}@container (width < 13.25rem){.app-banner-tagline:lang(ja){display:none}}@container (width < 2.625rem){.app-banner-name{display:none}}.app-banner-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:var(--r-pill);font-family:var(--font-display);font-size:var(--fs-small);font-weight:600;line-height:1.2;text-decoration:none;white-space:nowrap}.app-banner-btn,.app-banner-btn:hover{background:var(--btn-fill);color:var(--btn-label)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .app-banner{--bar-shadow:0 -1px 0 var(--border),0 -2px 16px rgba(0,0,0,0.3)}}:root[data-theme=dark] .app-banner{--bar-shadow:0 -1px 0 var(--border),0 -2px 16px rgba(0,0,0,0.3)}@media (max-width:359px) and (max-height:500px){.app-banner{flex-wrap:wrap;gap:12px;padding:16px}.app-banner-btn{flex:1 0 100%}}@media (max-width:768px) and (min-height:501px){body:has(.app-banner){--app-bar-h:calc(max(44px, 2.35rem) + 20px + env(safe-area-inset-bottom))}.app-banner{position:fixed;inset:auto 0 0;z-index:50;gap:10px;min-height:var(--app-bar-h);margin:0;padding:10px var(--gutter) calc(10px + env(safe-area-inset-bottom));padding-inline:max(var(--gutter),calc((100% - 680px) / 2 + var(--gutter)));border-radius:0;background:linear-gradient(var(--color-surface),var(--color-surface)),var(--page);box-shadow:var(--bar-shadow);transform:translateY(calc(100% + 24px));visibility:hidden;transition:transform var(--dur-slow) var(--ease-out),visibility 0s linear var(--dur-slow)}.app-banner--visible{transform:none;visibility:visible;transition:transform var(--dur-slow) var(--ease-out),visibility 0s}.app-banner .brand-tile{width:40px;height:40px}.app-banner-btn{padding:0 16px}body:has(.app-banner) .footer{padding-bottom:calc(44px + var(--app-bar-h))}body:has(.app-banner) .navbar-cta{transition-property:transform,opacity,visibility}body:has(.app-banner--visible) .navbar-cta{opacity:0;visibility:hidden}}@media (max-width:768px){.recipe-page{padding:13px var(--gutter) 24px}}.recipe-topbar{min-height:44px}@media (min-width:720px){.recipe-cover,.recipe-hero{border-radius:var(--r-card-lg)}.recipe-head{margin-inline:20px;padding:20px 24px}.recipe-badges{margin-top:12px}}@media (max-width:359px){.recipe-head{margin-inline:8px;padding:14px}.recipe-step{padding:12px}}@media (max-width:259px){.recipe-head{margin-inline:0;padding:12px}}@media (max-height:500px){.recipe-cover,.recipe-hero{max-height:45vh;max-height:45svh}}@media (min-width:1024px){.recipe-page{max-width:calc(var(--max-width) + 2 * var(--gutter))}.recipe-body{display:grid;grid-template-columns:minmax(0,660px) 400px;justify-content:space-between;grid-column-gap:40px;column-gap:40px;align-items:start}.recipe-body>*{grid-column:1}.recipe-aside{grid-column:2;grid-row:1/span 12;position:-webkit-sticky;position:sticky;top:calc(var(--header-h) + 24px)}.recipe-aside .recipe-section-title{margin-top:0}}.recipe-error{text-align:center;padding:64px 0}.recipe-error .recipe-description{margin-inline:auto}.recipe-error-retry{min-height:44px;margin-top:20px;padding:0 28px;border:none;border-radius:var(--r-pill);background:var(--btn-fill);color:var(--btn-label);font-family:var(--font-display);font-size:1rem;font-weight:var(--fw-headline);cursor:pointer}@media (prefers-reduced-motion:reduce){.app-banner,body:has(.app-banner) .navbar-cta{transition:none}}