: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: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 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)}}.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}[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}}*,*: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:700;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}::selection{background:var(--color-amber-soft)}.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;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);font-size:var(--text-lg);color:var(--color-ink);cursor:pointer}.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:800;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:600;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-radius:var(--radius-pill);color:var(--color-ink-soft);font-size:var(--text-xs);font-weight:600;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:700}.pill-tab .nav-badge{position:absolute;top:2px;right:8px}.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:700;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);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:600;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}.input-error{color:var(--color-danger);font-size:var(--text-sm)}.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)}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:var(--radius-pill);padding:2px 12px;font-size:var(--text-xs);font-weight:700;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:800;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:600;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:600}.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:700;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}.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:800;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:600;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:800;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.import-hero{text-align:center;padding-top:var(--space-6)}.paste-field-wrap{position:relative;max-width:560px;margin:0 auto}.paste-field{width:100%;background:var(--color-surface);border:2px solid var(--color-line);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);min-height:120px;resize:none;outline:none;font-size:var(--text-md);color:var(--color-ink)}.paste-field:focus{border-color:var(--color-accent)}.paste-field.sparked{animation:landing-spark .7s var(--ease-warm)}.detected-method{position:absolute;top:var(--space-3);right:var(--space-3);animation:badge-pop var(--duration-med) var(--ease-warm) both}.import-actions{display:flex;gap:var(--space-3);justify-content:center;margin-top:var(--space-4);flex-wrap:wrap}.camera-button{background:var(--color-surface-warm);border:2px dashed var(--color-inferred);color:var(--color-ink-soft)}.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}.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)}.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:700;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-input{font-family:var(--font-display);font-style:italic;font-size:var(--text-2xl);font-weight:800;border:2px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-ink);width:100%;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)}.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:inline-flex;background:var(--color-surface-warm);border-radius:var(--radius-pill);padding:4px;margin-bottom:var(--space-5)}.view-mode-toggle button{border:none;background:transparent;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-5);font-weight:700;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)}.ingredient-group{margin-bottom:var(--space-5)}.group-label{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;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:700;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:800;font-family:var(--font-display)}.recipe-table-wrap{overflow-x:auto;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:700;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:700;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:800;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:800;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)}.magazine-stand{text-align:center}.stand-window{position:relative;overflow:hidden;padding:var(--space-5) 0 0}.stand-row{display:flex;gap:var(--space-4);justify-content:flex-start;overflow-x:auto;scroll-snap-type:x mandatory;padding:var(--space-3) var(--space-4) var(--space-5);-webkit-overflow-scrolling:touch}.cookbook-cover{scroll-snap-align:center;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);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:800;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}.stand-base{height:20px;background:var(--color-inferred);border-radius:var(--radius-pill);margin:-14px var(--space-5) var(--space-4);box-shadow:var(--shadow-sm);animation:landing-stand-sway 6s ease-in-out infinite;transform-origin:bottom center}.stand-controls{display:flex;gap:var(--space-3);justify-content:center}.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;justify-content:space-between;padding:var(--space-3) 0;box-shadow:var(--shadow-sm);transition:transform var(--duration-fast) var(--ease-warm);position:relative}.cookbook-spine:hover{transform:translateY(-10px);box-shadow:var(--shadow-md)}.spine-title{writing-mode:vertical-rl;font-family:var(--font-display);font-weight:700;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)}.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:600;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:800}.shopping-group{margin-bottom:var(--space-5)}.shopping-group .recipe-label{font-family:var(--font-display);font-weight:700;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:600;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;font-weight:600}.settings-row select{background:var(--color-surface-warm);border:none;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);font-weight:600;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)}.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:800;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:800}.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:800;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:600}.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-8);min-height:88vh}.landing-logo{font-family:var(--font-display);font-size:var(--text-xl);font-weight:800;color:var(--color-accent)}.landing-tagline{font-family:var(--font-display);font-size:var(--text-hero);font-weight:800;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:560px;margin:0 auto var(--space-6)}.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}.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:600;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:32px 32px 48px 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;color:#2c1810;text-decoration:underline;margin:0 0 var(--space-4)}.paper-sheet .group-label{font-family:var(--font-body);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:#c4622d}.paper-sheet .ingredient-row{font-family:var(--font-body);font-size:15px;line-height:28px;color:#2c1810;border-bottom:none;padding:0}.paper-sheet .ingredient-qty{font-weight:500}.paper-sheet .ingredient-row.inferred{color:#8b7355;font-style:italic;font-size:14px}.paper-sheet .steps-list{margin-top:var(--space-4)}.paper-sheet .step-row{position:relative;display:block;padding:3px 0;border-bottom:none}.paper-sheet .step-number{position:absolute;left:-40px;top:3px;display:inline-block;width:auto;height:auto;background:none;font-family:var(--font-display);font-style:italic;font-size:13px;font-weight:400;color:#c4622d}.paper-sheet .step-text{font-family:var(--font-body);font-size:15px;line-height:28px;color:#2c1810}.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-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-4);max-width:720px;margin:0 auto}.plan-card{background:var(--color-surface);border-radius:var(--radius-lg);border:2px solid var(--color-line);padding:var(--space-6);text-align:center}.plan-card .plan-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:800}.plan-card .plan-price{font-size:var(--text-3xl);font-family:var(--font-display);font-weight:800;color:var(--color-accent-deep);margin:var(--space-2) 0}.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-top:var(--space-6)}.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-3)}.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)}
