:root{--color-base: #faf7f2;--color-surface: #fffdf9;--color-surface-warm: #f3eadf;--color-line: #e8dccf;--color-ink: #3d2c24;--color-ink-soft: #6b564a;--color-ink-faint: #8a7263;--color-terracotta: #c05b3c;--color-terracotta-deep: #a34a30;--color-terracotta-soft: #f0d9d0;--color-rose: #b0526b;--color-rose-soft: #f0dee0;--color-amber: #e09f3e;--color-amber-soft: #f6e7c9;--color-green: #4a6b4f;--color-green-soft: #e4e9e1;--color-blue: #3e6c8d;--color-blue-soft: #dfe8ee;--color-accent: var(--color-terracotta);--color-accent-deep: var(--color-terracotta-deep);--color-accent-soft: var(--color-terracotta-soft);--color-success: var(--color-green);--color-danger: #a33b2e;--color-danger-soft: #f2ded9;--color-inferred: #b9987f;--color-discount: #3f7a4c;--color-discount-soft: #e0efe3;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--font-size-multiplier: 1;--text-xs: calc(.75rem * var(--font-size-multiplier));--text-sm: calc(.875rem * var(--font-size-multiplier));--text-md: calc(1rem * var(--font-size-multiplier));--text-lg: calc(1.2rem * var(--font-size-multiplier));--text-xl: calc(1.5rem * var(--font-size-multiplier));--text-2xl: calc(1.9rem * var(--font-size-multiplier));--text-3xl: calc(2.5rem * var(--font-size-multiplier));--text-hero: calc(3.2rem * var(--font-size-multiplier));--radius-sm: 12px;--radius-md: 20px;--radius-lg: 28px;--radius-xl: 36px;--radius-pill: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--shadow-sm: 0 2px 8px rgba(61, 44, 36, .08);--shadow-md: 0 6px 20px rgba(61, 44, 36, .1);--shadow-lg: 0 14px 40px rgba(61, 44, 36, .14);--nav-height: 72px;--sidebar-width: 240px;--content-max: 1080px;--tap-target: 44px;--ease-warm: cubic-bezier(.33, 1, .68, 1);--duration-fast: .16s;--duration-med: .32s;--duration-slow: .64s}[data-theme=dark]{--color-base: #241b16;--color-surface: #2e241e;--color-surface-warm: #3a2d25;--color-line: #4a3a30;--color-ink: #f3eadf;--color-ink-soft: #cbb6a6;--color-ink-faint: #a1897a;--color-terracotta: #d97a5b;--color-terracotta-deep: #e08a6d;--color-terracotta-soft: #4a2f26;--color-rose: #cf7d92;--color-rose-soft: #422b31;--color-amber: #e7b366;--color-amber-soft: #453623;--color-green: #8fb394;--color-green-soft: #2c362e;--color-blue: #7ba3c2;--color-blue-soft: #26333d;--color-danger: #d97a68;--color-danger-soft: #45291f;--color-inferred: #9a7f6c;--color-discount: #7fb98d;--color-discount-soft: #29392d;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 6px 20px rgba(0, 0, 0, .35);--shadow-lg: 0 14px 40px rgba(0, 0, 0, .45)}[data-font-size=small]{--font-size-multiplier: .9}[data-font-size=medium]{--font-size-multiplier: 1}[data-font-size=large]{--font-size-multiplier: 1.15}[data-font-size=extra_large]{--font-size-multiplier: 1.35}[data-high-contrast=true]{--color-ink: #1d120c;--color-ink-soft: #33231a;--color-ink-faint: #4a362a;--color-line: #a1897a}[data-theme=dark][data-high-contrast=true]{--color-ink: #fffdf9;--color-ink-soft: #f3eadf;--color-ink-faint: #dcc9b8}[data-dyslexia-font=true]{--font-body: "OpenDyslexic", "Comic Sans MS", "Trebuchet MS", sans-serif;--font-display: "OpenDyslexic", "Comic Sans MS", "Trebuchet MS", sans-serif}[data-bold-text=true] body{font-weight:700}[data-bold-text=true] .paper-sheet .ingredient-qty,[data-bold-text=true] .google-signin-btn{font-weight:600}[data-large-tap-targets=true]{--tap-target: 56px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes logo-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.85}}@keyframes warm-shimmer{0%{background-position:-280px 0}to{background-position:280px 0}}@keyframes spinner-turn{to{transform:rotate(360deg)}}@keyframes toast-in{0%{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-bounce-in{0%{opacity:0;transform:translateY(32px) scale(.9)}60%{opacity:1;transform:translateY(-6px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes celebration-pop{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes confetti-fall{0%{transform:translateY(-10vh) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:.4}}@keyframes confetti-sway{0%,to{margin-left:0}50%{margin-left:28px}}@keyframes stand-wobble{0%,to{transform:rotate(0)}30%{transform:rotate(-1.2deg)}70%{transform:rotate(1.2deg)}}@keyframes step-slide-in{0%{opacity:0;transform:translate(32px)}to{opacity:1;transform:translate(0)}}@keyframes timer-tick{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes badge-pop{0%{transform:scale(0)}80%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes chef-sway{0%,to{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}@keyframes landing-hero-float{0%{opacity:0;transform:translate(var(--float-from-x, -60px),var(--float-from-y, -80px)) rotate(var(--float-rot, -30deg)) scale(.7)}70%{opacity:1}to{opacity:1;transform:translate(0) rotate(0) scale(1)}}@keyframes landing-parallax{0%{transform:translateY(0)}to{transform:translateY(var(--parallax-y, -24px))}}@keyframes landing-dish-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.025)}}@keyframes landing-spark{0%{box-shadow:0 0 #e09f3e8c}to{box-shadow:0 0 0 18px #e09f3e00}}@keyframes landing-shimmer{0%{background-position:-320px 0}to{background-position:320px 0}}@keyframes landing-type-in{0%{opacity:0;transform:translateY(8px);clip-path:inset(0 100% 0 0)}to{opacity:1;transform:translateY(0);clip-path:inset(0 0 0 0)}}@keyframes landing-card-rise{0%{opacity:0;transform:translateY(36px)}to{opacity:1;transform:translateY(0)}}@keyframes landing-icon-bounce{0%{transform:translateY(0)}35%{transform:translateY(-12px)}60%{transform:translateY(0)}80%{transform:translateY(-5px)}to{transform:translateY(0)}}@keyframes landing-table-fill{0%{opacity:0;transform:scale(.85);background-color:var(--color-amber-soft)}to{opacity:1;transform:scale(1);background-color:transparent}}@keyframes landing-stand-sway{0%,to{transform:rotate(-.8deg)}50%{transform:rotate(.8deg)}}@keyframes landing-book-tilt{0%{transform:perspective(600px) rotateX(0)}to{transform:perspective(600px) rotateX(-8deg) translateY(-6px)}}@keyframes landing-bg-drift{0%{transform:translate(0) rotate(0)}33%{transform:translate(18px,-26px) rotate(6deg)}66%{transform:translate(-14px,-10px) rotate(-5deg)}to{transform:translate(0) rotate(0)}}@keyframes landing-cta-glow{0%,to{box-shadow:0 6px 20px #c05b3c59}50%{box-shadow:0 6px 32px #c05b3c99}}@keyframes cycle-msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes cycle-msg-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}@keyframes blink-cursor{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes paper-drop-in{0%{transform:translateY(-8px) rotate(var(--paper-rotate));opacity:0}to{transform:translateY(0) rotate(var(--paper-rotate));opacity:1}}@keyframes fade-in-quick{0%{opacity:0}to{opacity:1}}@keyframes cta-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes page-sheet-enter{0%{transform:translateY(40px);opacity:0}to{transform:var(--sheet-transform, none);opacity:var(--sheet-opacity, 1)}}@keyframes page-sheet-exit{to{transform:translateY(40px);opacity:0}}@keyframes placeholder-cycle{0%{opacity:0;transform:translateY(12px)}15.4%{opacity:1;transform:translateY(0)}84.6%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}@keyframes search-collapse{0%{transform:scaleX(1);opacity:1}to{transform:scaleX(0);opacity:0}}@keyframes search-expand{0%{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}@keyframes fade-out-quick{0%{opacity:1}to{opacity:0}}@keyframes wine-clink-left{0%{transform:rotate(-16deg)}35%{transform:rotate(4deg)}45%{transform:rotate(-2deg)}60%,to{transform:rotate(-16deg)}}@keyframes wine-clink-right{0%{transform:rotate(16deg)}35%{transform:rotate(-4deg)}45%{transform:rotate(2deg)}60%,to{transform:rotate(16deg)}}@keyframes wine-clink-spark{0%,38%{opacity:0;transform:scale(.3)}45%{opacity:1;transform:scale(1.1)}55%,to{opacity:0;transform:scale(.3)}}.wine-clink-left{animation:wine-clink-left 1.8s ease-in-out infinite}.wine-clink-right{animation:wine-clink-right 1.8s ease-in-out infinite}.wine-clink-spark{animation:wine-clink-spark 1.8s ease-in-out infinite}@keyframes dish-wipe-move{0%{transform:translate(-38px,6px) rotate(-8deg)}25%{transform:translateY(-4px) rotate(4deg)}50%{transform:translate(38px,6px) rotate(-6deg)}75%{transform:translateY(-4px) rotate(4deg)}to{transform:translate(-38px,6px) rotate(-8deg)}}@keyframes dish-wipe-sparkle{0%,to{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1)}}.dish-wipe-cloth{animation:dish-wipe-move 1.6s ease-in-out infinite;transform-origin:center}.dish-wipe-sparkle-1{animation:dish-wipe-sparkle 1.6s ease-in-out infinite;transform-origin:65px 84px}.dish-wipe-sparkle-2{animation:dish-wipe-sparkle 1.6s ease-in-out infinite .8s;transform-origin:139px 140px}@keyframes pot-steam-rise{0%{transform:translateY(14px) scale(.7);opacity:0}30%{opacity:.9}to{transform:translateY(-20px) scale(1.05);opacity:0}}.pot-steam-wisp{animation:pot-steam-rise 1.8s ease-out infinite;transform-origin:center}.pot-steam-wisp-1{animation-delay:0s}.pot-steam-wisp-2{animation-delay:.35s}.pot-steam-wisp-3{animation-delay:.7s}@keyframes shopping-tick-draw{0%,65%{opacity:0;stroke-dashoffset:24}75%{opacity:1}90%,to{opacity:1;stroke-dashoffset:0}}.shopping-tick{animation:shopping-tick-draw 2.4s ease-out infinite}.shopping-tick-0{animation-delay:0s}.shopping-tick-1{animation-delay:.3s}.shopping-tick-2{animation-delay:.6s}.shopping-tick-3{animation-delay:.9s}.anim-fade-in{animation:fade-in var(--duration-med) var(--ease-warm) both}.anim-rise-in{animation:rise-in var(--duration-med) var(--ease-warm) both}.anim-scale-in{animation:scale-in var(--duration-med) var(--ease-warm) both}.anim-fade-quick{animation:fade-in-quick .25s var(--ease-warm) both}.anim-cta-fade-up{animation:cta-fade-up .3s var(--ease-warm) both}.anim-fade-out-quick{animation:fade-out-quick .3s var(--ease-warm) both}[data-reduce-motion=true] *,[data-reduce-motion=true] *:before,[data-reduce-motion=true] *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}@media (prefers-reduced-motion: reduce){[data-reduce-motion=system] *,[data-reduce-motion=system] *:before,[data-reduce-motion=system] *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.page-transition-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;display:flex;align-items:center;justify-content:center;background:var(--color-base);opacity:1;transition:opacity .32s ease}.page-transition-overlay.is-fading{opacity:0}.page-transition-anim{width:180px;height:180px}.page-transition-anim svg{display:block;width:100%;height:100%}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--color-base);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);font-weight:900;line-height:1.15;margin:0 0 var(--space-3);color:var(--color-ink)}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}button{font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%238A7263' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}::selection{background:var(--color-amber-soft)}*{scrollbar-width:thin;scrollbar-color:var(--color-accent) var(--color-surface-warm)}*::-webkit-scrollbar{width:12px;height:12px}*::-webkit-scrollbar-track{background:var(--color-surface-warm);border-radius:var(--radius-pill)}*::-webkit-scrollbar-thumb{background:var(--color-accent);border-radius:var(--radius-pill);border:3px solid var(--color-surface-warm)}*::-webkit-scrollbar-thumb:hover{background:var(--color-accent-deep)}*::-webkit-scrollbar-corner{background:var(--color-surface-warm)}.app-shell{display:flex;min-height:100vh}.app-main{flex:1;min-width:0;padding:var(--space-5) var(--space-4) calc(var(--nav-height) + var(--space-6));max-width:var(--content-max);margin:0 auto;width:100%}@media (min-width: 900px){.app-main{padding:var(--space-6) var(--space-6) var(--space-7);margin-left:var(--sidebar-width)}}.screen-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-5)}.screen-header h1{margin:0;flex:1}.screen-header .back-button{background:var(--color-surface-warm);border:none;border-radius:var(--radius-pill);width:var(--tap-target);height:var(--tap-target);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:var(--text-lg);line-height:1;color:var(--color-ink);cursor:pointer}.header-search{width:340px;max-width:100%;flex-shrink:0}.header-search-icon-btn{flex-shrink:0;width:var(--tap-target);height:var(--tap-target);border:none;border-radius:var(--radius-pill);background:var(--color-surface-warm);color:var(--color-ink-soft);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.header-search-icon-btn:hover{background:var(--color-accent-soft);color:var(--color-accent-deep)}@media (min-width: 900px){.header-search-icon-btn{display:none}}.mobile-search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b1e188c;z-index:100;padding:var(--space-4);animation:fade-in var(--duration-fast) both}.mobile-search-overlay-bar{display:flex;align-items:center;gap:var(--space-3);background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-lg);animation:scale-in var(--duration-med) var(--ease-warm) both}.mobile-search-overlay-bar .search-input-wrap{flex:1}.mobile-search-overlay-close{flex-shrink:0;width:var(--tap-target);height:var(--tap-target);border:none;border-radius:50%;background:var(--color-surface-warm);color:var(--color-ink);font-size:var(--text-md);cursor:pointer}.mobile-search-overlay-close:hover{background:var(--color-line)}@media (min-width: 900px){.mobile-search-overlay{display:none}}.search-input-wrap{position:relative}.search-input-wrap .input{padding-right:42px}.search-input-wrap .input-field{margin:0}.search-input-icon{position:absolute;top:50%;right:14px;transform:translateY(-50%);color:var(--color-ink-faint);pointer-events:none}.sidebar{display:none;position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:var(--color-surface);border-right:2px solid var(--color-line);padding:var(--space-5);flex-direction:column;gap:var(--space-2);z-index:40}@media (min-width: 900px){.sidebar{display:flex}}.sidebar-logo{font-family:var(--font-display);font-size:var(--text-xl);font-weight:900;color:var(--color-accent);margin-bottom:var(--space-5)}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--color-ink-soft);font-weight:900;min-height:var(--tap-target)}.sidebar-link:hover{background:var(--color-surface-warm);text-decoration:none}.sidebar-link.active{background:var(--color-accent-soft);color:var(--color-accent-deep)}.sidebar-link .nav-badge{margin-left:auto}.sidebar-footer{margin-top:auto;font-size:var(--text-xs);color:var(--color-ink-faint)}.floating-pill{position:fixed;bottom:max(var(--space-4),env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;gap:var(--space-1);background:var(--color-surface);border-radius:var(--radius-pill);box-shadow:var(--shadow-lg);padding:var(--space-2);z-index:50;border:2px solid var(--color-line)}@media (min-width: 900px){.floating-pill{display:none}}.pill-tab{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:72px;min-height:var(--tap-target);justify-content:center;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-pill);background:transparent;color:var(--color-ink-soft);font-family:inherit;font-size:var(--text-xs);font-weight:900;cursor:pointer;position:relative}.pill-tab:hover{text-decoration:none}.pill-tab.active{background:var(--color-accent);color:#fffdf9}.pill-tab .pill-icon{font-size:1.3em;line-height:1}.nav-badge{background:var(--color-rose);color:#fffdf9;border-radius:var(--radius-pill);font-size:10px;min-width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;font-weight:900}.pill-tab .nav-badge{position:absolute;top:2px;right:8px}.pill-more-list{display:flex;flex-direction:column;gap:var(--space-2)}.pill-more-list .sidebar-link{min-height:var(--tap-target)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:none;border-radius:var(--radius-pill);padding:0 var(--space-5);min-height:var(--tap-target);font-size:var(--text-md);font-weight:900;cursor:pointer;transition:transform var(--duration-fast) var(--ease-warm),box-shadow var(--duration-fast) var(--ease-warm),background var(--duration-fast);text-decoration:none}.btn:hover{text-decoration:none;transform:translateY(-1px)}.btn:active{transform:translateY(0) scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-accent);color:#fffdf9;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--color-accent-deep);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--color-surface-warm);border:1.5px solid var(--color-line);color:var(--color-ink)}.btn-secondary:hover{background:var(--color-line)}.btn-ghost{background:transparent;color:var(--color-accent)}.btn-ghost:hover{background:var(--color-accent-soft)}.btn-danger{background:var(--color-danger);color:#fffdf9}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 var(--space-4);font-size:var(--text-sm)}.btn-loader{width:20px;height:20px;display:inline-block;animation:spinner-turn .9s linear infinite}.input-field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-4)}.input-label{font-weight:900;font-size:var(--text-sm);color:var(--color-ink-soft)}.input,textarea.input{background:var(--color-surface);border:2px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);min-height:var(--tap-target);color:var(--color-ink);width:100%;outline:none;transition:border-color var(--duration-fast)}.input:focus{border-color:var(--color-accent)}textarea.input{resize:vertical;min-height:96px}select.input{background-color:var(--color-surface);padding-right:36px}.input-error{color:var(--color-danger);font-size:var(--text-sm)}.input-wrapper{position:relative;display:flex;align-items:center}.input-wrapper.has-clear-btn .input{padding-right:40px}.input-clear-btn{position:absolute;right:12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-ink-soft);cursor:pointer;padding:0;font-size:16px;line-height:1}.input-clear-btn:hover{color:var(--color-ink)}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm);border:2px solid var(--color-line)}.family-member-card{position:relative;display:flex;align-items:center;gap:var(--space-4)}.family-member-card>.badge{margin-left:auto}.family-member-remove{position:absolute;top:var(--space-2);right:var(--space-2);width:24px;height:24px;border-radius:50%;border:none;background:var(--color-surface-warm);color:var(--color-ink-soft);font-size:16px;line-height:1;cursor:pointer}.family-member-remove:hover{background:var(--color-danger-soft, var(--color-surface-warm));color:var(--color-danger)}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:var(--radius-pill);padding:2px 12px;font-size:var(--text-xs);font-weight:900;background:var(--color-surface-warm);color:var(--color-ink-soft)}.badge-accent{background:var(--color-accent-soft);color:var(--color-accent-deep)}.discount-badge{background:var(--color-discount-soft);color:var(--color-discount);border-radius:var(--radius-pill);padding:3px 12px;font-size:var(--text-xs);font-weight:900;display:inline-flex;animation:badge-pop var(--duration-med) var(--ease-warm) both}.inferred-badge{background:transparent;border:1.5px dashed var(--color-inferred);color:var(--color-inferred);border-radius:var(--radius-pill);padding:1px 10px;font-size:var(--text-xs);font-weight:900;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.divider{border:none;border-top:2px solid var(--color-line);margin:var(--space-5) 0}.toast-stack{position:fixed;bottom:calc(var(--nav-height) + var(--space-5));left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:var(--space-2);z-index:90;width:min(92vw,420px)}@media (min-width: 900px){.toast-stack{bottom:var(--space-6)}}.toast{background:var(--color-ink);color:var(--color-base);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-lg);animation:toast-in var(--duration-med) var(--ease-warm) both;display:flex;align-items:center;gap:var(--space-3);font-weight:900}.toast-animated{animation:toast-bounce-in .52s var(--ease-warm) both;background:var(--color-green);color:#fffdf9}.toast .toast-action{margin-left:auto;background:none;border:none;color:var(--color-amber);font-weight:900;cursor:pointer;white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b1e188c;display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--space-4);animation:fade-in var(--duration-fast) both}.modal{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--space-6);max-width:440px;width:100%;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:scale-in var(--duration-med) var(--ease-warm) both}.cookbook-picker-row{display:flex;align-items:center;width:100%;min-height:var(--tap-target);padding:var(--space-3) var(--space-4);border:2px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);font-weight:900;font-size:var(--text-base);color:var(--color-ink);text-align:left;cursor:pointer}.cookbook-picker-row:hover{border-color:var(--color-accent);background:var(--color-surface-warm)}.cookbook-picker-new{color:var(--color-accent-deep);border-style:dashed}.cookbook-create-form{display:flex;gap:var(--space-2);align-items:center;cursor:default}.cookbook-create-form:hover{border-color:var(--color-line);background:var(--color-surface)}.cookbook-create-form .input{margin-bottom:0;flex:1}.celebration-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b1e18b3;z-index:110;display:flex;align-items:center;justify-content:center;padding:var(--space-4);overflow:hidden}.celebration-modal{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--space-7) var(--space-6);max-width:420px;width:100%;text-align:center;animation:celebration-pop .64s var(--ease-warm) both;position:relative;z-index:2}.celebration-emoji{font-size:64px;margin-bottom:var(--space-4);display:block}.confetti-piece{position:absolute;top:-24px;width:12px;height:18px;border-radius:4px;animation:confetti-fall var(--confetti-duration, 3s) linear infinite,confetti-sway 1.4s ease-in-out infinite;z-index:1}.app-loader{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-base);display:flex;flex-direction:column;gap:var(--space-4);align-items:center;justify-content:center;z-index:120}.app-loader-logo{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:900;color:var(--color-accent);animation:logo-pulse 1.6s var(--ease-warm) infinite}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,var(--color-surface-warm) 25%,var(--color-amber-soft) 50%,var(--color-surface-warm) 75%);background-size:560px 100%;animation:warm-shimmer 1.4s linear infinite;min-height:16px}.skeleton-card{height:180px;border-radius:var(--radius-lg)}.skeleton-cover{height:220px;width:160px;border-radius:var(--radius-md)}.skeleton-row{height:22px;margin-bottom:var(--space-3)}.empty-state{text-align:center;padding:var(--space-7) var(--space-4);color:var(--color-ink-soft)}.empty-state .empty-art{font-size:56px;margin-bottom:var(--space-3)}.error-message{background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-weight:900;margin-bottom:var(--space-4)}.avatar{border-radius:var(--radius-pill);background:var(--color-amber-soft);color:var(--color-ink);display:inline-flex;align-items:center;justify-content:center;font-weight:900;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-upload-button{position:relative;border-radius:var(--radius-pill);display:inline-flex}.avatar-upload-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-accent) 72%,transparent);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--duration-fast) var(--ease-warm);pointer-events:none}.avatar-upload-button:hover .avatar-upload-overlay,.avatar-upload-button:focus-visible .avatar-upload-overlay{opacity:1}.import-hero{text-align:center;padding-top:var(--space-6)}.processing-panel{text-align:center;padding:var(--space-7) var(--space-4)}.processing-message{font-family:var(--font-display);font-size:var(--text-xl);color:var(--color-ink-soft);animation:fade-in var(--duration-med) both}.processing-shimmer{height:14px;border-radius:var(--radius-pill);max-width:320px;margin:var(--space-4) auto 0;background:linear-gradient(90deg,var(--color-surface-warm) 25%,var(--color-amber-soft) 50%,var(--color-surface-warm) 75%);background-size:640px 100%;animation:landing-shimmer 1.3s linear infinite}.import-processing{text-align:center;padding:var(--space-8) var(--space-4)}.cycle-message{display:inline-block;font-family:var(--font-display);font-style:italic;font-size:18px;color:#c4622d;margin:0}.cycle-message.cycle-in{animation:cycle-msg-in .4s ease both}.cycle-message.cycle-out{animation:cycle-msg-out .4s ease both}.blinking-cursor{margin-left:2px;animation:blink-cursor 1s step-end infinite}.import-processing-label{margin:var(--space-2) 0 0;font-size:var(--text-sm)}.fallback-prompt{max-width:480px;margin:var(--space-5) auto 0;text-align:center}.fallback-options{display:flex;gap:var(--space-2);justify-content:center;flex-wrap:wrap;margin-top:var(--space-3)}.fallback-alternatives{display:flex;flex-direction:column;gap:var(--space-2);margin:var(--space-3) 0;text-align:left}.fallback-alternative{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3);border:2px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;text-align:left;font:inherit}.fallback-alternative:hover{border-color:var(--color-accent)}.fallback-alternative-title{font-weight:900}.fallback-alternative-source{font-size:var(--text-sm)}.usage-counter{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-amber-soft);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-4);font-size:var(--text-sm);font-weight:900;color:var(--color-ink-soft)}.recipe-header{display:flex;gap:var(--space-4);align-items:flex-start;margin-bottom:var(--space-5)}.recipe-thumb{width:88px;height:88px;border-radius:var(--radius-md);overflow:hidden;flex-shrink:0;background:var(--color-surface-warm)}.recipe-title-row{display:flex;align-items:center;gap:var(--space-2)}.recipe-title-input{font-family:var(--font-display);font-style:italic;font-size:var(--text-2xl);font-weight:900;border:2px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-ink);flex:1;min-width:0;padding:2px 8px;margin-left:-8px}.recipe-title-input:hover{border-color:var(--color-line)}.recipe-title-input:focus{border-color:var(--color-accent);outline:none;background:var(--color-surface)}.heart-btn{flex-shrink:0;width:40px;height:40px;border-radius:var(--radius-pill);border:2px solid var(--color-line);background:var(--color-surface);font-size:var(--text-lg);line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--duration-fast) var(--ease-warm),border-color var(--duration-fast)}.heart-btn:hover{border-color:var(--color-accent)}.heart-btn.is-favourited{border-color:var(--color-danger);transform:scale(1.05)}.download-btn{flex-shrink:0;width:40px;height:40px;border-radius:var(--radius-pill);border:2px solid var(--color-line);background:var(--color-surface);font-size:var(--text-lg);line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--duration-fast) var(--ease-warm),border-color var(--duration-fast)}.download-btn:hover{border-color:var(--color-accent)}.download-btn:disabled{opacity:.5;cursor:default}.source-attribution{color:var(--color-ink-faint);font-size:var(--text-sm)}.recipe-meta-row{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2)}.view-mode-toggle{display:flex;gap:4px;background:var(--color-surface-warm);border-radius:var(--radius-pill);padding:4px;margin-bottom:var(--space-5)}.view-mode-toggle button{flex:1;border:none;background:transparent;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-5);font-weight:900;color:var(--color-ink-soft);cursor:pointer;min-height:38px}.view-mode-toggle button.active{background:var(--color-surface);color:var(--color-accent-deep);box-shadow:var(--shadow-sm)}.demo-result .view-mode-toggle{display:flex;width:fit-content;margin-left:auto;margin-right:auto}.ingredient-group{margin-bottom:var(--space-5)}.group-label{font-family:var(--font-display);font-size:var(--text-lg);font-weight:900;color:var(--color-accent-deep);margin-bottom:var(--space-2)}.ingredient-row{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1.5px dashed var(--color-line)}.ingredient-name{flex:1}.ingredient-qty{font-weight:900;white-space:nowrap}.ingredient-secondary{color:var(--color-ink-faint);font-size:var(--text-sm)}.steps-list{counter-reset:step;list-style:none;padding:0;margin:0}.step-row{display:flex;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1.5px solid var(--color-line)}.step-number{width:36px;height:36px;flex-shrink:0;border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-accent-deep);display:flex;align-items:center;justify-content:center;font-weight:900;font-family:var(--font-display)}.recipe-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x;border-radius:var(--radius-lg);border:2px solid var(--color-line)}.recipe-table{border-collapse:collapse;width:100%;min-width:640px;background:var(--color-surface)}.recipe-table th,.recipe-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1.5px solid var(--color-line);border-right:1.5px solid var(--color-line);font-size:var(--text-sm);vertical-align:top}.recipe-table th{background:var(--color-surface-warm);font-family:var(--font-display);position:sticky;top:0}.recipe-table th:first-child,.recipe-table td:first-child{position:sticky;left:0;background:var(--color-surface-warm);font-weight:900;min-width:160px;z-index:1}.recipe-table td.table-cell-fill{animation:landing-table-fill .48s var(--ease-warm) both}.recipe-table .inferred-mark{color:var(--color-inferred)}.unclear-alert{background:var(--color-amber-soft);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);color:var(--color-ink-soft)}.recipe-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin:var(--space-5) 0}.recipe-card{background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;border:2px solid var(--color-line);transition:transform var(--duration-fast) var(--ease-warm),box-shadow var(--duration-fast);display:block;color:inherit}.recipe-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);text-decoration:none}.recipe-card img{width:100%;aspect-ratio:1.4;object-fit:cover;background:var(--color-surface-warm)}.recipe-card-body{padding:var(--space-3) var(--space-4)}.recipe-card-title{font-family:var(--font-display);font-style:italic;font-weight:900;font-size:var(--text-md)}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-4)}.rating-prompt{text-align:center}.star-rating{display:inline-flex;gap:var(--space-1);font-size:34px}.star-rating button{background:none;border:none;cursor:pointer;color:var(--color-line);font-size:inherit;padding:2px;transition:transform var(--duration-fast)}.star-rating button.filled{color:var(--color-amber)}.star-rating button:hover{transform:scale(1.15)}.cooking-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-base);z-index:80;display:flex;flex-direction:column;padding:var(--space-5)}.cooking-header{display:flex;align-items:center;gap:var(--space-3)}.cooking-header .step-counter{margin-left:auto;font-weight:900;font-family:var(--font-display);color:var(--color-accent-deep)}.step-card{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--space-5);max-width:680px;margin:0 auto;width:100%;animation:step-slide-in var(--duration-med) var(--ease-warm) both;text-align:center}.step-card .step-text{font-size:var(--text-xl);font-family:var(--font-display);line-height:1.4}.step-timer{background:var(--color-surface);border-radius:var(--radius-xl);border:2px solid var(--color-line);padding:var(--space-4);display:inline-flex;flex-direction:column;gap:var(--space-3);align-items:center;align-self:center}.timer-display{font-size:var(--text-3xl);font-weight:900;font-family:var(--font-display);font-variant-numeric:tabular-nums}.timer-display.running{animation:timer-tick 1s var(--ease-warm) infinite;color:var(--color-accent-deep)}.step-navigation{display:flex;gap:var(--space-3);justify-content:space-between;max-width:680px;margin:0 auto;width:100%}.hands-free-bar{display:flex;gap:var(--space-4);justify-content:center;color:var(--color-ink-faint);font-size:var(--text-xs);margin-top:var(--space-3)}.spinner-stand{position:relative;display:flex;flex-direction:column;align-items:center;padding-top:var(--space-5)}.spinner-pole{position:absolute;top:4px;bottom:40px;width:12px;background:linear-gradient(90deg,#6b6157,#cfc6b8 35%,#f2ede2,#cfc6b8 65%,#6b6157);border-radius:var(--radius-pill);box-shadow:var(--shadow-sm);z-index:0}.spinner-rack{position:relative;perspective:1200px;cursor:grab;z-index:1}.spinner-rack:active{cursor:grabbing}.spinner-rack-frame{position:relative;padding:var(--space-4);border-radius:var(--radius-lg);background:linear-gradient(160deg,#cfc6b859,#6b615738);border:3px solid #8a7d6c;border-image:linear-gradient(160deg,#ece4d6,#8a7d6c 55%,#ece4d6) 1;box-shadow:var(--shadow-md),inset 0 0 0 1px #fffdf94d;background-image:radial-gradient(circle 5px at 12px 12px,#ece4d6,#8a7d6c),radial-gradient(circle 5px at calc(100% - 12px) 12px,#ece4d6,#8a7d6c),radial-gradient(circle 5px at 12px calc(100% - 12px),#ece4d6,#8a7d6c),radial-gradient(circle 5px at calc(100% - 12px) calc(100% - 12px),#ece4d6,#8a7d6c);background-repeat:no-repeat}.spinner-face{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);transition:transform .15s var(--ease-warm),opacity .15s var(--ease-warm)}.spinner-face.spin-out-left{transform:rotateY(-35deg);opacity:.35}.spinner-face.spin-out-right{transform:rotateY(35deg);opacity:.35}.spinner-face.spin-in-left{transform:rotateY(35deg);opacity:.35;transition:none}.spinner-face.spin-in-right{transform:rotateY(-35deg);opacity:.35;transition:none}.spinner-face .cookbook-cover{width:124px;height:168px;padding:var(--space-2)}.spinner-face .cover-illustration{font-size:32px}.spinner-face .cover-title{font-size:var(--text-sm)}.cookbook-cover{flex-shrink:0;width:150px;height:210px;border-radius:var(--radius-md) var(--radius-md) var(--radius-sm) var(--radius-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);color:#fffdf9;box-shadow:var(--shadow-md);border:none;cursor:pointer;position:relative;transition:transform var(--duration-fast) var(--ease-warm),opacity var(--duration-fast) var(--ease-warm),box-shadow var(--duration-fast) var(--ease-warm);padding:var(--space-3)}.cookbook-cover:hover{transform:translateY(-6px) rotate(-1deg)}.cover-illustration{font-size:44px}.cover-title{font-family:var(--font-display);font-weight:900;font-size:var(--text-md);line-height:1.2}.cover-count{font-size:var(--text-xs);opacity:.85}.cover-accent{position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:2px dashed rgba(250,247,242,.45);border-radius:var(--radius-sm);pointer-events:none}.spinner-base{width:220px;height:34px;border-radius:50%;background:radial-gradient(ellipse at 35% 30%,#f2ede2,#b7ab9b 55%,#6b6157);box-shadow:var(--shadow-lg);margin-top:-14px;z-index:1;animation:landing-stand-sway 6s ease-in-out infinite;transform-origin:center top}.spinner-dots{display:flex;gap:6px;margin-top:var(--space-4);justify-content:center}.spinner-dots span{width:6px;height:6px;border-radius:50%;background:var(--color-line)}.spinner-dots span.active{width:16px;border-radius:var(--radius-pill);background:var(--color-accent)}.stand-controls{display:flex;gap:var(--space-3);justify-content:center;margin-top:var(--space-3)}.kitchen-shelf{max-width:780px;margin:0 auto}.shelf-row{display:flex;align-items:flex-end;gap:var(--space-2);padding:0 var(--space-4);min-height:210px;flex-wrap:wrap}.cookbook-spine{width:54px;border-radius:10px 10px 6px 6px;border:none;cursor:pointer;color:#fffdf9;display:flex;flex-direction:column;align-items:center;padding:var(--space-3) 0;box-shadow:var(--shadow-sm);transition:transform var(--duration-fast) var(--ease-warm),opacity var(--duration-fast) var(--ease-warm),box-shadow var(--duration-fast) var(--ease-warm);position:relative}.cookbook-spine:hover{transform:translateY(-10px);box-shadow:var(--shadow-md)}.spine-title-wrap{flex:1;display:flex;align-items:center;justify-content:center;width:100%}.spine-title-split{display:flex;flex-direction:row;gap:4px;justify-content:center}.spine-title{writing-mode:vertical-rl;font-family:var(--font-body);font-weight:900;font-size:var(--text-sm);letter-spacing:.06em;max-height:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spine-accent{width:60%;height:4px;border-radius:var(--radius-pill);background:#faf7f280}.shelf-base{height:16px;background:var(--color-inferred);border-radius:var(--radius-pill);margin-top:-4px;box-shadow:var(--shadow-sm)}.shelf-search{max-width:380px;margin:0 auto var(--space-5)}.cookbook-spine.dimmed,.cookbook-cover.dimmed{opacity:.32}.cookbook-spine.highlighted,.cookbook-cover.highlighted{box-shadow:0 0 0 3px var(--color-amber),var(--shadow-md);transform:scale(1.05)}.cookbook-spine.highlighted:hover{transform:translateY(-10px) scale(1.05)}.filter-bar{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-5)}.filter-chip{border:2px solid var(--color-line);background:var(--color-surface);color:var(--color-ink-soft);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-4);font-weight:900;cursor:pointer;min-height:36px}.filter-chip.active{background:var(--color-blue-soft);border-color:var(--color-blue);color:var(--color-blue)}.community-card-meta{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-ink-faint);flex-wrap:wrap}.rating-strip{color:var(--color-amber);font-weight:900}.shopping-group{margin-bottom:var(--space-5)}.shopping-group .recipe-label{font-family:var(--font-display);font-weight:900;color:var(--color-accent-deep);margin-bottom:var(--space-2)}.shopping-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1.5px dashed var(--color-line);min-height:var(--tap-target)}.shopping-item.checked .shopping-name{text-decoration:line-through;color:var(--color-ink-faint)}.shopping-checkbox{width:26px;height:26px;border-radius:9px;border:2px solid var(--color-line);background:var(--color-surface);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#fffdf9;flex-shrink:0;font-size:15px}.shopping-checkbox.checked{background:var(--color-green);border-color:var(--color-green)}.shopping-name{flex:1}.shopping-qty{color:var(--color-ink-soft);font-weight:900;white-space:nowrap}.settings-section{margin-bottom:var(--space-6)}.settings-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1.5px solid var(--color-line);min-height:var(--tap-target)}.settings-row .settings-label{flex:1 1 auto;font-weight:900}.subscription-summary{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1.5px solid var(--color-line)}.subscription-plan-line{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.dropdown{position:relative;flex-shrink:0}.dropdown-trigger{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-surface-warm);border:none;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);min-height:40px;font-family:inherit;font-weight:900;font-size:var(--text-sm);color:var(--color-ink);white-space:nowrap;cursor:pointer}.dropdown-trigger:hover{background:var(--color-line)}.dropdown-trigger svg{flex-shrink:0;color:var(--color-ink-faint)}.dropdown-menu{position:absolute;top:100%;right:0;margin-top:var(--space-2);min-width:160px;list-style:none;padding:var(--space-2);margin-left:0;margin-right:0;margin-bottom:0;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);border:2px solid var(--color-line);overflow:hidden;z-index:20}.dropdown-option{display:block;width:100%;text-align:left;background:none;border:none;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-family:inherit;font-weight:900;font-size:var(--text-sm);color:var(--color-ink-soft);cursor:pointer}.dropdown-option:hover{background:var(--color-surface-warm)}.dropdown-option.active{background:var(--color-accent-soft);color:var(--color-accent-deep)}.settings-row select{background-color:var(--color-surface-warm);border:none;border-radius:var(--radius-pill);padding:var(--space-2) 36px var(--space-2) var(--space-4);font-weight:900;color:var(--color-ink)}.switch{width:52px;height:30px;border-radius:var(--radius-pill);background:var(--color-line);border:none;position:relative;cursor:pointer;transition:background var(--duration-fast);flex-shrink:0}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:var(--radius-pill);background:var(--color-surface);transition:transform var(--duration-fast) var(--ease-warm);box-shadow:var(--shadow-sm)}.switch.on{background:var(--color-green)}.switch.on:after{transform:translate(22px)}.profile-section{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.creator-header{display:flex;align-items:flex-start;gap:var(--space-5);padding:var(--space-6) 0 0}.creator-header-info{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.creator-header-name-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.creator-header-name-row h2{margin:0}.creator-bio{margin:0;max-width:480px}.creator-social-links{display:flex;flex-direction:column;gap:var(--space-1)}.creator-social-links a{display:inline-flex;align-items:baseline;gap:6px;align-self:flex-start}.creator-social-platform{font-weight:900;color:var(--color-ink)}.creator-cookbooks-section{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-5);min-height:240px;padding:var(--space-6) 0}.creator-cookbook-block{width:100%}.creator-cookbook-covers{display:flex;flex-wrap:wrap;gap:var(--space-5);justify-content:center}.creator-cookbook-detail{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-4);width:100%;text-align:left}.notification-row{display:flex;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface);border:2px solid var(--color-line);margin-bottom:var(--space-3);align-items:flex-start}.notification-row.unread{border-color:var(--color-amber);background:var(--color-amber-soft)}.notification-icon{font-size:24px}.notification-body{flex:1;min-width:0}.notification-body h4{margin-bottom:2px}.dismiss-button{background:none;border:none;color:var(--color-ink-faint);cursor:pointer;font-size:var(--text-lg);padding:var(--space-1)}.paywall-hero{text-align:center;margin-bottom:var(--space-6)}.plan-picker{display:grid;gap:var(--space-3);margin-bottom:var(--space-5)}.plan-option{border:2.5px solid var(--color-line);border-radius:var(--radius-lg);background:var(--color-surface);padding:var(--space-4) var(--space-5);display:flex;align-items:center;gap:var(--space-3);cursor:pointer;text-align:left;transition:border-color var(--duration-fast)}.plan-option.selected{border-color:var(--color-accent);background:var(--color-accent-soft)}.plan-option .plan-price{margin-left:auto;font-family:var(--font-display);font-weight:900;font-size:var(--text-lg);white-space:nowrap}.feature-list{list-style:none;padding:0;margin:0 0 var(--space-5)}.feature-list li{display:flex;gap:var(--space-2);padding:var(--space-2) 0;align-items:baseline}.feature-list li:before{content:"✦";color:var(--color-amber);font-weight:900}.gift-code-display{background:var(--color-amber-soft);border-radius:var(--radius-lg);padding:var(--space-5);text-align:center;margin-top:var(--space-5)}.gift-code-text{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:.12em;font-weight:900;color:var(--color-accent-deep)}.app-down{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-6);gap:var(--space-4)}.illustrated-chef{font-size:96px;animation:chef-sway 3.4s ease-in-out infinite;display:inline-block}.footer{text-align:center;padding:var(--space-6) var(--space-4);color:var(--color-ink-faint);font-size:var(--text-sm)}.footer a{color:var(--color-ink-soft);margin:0 var(--space-2)}.made-with-love{font-family:var(--font-display);font-style:italic;margin-top:var(--space-2)}.letmeeat-banner{background:linear-gradient(120deg,var(--color-green-soft),var(--color-amber-soft));border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);border:2px solid var(--color-line)}.letmeeat-banner .banner-text{flex:1;font-weight:900}.bookmark-toast{background:var(--color-green)}.landing{overflow-x:hidden}.landing-section{max-width:var(--content-max);margin:0 auto;padding:var(--space-8) var(--space-5);position:relative}.landing-hero{text-align:center;padding-top:var(--space-6);min-height:60vh}.landing-page{display:flex;flex-direction:column;min-height:100vh}.landing-navbar-row{max-width:var(--content-max);width:100%;margin:0 auto;padding:var(--space-6) var(--space-5) 0}.landing-hero-main{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-6) var(--space-5);text-align:center}.landing-hero-center{max-width:var(--content-max);width:100%}.landing-logo{font-family:var(--font-display);font-size:var(--text-xl);font-weight:900;color:var(--color-accent);text-decoration:none}.landing-nav-user{font-weight:900}.landing-nav-toggle{display:none;background:none;border:none;font-size:22px;line-height:1;cursor:pointer;color:var(--color-ink);padding:var(--space-2)}.landing-nav-overlay,.landing-nav-drawer{display:none}@media (max-width: 900px){.row.landing-nav-links{display:none}.landing-nav-toggle{display:inline-flex;align-items:center;justify-content:center;z-index:60}.landing-nav-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#2b1e1873;z-index:50;animation:fade-in var(--duration-fast) ease-out both}.landing-nav-drawer{display:flex;flex-direction:column;gap:var(--space-6);position:fixed;top:0;right:0;bottom:0;width:78%;max-width:320px;background:var(--color-surface);padding:88px var(--space-6) var(--space-6);box-shadow:var(--shadow-lg);z-index:55;transform:translate(100%);transition:transform var(--duration-med) var(--ease-warm);pointer-events:none}.landing-nav-drawer.open{transform:translate(0);pointer-events:auto}.landing-nav-drawer a{font-size:var(--text-lg);font-weight:900}}.landing-tagline{font-family:var(--font-display);font-size:var(--text-hero);font-weight:900;margin:var(--space-4) 0 var(--space-3);line-height:1.05}.landing-sub{color:var(--color-ink-soft);font-size:var(--text-lg);max-width:900px;margin:0 auto var(--space-6)}.pricing-heading{font-size:var(--text-3xl);margin-bottom:var(--space-3)}.pricing-gift-line{color:var(--color-ink-soft);margin-bottom:var(--space-6)}.landing-hero-copy.is-leaving{animation:fade-out-quick .5s var(--ease-warm) both}.landing-hero-copy.is-entering{animation:fade-in-quick .6s var(--ease-warm) both}.landing-bg-item{position:absolute;font-size:42px;opacity:.14;animation:landing-bg-drift var(--drift-duration, 18s) ease-in-out infinite;pointer-events:none;-webkit-user-select:none;user-select:none}.hero-dish{font-size:72px;display:inline-block;animation:landing-dish-breathe 4.5s ease-in-out infinite}.hero-float-item{display:inline-block;font-size:40px;animation:landing-hero-float 1.1s var(--ease-warm) both}.live-demo{max-width:620px;margin:0 auto;text-align:left}.demo-result{max-width:680px;margin:0 auto}.import-search{display:flex;align-items:center;gap:var(--space-2);width:100%;max-width:600px;margin:0 auto;height:60px;padding:6px 6px 6px var(--space-5);background:var(--color-surface);border:2px solid var(--color-line);border-radius:var(--radius-pill);transform-origin:center}.import-search-field{position:relative;flex:1;height:100%}.import-search-field input{width:100%;height:100%;border:none;outline:none;background:transparent;padding:0;font-family:var(--font-body);font-size:var(--text-md);color:var(--color-ink)}.import-search-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;color:var(--color-ink-faint);pointer-events:none;white-space:nowrap;overflow:hidden;animation:placeholder-cycle 2.6s linear both}.import-search-go{width:46px;height:46px;flex-shrink:0;border:none;border-radius:50%;background:#c4622d;display:flex;align-items:center;justify-content:center;cursor:pointer}.import-search-go:hover:not(:disabled){background:#a34a30}.import-search:not(.icon-fading) .import-search-go:disabled{opacity:.55;cursor:default}.import-search-go svg{transition:opacity .5s ease}.import-search.icon-fading .import-search-go svg{opacity:0}.import-search-image{width:46px;height:46px;flex-shrink:0;border:none;border-radius:50%;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer}.import-search-image:hover:not(:disabled){background:var(--color-terracotta-soft)}.import-search:not(.icon-fading) .import-search-image:disabled{opacity:.55;cursor:default}.import-search-image svg{transition:opacity .5s ease}.import-search.icon-fading .import-search-image svg{opacity:0}.import-search.text-expanded{height:auto;align-items:flex-end;border-radius:var(--radius-md);padding:var(--space-4) 6px var(--space-2) var(--space-5)}.import-search-field textarea{width:100%;min-height:120px;max-height:360px;resize:none;border:none;outline:none;background:transparent;padding:0;font-family:var(--font-body);font-size:var(--text-md);line-height:1.5;color:var(--color-ink);overflow-y:auto}.import-search.collapsing{animation:search-collapse .6s ease-in-out both}.import-search.expanding{animation:search-expand .6s ease-out both}.import-search.drag-over{border-color:#c4622d;border-style:dashed;background:var(--color-terracotta-soft)}[data-reduce-motion=true] .import-search-placeholder{animation:none!important}@media (prefers-reduced-motion: reduce){[data-reduce-motion=system] .import-search-placeholder{animation:none!important}}.landing .import-processing{padding:var(--space-6) var(--space-4)}.landing .cycle-message{font-size:20px}.save-prompt-actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.save-prompt-actions>*{flex:1}.skip-link{background:none;border:none;cursor:pointer;padding:0;color:var(--color-ink-faint);font-family:var(--font-body);font-size:var(--text-sm)}.skip-link:hover{text-decoration:underline}.text-cta-link{display:inline-block;font-family:var(--font-body);font-size:14px;color:#c4622d;text-decoration:underline;cursor:pointer}.text-cta-link:hover{color:#8b3a1a}.btn-ghost-pill{display:inline-block;background:transparent;border:1.5px solid #c4622d;color:#c4622d;border-radius:var(--radius-pill);padding:10px 24px;font-family:var(--font-body);font-size:var(--text-sm);font-weight:900;cursor:pointer;min-height:var(--tap-target)}.btn-ghost-pill:hover{background:#c4622d14}.paper-sheet{--paper-rotate: 0deg;position:relative;max-width:680px;margin:var(--space-6) 16px 0;background-color:#fdfdf5;background-image:repeating-linear-gradient(transparent,transparent 27px,#c8d8e8 27px,#c8d8e8 28px);border-radius:2px;padding:28px 32px 56px 56px;box-shadow:2px 4px 12px #2c18101f,-1px 2px 4px #2c18100f;transform:rotate(var(--paper-rotate));animation:paper-drop-in .3s var(--ease-warm) both}.paper-sheet:before{content:"";position:absolute;top:0;bottom:0;left:48px;width:1px;background:#e8a87c}@media (min-width: 900px){.paper-sheet{--paper-rotate: -.3deg;margin:var(--space-6) auto 0}}.paper-title{font-family:var(--font-display);font-style:italic;font-size:24px;line-height:56px;margin:0;color:#2c1810;text-decoration:underline}.paper-sheet h2{font-family:var(--font-display);font-style:italic;font-size:16px;line-height:28px;margin:28px 0 0;color:#2c1810}.paper-sheet>h2:first-child{margin-top:0}.paper-sheet .ingredient-group{margin:0}.paper-sheet .group-label{font-family:var(--font-body);font-size:12px;line-height:28px;font-weight:900;text-transform:uppercase;letter-spacing:1.5px;color:#c4622d;margin:28px 0 0}.paper-sheet .ingredient-row{font-family:var(--font-body);font-size:14px;line-height:28px;color:#2c1810;border-bottom:none;margin:0;padding:0}.paper-sheet .ingredient-qty{font-weight:500}.paper-sheet .ingredient-row.inferred{color:#8b7355;font-style:italic;font-size:13px}.paper-sheet .inferred-badge{line-height:18px;padding:0 8px;border-width:1px}.paper-sheet .steps-list{margin:0}.paper-sheet .step-row{position:relative;display:block;margin:0;padding:0;border-bottom:none}.paper-sheet .step-number{position:absolute;left:-40px;top:0;display:inline-block;width:auto;height:auto;background:none;font-family:var(--font-display);font-style:italic;font-size:13px;line-height:28px;font-weight:400;color:#c4622d}.paper-sheet .step-text{font-family:var(--font-body);font-size:14px;line-height:28px;color:#2c1810}@media (min-width: 900px){.paper-sheet .ingredient-row,.paper-sheet .step-text{font-size:15px}.paper-sheet .ingredient-row.inferred{font-size:14px}}.page-stack-wrap{position:relative;display:flex;justify-content:center;margin-top:var(--space-6)}.paper-sheet.page-measure{position:absolute;left:-9999px;top:0;visibility:hidden;pointer-events:none;margin:0;max-width:none;padding:0;background:none;box-shadow:none;border-radius:0;transform:none;animation:none}.paper-sheet.page-measure:before{display:none}.page-stack{position:relative;perspective:1000px;transform-style:preserve-3d;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-y}.page-stack:focus-visible{outline:2px solid var(--color-accent);outline-offset:6px;border-radius:4px}.paper-sheet.page-sheet{position:absolute;top:0;left:0;width:100%;margin:0;max-width:none;padding:28px 24px 56px 56px;border-radius:3px;box-shadow:3px 4px 16px #2c181026;overflow:hidden;animation:none;transform-origin:bottom center;backface-visibility:hidden}.page-num{position:absolute;right:20px;bottom:16px;font-family:var(--font-display);font-style:italic;font-size:13px;color:#8b7355}.page-stack.entering .page-sheet{animation:page-sheet-enter .3s var(--ease-warm) both;animation-delay:calc(var(--stack-pos) * .1s)}.page-stack.exiting .page-sheet{animation:page-sheet-exit .3s ease-in both}.landing-cta{animation:landing-cta-glow 2.6s ease-in-out infinite}.landing-cta:hover{animation-play-state:paused;box-shadow:0 8px 36px #c05b3ca6}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--space-4)}.feature-card{background:var(--color-surface);border-radius:var(--radius-lg);border:2px solid var(--color-line);padding:var(--space-5);animation:landing-card-rise .64s var(--ease-warm) both;animation-delay:var(--card-delay, 0ms)}.feature-icon{font-size:40px;display:inline-block}.feature-card.in-view .feature-icon{animation:landing-icon-bounce .9s var(--ease-warm) both}.landing-book{transition:transform var(--duration-med) var(--ease-warm)}.landing-book:hover{transform:perspective(600px) rotateX(-8deg) translateY(-6px)}.pricing-table-wrap{max-width:var(--content-max);width:100%;margin:0 auto;overflow-x:auto;overflow-y:hidden;border-radius:var(--radius-lg);border:2px solid var(--color-line);background:var(--color-surface)}.pricing-table{border-collapse:collapse;width:100%;min-width:760px}.pricing-table th,.pricing-table td{padding:var(--space-4) var(--space-4);border-bottom:1.5px solid var(--color-line);border-right:1.5px solid var(--color-line);text-align:center;vertical-align:middle}.pricing-table thead th:last-child,.pricing-table thead td:last-child,.pricing-table tbody th:last-child,.pricing-table tbody td:last-child{border-right:none}.pricing-table tbody tr:last-child th,.pricing-table tbody tr:last-child td{border-bottom:none}.pricing-table th[scope=row],.pricing-table-corner{position:sticky;left:0;background:var(--color-surface-warm);text-align:center;font-weight:900;font-size:var(--text-sm);color:var(--color-ink-soft);min-width:148px;padding-left:var(--space-5);padding-right:var(--space-5);z-index:1}.pricing-table-corner{background:var(--color-surface-warm)}.pricing-table thead th[scope=col]{background:var(--color-surface-warm);padding:var(--space-5) var(--space-4);position:relative;vertical-align:top}.pricing-col-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:900;color:var(--color-ink)}.pricing-col-period{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-ink-soft);margin-top:var(--space-1)}.pricing-savings-strip{position:absolute;left:0;right:0;bottom:0;padding:4px 0;background:var(--color-discount);color:#fffdf9;font-size:var(--text-xs);font-weight:900}.pricing-table thead th.col-annual{padding-bottom:calc(var(--space-5) + 20px)}.pricing-table th.col-solo.col-annual,.pricing-table td.col-solo.col-annual{border-right:2px solid var(--color-line)}.pricing-table-price-row td{padding-top:var(--space-3);padding-bottom:var(--space-3)}.pricing-table-price{font-size:var(--text-2xl);font-family:var(--font-display);font-weight:900;color:var(--color-accent-deep)}.pricing-table-price-unit{font-size:.5em}.pricing-table-check{color:var(--color-accent);font-weight:900;font-size:var(--text-lg)}.pricing-table-buy-row td{padding:var(--space-5) var(--space-4)}.plan-button{display:inline-flex!important;align-items:center;justify-content:center;padding:var(--space-3) var(--space-5)!important;border-radius:var(--radius-pill);width:100%;max-width:160px}.pricing-table .col-annual,.pricing-table thead th.col-annual{background:var(--color-line)}.splash{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-6);text-align:center}.splash .auth-options{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:340px;margin-top:var(--space-6)}.auth-screen{max-width:400px;margin:0 auto;padding:var(--space-6) var(--space-4) 0}@media (min-width: 900px){.auth-screen{padding-left:var(--space-6);padding-right:var(--space-6)}}.google-signin-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;background:#fff;border:1px solid #ede0d4;border-radius:var(--radius-pill);padding:var(--space-3) var(--space-4);font-family:var(--font-body);font-weight:500;font-size:var(--text-md);color:#2c1810;cursor:pointer;min-height:var(--tap-target)}.google-signin-btn:hover{background:var(--color-base)}.google-signin-btn:disabled{opacity:.6;cursor:default}.auth-divider{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-4) 0;color:#8b7355;font-family:var(--font-body);font-size:12px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#ede0d4}.legal-page{max-width:720px;margin:0 auto}.legal-placeholder{background:var(--color-surface-warm);border-radius:var(--radius-md);padding:var(--space-5);color:var(--color-ink-faint);font-style:italic}.legal-placeholder+.legal-placeholder{margin-top:var(--space-4)}.stack-2>*+*{margin-top:var(--space-2)}.stack-4>*+*{margin-top:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-5)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.muted{color:var(--color-ink-faint)}.text-center{text-align:center}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}
