:root{--tomato: #e04e1b;--tomato-deep: #b93b0c;--tomato-soft: #fde8dc;--honey: #f6b92b;--honey-soft: #fdf3d7;--olive: #5f7a2a;--olive-soft: #eef2dd;--linen: #f1e5cf;--flour: #faf1e3;--paper: #fffdf9;--crust: #eeddc4;--ink: #33261d;--ink-soft: #7a6753;--red: #c92a2a;--red-soft: #fdeaea;--card: var(--paper);--border: var(--crust);--shadow: 0 2px 10px rgba(122, 84, 40, .09);--shadow-lift: 0 10px 30px rgba(122, 84, 40, .16);--radius: 18px;--font-display: "Comfortaa", "Nunito", system-ui, sans-serif;--font-body: "Nunito", -apple-system, "Segoe UI", Roboto, sans-serif;--gingham: repeating-linear-gradient(0deg, rgba(224, 78, 27, .25) 0 5px, transparent 5px 10px), repeating-linear-gradient(90deg, rgba(224, 78, 27, .25) 0 5px, transparent 5px 10px), var(--paper)}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);background:var(--linen);color:var(--ink);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select{font-family:inherit;font-size:16px}:focus-visible{outline:3px solid var(--honey);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app{max-width:520px;margin:0 auto;height:100dvh;display:flex;flex-direction:column;background:var(--flour)}@media (min-width: 560px){.app{border-left:1px solid var(--crust);border-right:1px solid var(--crust)}}.app-header{position:relative;display:flex;align-items:center;justify-content:space-between;padding:12px 16px 10px;border-bottom:6px solid transparent;border-image:none}.app-header{border-bottom-width:10px}.app-header:after{content:"";position:absolute;left:0;right:0;bottom:-10px;height:10px;background:var(--gingham);background-size:10px 10px,10px 10px,auto;opacity:.9;pointer-events:none}.brand{display:flex;align-items:center;gap:9px;min-width:0}.brand-avatar{width:36px;height:36px;border-radius:50%;border:2px solid var(--paper);box-shadow:var(--shadow);flex-shrink:0}.logo{font-family:var(--font-display);font-size:21px;font-weight:700;color:var(--tomato-deep);letter-spacing:-.3px;white-space:nowrap}.key-warn{font-size:18px}.app-main{flex:1;overflow:hidden;display:flex;flex-direction:column}.chat-view,.recipes-view,.profile-view,.shop-view{animation:viewIn .28s ease both}@keyframes viewIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.bottom-nav{display:flex;border-top:1px solid var(--border);background:var(--paper);padding:4px 6px calc(4px + env(safe-area-inset-bottom));gap:4px}.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 6px;font-size:11.5px;font-weight:800;color:var(--ink-soft);border-radius:14px;transition:background .15s ease,color .15s ease}.bottom-nav .nav-icon{width:24px;height:24px;display:block}.bottom-nav .nav-icon path,.bottom-nav .nav-icon circle{stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:fill .15s ease}.bottom-nav button.active{color:var(--tomato-deep);background:var(--tomato-soft)}.bottom-nav button.active .nav-icon path.fillable,.bottom-nav button.active .nav-icon circle.fillable{fill:#e04e1b2e}.btn{border-radius:999px;font-weight:800;font-size:15px;padding:10px 18px;transition:transform .06s ease,background .15s ease,box-shadow .15s ease}.btn:active{transform:scale(.96)}.btn-primary{background:var(--tomato);color:#fff;box-shadow:0 3px 10px #e04e1b52}.btn-primary:hover{background:var(--tomato-deep)}.btn-primary:disabled{opacity:.5;box-shadow:none}.btn-ghost{background:var(--tomato-soft);color:var(--tomato-deep)}.btn-ghost:hover{background:#fadccb}.btn-danger{background:var(--red);color:#fff}.btn-olive{background:var(--olive);color:#fff;box-shadow:0 3px 10px #5f7a2a4d}.btn-olive:hover{background:#4e6522}.btn-sm{font-size:13.5px;padding:8px 14px}.btn-lg{font-size:16.5px;padding:14px 26px}.full-width{width:100%;margin-top:16px}.btn-with-icon{display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-with-icon .nav-icon{width:20px;height:20px;flex-shrink:0}.btn-with-icon .nav-icon path{stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.icon-btn{font-size:20px;padding:8px;border-radius:12px;min-width:42px;min-height:42px;display:inline-flex;align-items:center;justify-content:center}.icon-btn:active{background:var(--tomato-soft)}.icon-btn .nav-icon{width:23px;height:23px}.icon-btn .nav-icon path,.icon-btn .nav-icon circle{stroke:var(--ink);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.chat-view{display:flex;flex-direction:column;flex:1;overflow:hidden}.chat-scroll{flex:1;overflow-y:auto;padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px}.bubble{max-width:86%;padding:12px 16px;border-radius:var(--radius);line-height:1.5;font-size:15.5px;white-space:pre-wrap;word-break:break-word}.msg-row{display:flex;align-items:flex-end;gap:8px;max-width:100%;animation:bubbleIn .22s ease both}@keyframes bubbleIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.msg-row.user{align-self:flex-end;flex-direction:row-reverse}.msg-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0;box-shadow:var(--shadow);border:1.5px solid var(--paper)}.bubble.assistant{background:var(--paper);border:1px solid var(--crust);box-shadow:var(--shadow);border-bottom-left-radius:6px;align-self:flex-start}.bubble.user{background:var(--tomato);color:#fff;border-bottom-right-radius:6px;align-self:flex-end;box-shadow:0 2px 8px #e04e1b40}.bubble.user.interim{opacity:.65;font-style:italic}.bubble.error{background:var(--red-soft);border-color:#f5c6c6;color:var(--red)}.typing-dots{display:inline-flex;align-items:center;gap:5px;padding:3px 2px}.typing-dots span{width:8px;height:8px;border-radius:50%;background:var(--tomato);opacity:.4;animation:simmer 1.2s infinite ease-in-out}.typing-dots span:nth-child(2){animation-delay:.18s}.typing-dots span:nth-child(3){animation-delay:.36s}@keyframes simmer{0%,60%,to{transform:translateY(0);opacity:.35}30%{transform:translateY(-5px);opacity:1}}.chat-hero-avatar{width:76px;height:76px;border-radius:50%;border:3px solid var(--paper);box-shadow:var(--shadow-lift);align-self:center;margin-top:10px;animation:chefBob 3.4s ease-in-out infinite}@keyframes chefBob{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}.msg-row.hero-row{justify-content:center;margin-top:2px}.msg-row.hero-row .bubble{text-align:center;border-radius:var(--radius);max-width:94%}.chips{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:6px 0}.chips .chip{animation:viewIn .3s ease both}.chips .chip:nth-child(2){animation-delay:.06s}.chips .chip:nth-child(3){animation-delay:.12s}.chips .chip:nth-child(4){animation-delay:.18s}.chip{background:var(--paper);border:1.5px solid var(--crust);border-radius:16px;padding:12px 13px;font-size:13.5px;font-weight:700;color:var(--ink);box-shadow:var(--shadow);text-align:left;line-height:1.35;transition:border-color .15s ease,transform .06s ease}.chip:hover{border-color:var(--tomato)}.chip:active{transform:scale(.97)}.chip.active{background:var(--tomato);border-color:var(--tomato);color:#fff}.chat-input-bar{display:flex;align-items:center;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom)*.4);background:var(--paper);border-top:1px solid var(--border)}.chat-input-bar input{flex:1;min-width:0;border:1.5px solid var(--crust);border-radius:999px;padding:12px 18px;outline:none;background:var(--flour);color:var(--ink);transition:border-color .15s ease}.chat-input-bar input::placeholder{color:var(--ink-soft)}.chat-input-bar input:focus{border-color:var(--tomato)}.mic-btn{min-width:46px;min-height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--tomato-soft);flex-shrink:0;transition:background .2s ease,transform .1s ease}.mic-btn:active{transform:scale(.92)}.mic-btn .nav-icon{width:22px;height:22px}.mic-btn .nav-icon path{stroke:var(--tomato-deep);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:stroke .2s ease}.mic-btn.active{background:var(--olive);animation:micHalo 1.8s ease-out infinite}.mic-btn.active .nav-icon path{stroke:#fff}.mic-btn.active .nav-icon .fillable{fill:#ffffff47}@keyframes micHalo{0%{box-shadow:0 0 #5f7a2a73}70%,to{box-shadow:0 0 0 11px #5f7a2a00}}.send-btn{font-size:18px;min-width:46px;min-height:46px;border-radius:50%;background:var(--tomato);color:#fff;flex-shrink:0;box-shadow:0 2px 8px #e04e1b4d}.send-btn:disabled{opacity:.4;box-shadow:none}.talk-panel{display:flex;align-items:center;gap:10px;margin:6px 10px 8px;padding:10px 12px;background:var(--olive-soft);border:1.5px solid #d6dfb9;border-radius:18px;box-shadow:var(--shadow);animation:talkIn .3s cubic-bezier(.34,1.3,.64,1) both}@keyframes talkIn{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.talk-avatar-wrap{position:relative;width:46px;height:46px;flex-shrink:0}.talk-avatar{width:100%;height:100%;border-radius:50%;border:2px solid var(--paper);box-shadow:var(--shadow);display:block}.talk-ring{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid var(--olive);animation:ringBreath 2.2s ease-in-out infinite;pointer-events:none}@keyframes ringBreath{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.09);opacity:.3}}.talk-panel.speaking .talk-ring{border-color:var(--tomato);animation-duration:1s}.talk-panel.speaking .talk-avatar{animation:chefTalk .55s ease-in-out infinite}@keyframes chefTalk{0%,to{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}.talk-panel.error .talk-ring{border-color:var(--red);animation:none}.talk-eq{display:flex;align-items:center;gap:3px;height:26px;flex-shrink:0}.talk-eq i{width:4px;height:6px;border-radius:999px;background:var(--olive);transition:height .2s ease,opacity .2s ease}.talk-panel.idle .talk-eq i{opacity:.45}.talk-panel.listening .talk-eq i,.talk-panel.hearing .talk-eq i,.talk-panel.speaking .talk-eq i{animation:eqBounce 1.15s ease-in-out infinite}.talk-panel.hearing .talk-eq i{animation-duration:.55s}.talk-panel.speaking .talk-eq i{background:var(--tomato);animation-duration:.75s}.talk-eq i:nth-child(2){animation-delay:.14s}.talk-eq i:nth-child(3){animation-delay:.28s}.talk-eq i:nth-child(4){animation-delay:.42s}.talk-eq i:nth-child(5){animation-delay:.56s}@keyframes eqBounce{0%,to{height:6px}50%{height:22px}}.talk-panel.error .talk-eq{display:none}.talk-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.talk-eyebrow{font-family:var(--font-display);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--olive);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.talk-status{font-size:14px;font-weight:800;color:var(--ink);line-height:1.3}.talk-status.transcript{font-weight:600;font-style:italic;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.talk-panel.speaking .talk-status{color:var(--tomato-deep)}.talk-hint{font-weight:500;font-size:12px;line-height:1.4;color:var(--ink-soft)}.talk-panel.error{background:var(--red-soft);border-color:#f0c4c4}.talk-panel.error .talk-eyebrow{color:var(--red)}.talk-panel.error .talk-status{color:var(--red);font-weight:700;font-size:13px}.talk-action{width:38px;height:38px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:transform .1s ease,background .15s ease}.talk-action:active{transform:scale(.88)}.talk-action .nav-icon{width:21px;height:21px}.talk-hangup{background:var(--red);box-shadow:0 2px 8px #c92a2a59}.talk-hangup .nav-icon path{stroke:#fff;fill:#ffffff38;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.talk-interrupt{background:var(--paper);border:1.5px solid var(--crust);animation:talkIn .2s ease both}.talk-interrupt .nav-icon rect{stroke:var(--tomato-deep);fill:#e04e1b29;stroke-width:1.9;stroke-linejoin:round}.chip.clear-chat{align-self:center;color:var(--ink-soft);font-size:13px;margin-top:4px;border-radius:999px;padding:9px 15px}.inline-recipes{display:flex;flex-direction:column;gap:10px;margin:8px 0 4px}.recipe-card{position:relative;background:var(--paper);border:1px solid var(--crust);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;transition:box-shadow .15s ease,transform .15s ease}.recipe-card:hover{box-shadow:var(--shadow-lift)}.recipe-card-top{display:flex;gap:12px;align-items:flex-start;padding-right:40px}.recipe-emoji{font-size:34px;width:56px;height:56px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 28%,#fff 0%,var(--tomato-soft) 78%);border:1px solid var(--crust);border-radius:50%;flex-shrink:0}.recipe-card-body{flex:1;min-width:0}.recipe-name{font-weight:900;font-size:16px;line-height:1.3}.recipe-chef{color:var(--ink-soft);font-size:13px;margin-top:2px}.recipe-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.recipe-meta.center{justify-content:center}.meta-pill{background:var(--flour);border:1px solid var(--crust);border-radius:999px;font-size:12px;font-weight:700;padding:4px 10px;color:var(--ink-soft)}.kcal-pill{color:var(--tomato-deep);border-color:var(--tomato-soft);background:var(--honey-soft)}.recipe-actions{display:flex;gap:8px;margin-top:12px}.recipe-actions .btn{flex:1;white-space:nowrap}.cl-corner{position:absolute;top:10px;right:10px;width:40px;height:40px;border-radius:50%;border:1.7px dashed var(--tomato);background:var(--paper);display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,transform .1s ease}.cl-corner .nav-icon{width:21px;height:21px}.cl-corner .nav-icon path{stroke:var(--tomato-deep);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.cl-corner .cl-mark{position:absolute;top:-5px;right:-5px;width:18px;height:18px;border-radius:50%;background:var(--tomato);color:#fff;font-size:13px;font-weight:900;line-height:1;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--paper)}.cl-corner:active{transform:scale(.9)}.cl-corner.in{border-style:solid;border-color:var(--olive);background:var(--olive-soft)}.cl-corner.in .nav-icon path{stroke:var(--olive)}.cl-corner.in .cl-mark{background:var(--olive);font-size:11px}.recipes-view{flex:1;overflow-y:auto;padding:14px 16px 20px}.search-wrap{position:relative;margin-bottom:10px}.search-wrap .search-icon{position:absolute;left:15px;top:50%;transform:translateY(-50%);width:18px;height:18px;pointer-events:none}.search-wrap .search-icon path,.search-wrap .search-icon circle{stroke:var(--ink-soft);fill:none;stroke-width:2;stroke-linecap:round}.search-input{width:100%;border:1.5px solid var(--crust);border-radius:999px;padding:12px 18px 12px 42px;outline:none;background:var(--paper);color:var(--ink);transition:border-color .15s ease}.search-input::placeholder{color:var(--ink-soft)}.search-input:focus{border-color:var(--tomato)}.filter-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px;scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.filter-row .chip{flex-shrink:0;border-radius:999px;padding:9px 15px;font-size:14px}.recipes-list{display:flex;flex-direction:column;gap:12px}.recipes-list .recipe-card,.inline-recipes .recipe-card{animation:viewIn .3s ease both}.recipes-list .recipe-card:nth-child(2){animation-delay:.05s}.recipes-list .recipe-card:nth-child(3){animation-delay:.1s}.recipes-list .recipe-card:nth-child(4){animation-delay:.15s}.recipes-list .recipe-card:nth-child(n+5){animation-delay:.2s}.empty-note{text-align:center;color:var(--ink-soft);padding:30px 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#33261d80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-end;justify-content:center;z-index:50;animation:backdropIn .2s ease both}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--paper);border-radius:24px 24px 0 0;padding:14px 20px calc(22px + env(safe-area-inset-bottom));width:100%;max-width:520px;max-height:88dvh;overflow-y:auto;position:relative;animation:slideUp .25s ease}.modal:before{content:"";display:block;width:44px;height:5px;border-radius:999px;background:var(--crust);margin:0 auto 12px}.modal.confirm:before{display:none}@keyframes slideUp{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-close{position:absolute;top:14px;right:14px;font-size:15px;background:var(--flour);border:1px solid var(--crust);border-radius:50%;width:34px;height:34px}.modal h3{font-family:var(--font-display);font-size:17px;margin:20px 0 10px}.modal.confirm{border-radius:24px;margin:0 20px 40vh;max-width:420px;padding-top:22px}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.detail-hero{text-align:center}.detail-emoji{font-size:54px;display:inline-flex;align-items:center;justify-content:center;width:96px;height:96px;background:radial-gradient(circle at 32% 28%,#fff 0%,var(--tomato-soft) 82%);border:1px solid var(--crust);border-radius:50%;box-shadow:var(--shadow)}.detail-hero h2{font-family:var(--font-display);font-size:22px;margin-top:10px}.nutrition-row{display:flex;gap:8px;justify-content:center;margin-top:14px}.nutri-box{background:var(--flour);border:1px solid var(--crust);border-radius:14px;padding:8px 12px;display:flex;flex-direction:column;min-width:64px}.nutri-box b{font-size:16px;color:var(--tomato-deep)}.nutri-box span{font-size:11px;color:var(--ink-soft)}.ingredient-list{list-style:none}.ingredient-list li{padding:9px 0 9px 28px;border-bottom:1px dashed var(--crust);position:relative}.ingredient-list li:before{content:"🥄";position:absolute;left:0;font-size:14px}.steps-list{padding-left:22px}.steps-list li{padding:7px 0;line-height:1.5}.steps-list li::marker{font-weight:900;color:var(--tomato-deep)}.cooking-session{height:100dvh;display:flex;flex-direction:column;background:var(--flour)}.cook-header{display:flex;align-items:center;gap:8px;padding:10px 12px}.cook-title{flex:1;text-align:center;display:flex;flex-direction:column;line-height:1.25;min-width:0}.cook-title b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cook-title span{font-size:12.5px;color:var(--ink-soft)}.step-dots{display:flex;gap:5px;margin:0 16px}.step-dots i{flex:1;height:7px;border-radius:999px;background:var(--crust);transition:background .25s ease}.step-dots i.done{background:var(--tomato)}.step-dots i.now{background:var(--tomato);box-shadow:0 0 0 2.5px var(--tomato-soft)}.progress-track{height:6px;background:var(--tomato-soft);margin:0 16px;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--tomato);border-radius:999px;transition:width .3s ease}.cook-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px}.step-card{background:var(--paper);border:1px solid var(--crust);border-radius:22px;box-shadow:var(--shadow);padding:22px 20px;animation:viewIn .25s ease both}.step-number{font-family:var(--font-display);font-size:13px;font-weight:700;color:var(--tomato-deep);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}.step-text{font-size:21px;line-height:1.5;font-weight:700}.tip-box{margin-top:14px;background:var(--honey-soft);border:1px solid #f3dfa5;border-radius:14px;padding:12px 14px;font-size:14px;line-height:1.5;color:#6d500e;display:flex;gap:10px;align-items:flex-start}.tip-box .tip-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0;border:1.5px solid #f3dfa5}.timer-widget{margin-top:18px;text-align:center}.timer-ring{position:relative;width:168px;height:168px;margin:0 auto}.timer-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.timer-ring .ring-track{fill:none;stroke:var(--crust);stroke-width:10}.timer-ring .ring-fill{fill:none;stroke:var(--tomato);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset .9s linear,stroke .3s ease}.timer-widget.done .ring-fill{stroke:var(--olive)}.timer-display{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:38px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);letter-spacing:1px}.timer-widget.done .timer-display{color:var(--olive)}.timer-ring.urgent .timer-display{color:var(--tomato-deep);animation:urgentPulse 1s ease-in-out infinite}@keyframes urgentPulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.timer-controls{display:flex;gap:8px;justify-content:center;margin-top:12px}.timer-done-note{margin-top:8px;font-weight:800;color:var(--olive)}.other-timers{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;color:var(--ink-soft)}.other-timers .chip{border-radius:999px;padding:8px 14px;font-variant-numeric:tabular-nums}.step-nav{display:flex;gap:10px;padding:10px 16px 12px;background:var(--flour);border-top:1px solid var(--crust)}.step-nav .btn{flex:1}.step-nav .btn:disabled{opacity:.4}.cook-chat{border-top:1px solid var(--border);background:var(--paper)}.cook-chat-messages{max-height:32dvh;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.finished-screen{align-items:center;justify-content:center;text-align:center;padding:30px;gap:12px;position:relative;overflow:hidden}.finish-emoji{font-size:74px;width:140px;height:140px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 28%,#fff 0%,var(--tomato-soft) 82%);border:1px solid var(--crust);border-radius:50%;box-shadow:var(--shadow-lift);animation:bounceIn .6s ease}@keyframes bounceIn{0%{transform:scale(.3)}60%{transform:scale(1.15)}to{transform:scale(1)}}.finished-screen h1{font-family:var(--font-display);font-size:30px;color:var(--tomato-deep)}.finish-recipe-name{font-weight:800;color:var(--ink-soft);margin-bottom:14px}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.confetti i{position:absolute;top:-14px;width:9px;height:13px;border-radius:2px;opacity:0;animation:confettiFall 2.8s ease-in forwards}@keyframes confettiFall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:.85;transform:translateY(105vh) rotate(560deg)}}.onboarding{height:100dvh;display:flex;flex-direction:column;padding:24px 20px calc(20px + env(safe-area-inset-bottom));max-width:520px;margin:0 auto;overflow-y:auto}.ob-header{text-align:center}.ob-avatar{width:84px;height:84px;border-radius:50%;border:3px solid var(--paper);box-shadow:var(--shadow-lift);margin-top:14px;animation:chefBob 3.4s ease-in-out infinite}.ob-header h1{font-family:var(--font-display);font-size:24px;margin-top:12px}.ob-subtitle{color:var(--ink-soft);margin-top:8px;font-size:15px}.ob-progress{display:flex;gap:8px;justify-content:center;margin:18px 0 8px}.ob-dot{width:34px;height:7px;border-radius:999px;background:var(--crust);transition:background .25s}.ob-dot.filled{background:var(--tomato)}.ob-question{flex:1;padding-top:16px}.ob-question h2{font-family:var(--font-display);font-size:20px;margin-bottom:6px}.ob-hint{color:var(--ink-soft);font-size:14px;margin-bottom:6px}.ob-options{display:flex;flex-direction:column;gap:10px;margin-top:14px}.ob-options .ob-option:nth-child(2){animation-delay:.05s}.ob-options .ob-option:nth-child(3){animation-delay:.1s}.ob-options .ob-option:nth-child(4){animation-delay:.15s}.ob-option{animation:viewIn .28s ease both;position:relative;display:flex;align-items:center;gap:12px;background:var(--paper);border:2px solid var(--crust);border-radius:16px;padding:15px 44px 15px 16px;font-size:15.5px;font-weight:700;text-align:left;transition:border-color .15s,background .15s}.ob-option.selected{border-color:var(--tomato);background:var(--tomato-soft)}.ob-option.selected:after{content:"✓";position:absolute;right:14px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;background:var(--tomato);color:#fff;font-size:13px;font-weight:900;display:flex;align-items:center;justify-content:center}.ob-emoji{font-size:22px}.ob-footer{display:flex;justify-content:space-between;gap:10px;padding-top:16px}.lang-switch{display:inline-flex;background:var(--paper);border:1.5px solid var(--crust);border-radius:999px;overflow:hidden}.lang-switch button{padding:8px 16px;font-weight:800;font-size:14px;color:var(--ink-soft)}.lang-switch button.active{background:var(--tomato);color:#fff}.profile-view{flex:1;overflow-y:auto;padding:14px 18px 24px}.profile-view h2{font-family:var(--font-display);font-size:15px;letter-spacing:.04em;color:var(--ink-soft);margin:18px 0 10px}.profile-view h2:first-child{margin-top:4px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--paper);border:1px solid var(--crust);border-radius:16px;box-shadow:var(--shadow);padding:15px 16px;margin-bottom:10px}.setting-hint{font-size:12.5px;color:var(--ink-soft);margin-top:3px}.toggle{width:54px;height:32px;border-radius:999px;background:#e3d7c3;position:relative;transition:background .2s;flex-shrink:0}.toggle.on{background:var(--olive)}.toggle .knob{position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #00000040;transition:left .25s cubic-bezier(.34,1.4,.64,1)}.toggle.on .knob{left:25px}.profile-summary{background:var(--paper);border:1px solid var(--crust);border-radius:16px;box-shadow:var(--shadow);padding:6px 16px}.profile-fact{padding:11px 0;border-bottom:1px dashed var(--crust);font-size:14.5px}.profile-fact:last-child{border-bottom:none}.version-list{display:flex;flex-direction:column;gap:10px;margin-top:18px}.version-option{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--paper);border:2px solid var(--crust);border-radius:16px;padding:14px 16px;transition:border-color .15s,background .15s}.version-option:active{border-color:var(--tomato);background:var(--tomato-soft)}.version-option.original{border-color:var(--tomato-soft);background:var(--flour)}.version-title{font-weight:800;font-size:15.5px}.version-desc{font-size:13.5px;color:var(--ink-soft);line-height:1.4}.version-date{font-size:12px;color:var(--ink-soft);opacity:.8}.version-note{font-size:14.5px;color:var(--ink-soft);display:flex;flex-direction:column;gap:4px;max-width:300px}.version-note.saved{color:var(--olive);font-weight:800}.version-note.saved span{font-weight:400;font-size:12.5px;color:var(--ink-soft)}.warn-banner{margin-top:18px;background:var(--honey-soft);border:1px solid #f3dfa5;border-radius:14px;padding:13px 15px;font-size:13.5px;line-height:1.5;color:#6d500e}.header-actions{display:flex;align-items:center;gap:4px}.header-btn{position:relative}.header-btn .badge{position:absolute;top:1px;right:-1px;background:var(--tomato);color:#fff;font-size:11px;font-weight:800;border-radius:999px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:1.5px solid var(--flour);animation:badgePop .32s cubic-bezier(.34,1.56,.64,1)}@keyframes badgePop{0%{transform:scale(.4)}70%{transform:scale(1.25)}to{transform:scale(1)}}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#33261d80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:45;display:flex;justify-content:flex-end;animation:backdropIn .2s ease both}.cooklist-drawer{background:var(--flour);width:min(400px,92vw);height:100%;padding:18px 16px calc(18px + env(safe-area-inset-bottom));overflow-y:auto;display:flex;flex-direction:column;animation:slideInRight .22s ease;border-left:6px solid transparent;position:relative}.cooklist-drawer:before{content:"";position:absolute;left:-6px;top:0;bottom:0;width:6px;background:var(--gingham);background-size:10px 10px,10px 10px,auto}@keyframes slideInRight{0%{transform:translate(60px);opacity:.5}to{transform:translate(0);opacity:1}}.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.drawer-head h3{font-family:var(--font-display);font-size:19px}.drawer-title{display:inline-flex;align-items:center;gap:8px}.drawer-title .nav-icon{width:22px;height:22px}.drawer-title .nav-icon path{stroke:var(--tomato-deep);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.drawer-head .modal-close{position:static}.drawer-count{background:var(--tomato);color:#fff;font-family:var(--font-body);font-size:12.5px;font-weight:800;border-radius:999px;min-width:22px;height:22px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center}.drawer-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;color:var(--ink-soft);line-height:1.55;padding:20px 14px}.drawer-empty-pot{width:92px;height:92px;border-radius:50%;border:2px dashed #d9c3a3;display:flex;align-items:center;justify-content:center;animation:chefBob 3.4s ease-in-out infinite}.drawer-empty-pot .nav-icon{width:42px;height:42px}.drawer-empty-pot .nav-icon path{stroke:var(--ink-soft);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.drawer-list{display:flex;flex-direction:column;gap:10px;flex:1}.drawer-item{display:flex;gap:10px;background:var(--paper);border:1px solid var(--crust);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;align-items:flex-start;animation:drawerItemIn .32s ease both}@keyframes drawerItemIn{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}.drawer-item:nth-child(2){animation-delay:.05s}.drawer-item:nth-child(3){animation-delay:.1s}.drawer-item:nth-child(4){animation-delay:.15s}.drawer-item:nth-child(5){animation-delay:.2s}.drawer-item:nth-child(n+6){animation-delay:.25s}.drawer-emoji{font-size:24px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 28%,#fff 0%,var(--tomato-soft) 78%);border:1px solid var(--crust);border-radius:50%;flex-shrink:0}.drawer-item-body{flex:1;display:flex;flex-direction:column;gap:6px}.drawer-item-actions{display:flex;gap:6px;flex-wrap:wrap}.drawer-remove{padding:7px;border-radius:10px;transition:background .15s ease}.drawer-remove .nav-icon{width:19px;height:19px;display:block}.drawer-remove .nav-icon path{stroke:var(--ink-soft);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke .15s ease}.drawer-remove:hover .nav-icon path,.drawer-remove:active .nav-icon path{stroke:var(--red)}.drawer-remove:active{background:var(--red-soft)}.drawer-shop-btn{margin-top:14px}.cooklist-toggle{border:1.7px dashed var(--tomato);color:var(--tomato-deep);background:transparent}.cooklist-toggle.in{border-style:solid;border-color:var(--olive);background:var(--olive-soft);color:var(--olive)}.shop-view{flex:1;overflow-y:auto;padding:14px 18px calc(20px + env(safe-area-inset-bottom))}.shop-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.shop-header h2{font-family:var(--font-display);font-size:19px}.shop-count{font-size:13px;color:var(--ink-soft);font-weight:700}.shop-period{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;font-size:14px;font-weight:700}.shop-people{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px;font-size:14px;font-weight:700}.people-qty{background:var(--paper);border:1px solid var(--crust);box-shadow:var(--shadow)}.people-qty .qty-btn:disabled{opacity:.4}.people-qty .qty-value{min-width:78px}.segmented{display:flex;background:var(--paper);border:1px solid var(--crust);border-radius:999px;padding:3px;box-shadow:var(--shadow)}.segmented button{padding:7px 13px;border-radius:999px;font-size:13.5px;font-weight:700;color:var(--ink-soft)}.segmented button.active{background:var(--tomato);color:#fff}.shop-section-title{font-family:var(--font-display);margin:20px 0 6px;font-size:16px}.shop-section-title:after{content:"";display:block;width:50px;height:10px;margin-top:5px;border-radius:3px;background:var(--gingham);background-size:10px 10px,10px 10px,auto}.shop-hint{font-size:13px;color:var(--ink-soft);line-height:1.45;margin-bottom:8px}.shop-list{background:var(--paper);border:1px solid var(--crust);border-radius:var(--radius);box-shadow:var(--shadow);padding:4px 6px}.shop-row{display:flex;align-items:center;gap:11px;padding:10px;font-size:15px;cursor:pointer;border-radius:12px}.shop-row:active{background:var(--tomato-soft)}.shop-row input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:23px;height:23px;border-radius:50%;border:2px solid #d9c3a3;background:var(--paper);flex-shrink:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s ease,background .15s ease,transform .1s ease}.shop-row input[type=checkbox]:active{transform:scale(.88)}.shop-row input[type=checkbox]:checked{border-color:var(--tomato);background-color:var(--tomato);background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.5 12.6l4.2 4.3L18.5 8" fill="none" stroke="white" stroke-width="3.4" stroke-linecap="round" stroke-linejoin="round"/></svg>');background-size:15px 15px;background-position:center;background-repeat:no-repeat;animation:checkPop .28s cubic-bezier(.34,1.56,.64,1)}@keyframes checkPop{0%{transform:scale(.6)}65%{transform:scale(1.12)}to{transform:scale(1)}}.shop-row.off span{color:var(--ink-soft)}.shop-name{flex:1;min-width:0;transition:color .2s ease,opacity .2s ease}.shop-qty{display:flex;align-items:center;gap:6px;flex-shrink:0;background:var(--flour);border-radius:999px;padding:3px}.qty-btn{width:26px;height:26px;flex-shrink:0;border-radius:50%;background:var(--paper);border:1px solid var(--crust);box-shadow:var(--shadow);font-size:15px;font-weight:800;line-height:1;color:var(--tomato-deep);display:flex;align-items:center;justify-content:center}.qty-btn:active{background:var(--tomato);color:#fff}.qty-value{min-width:64px;text-align:center;font-size:12.5px;font-weight:800;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}.qty-unit{font-weight:600;color:var(--ink-soft)}.shop-qty-static{flex-shrink:0;font-size:12.5px;font-weight:700;color:var(--ink-soft);text-align:right}.shop-qty-static.buy-qty{background:var(--flour);border-radius:999px;padding:3px 9px;white-space:nowrap;color:var(--tomato-deep)}.shop-recipe-emoji{width:42px;height:42px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:22px;background:radial-gradient(circle at 32% 28%,#fff 0%,var(--tomato-soft) 78%);border:1px solid var(--crust);border-radius:50%}.shop-recipe{background:var(--paper);border:1px solid var(--crust);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px;margin-bottom:10px}.shop-row.recipe-head{font-size:15.5px}.shop-sublist{margin-left:26px;border-left:2px solid var(--crust);padding-left:4px}.shop-row.sub{padding:7px 10px;font-size:14px}.shop-row.sub input[type=checkbox]{width:21px;height:21px;background-size:13px 13px}.shop-row.sub.ticked .shop-name{color:var(--ink-soft);text-decoration:line-through;text-decoration-color:#7a67538c;text-decoration-thickness:1.5px;opacity:.75}.shop-row.sub.ticked .buy-qty{opacity:.55}
