:root{--bg: #f7f8fa;--surface: #ffffff;--surface-sunk: #eef1f5;--surface-raised: #ffffff;--ink: #141a21;--ink-soft: #3f4a57;--muted: #6b7684;--line: #e2e6ec;--line-strong: #cbd2dc;--accent: #d97706;--accent-dark: #b45309;--accent-soft: #fef3e2;--accent-ink: #ffffff;--ok: #2f6b45;--ok-soft: #e6f2ea;--warn: #9a6b12;--danger: #b3261e;--danger-soft: #fdeceb;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--step-display: clamp(2rem, 1.4rem + 2.6vw, 3rem);--step-title: clamp(1.35rem, 1.1rem + 1.1vw, 1.85rem);--step-heading: clamp(1.05rem, .98rem + .35vw, 1.2rem);--step-body: 1rem;--step-small: .875rem;--step-tiny: .78rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(20, 26, 33, .06);--shadow: 0 1px 3px rgba(20, 26, 33, .08), 0 8px 24px rgba(20, 26, 33, .06);--shadow-lg: 0 2px 6px rgba(20, 26, 33, .1), 0 18px 48px rgba(20, 26, 33, .12);--tap: 44px;--ease: cubic-bezier(.22, .61, .36, 1);--fast: .14s;--slow: .26s}@media(prefers-color-scheme:dark){:root{--bg: #101317;--surface: #181c22;--surface-sunk: #14181d;--surface-raised: #1f242b;--ink: #eef1f5;--ink-soft: #c6ced9;--muted: #8d97a5;--line: #262c34;--line-strong: #37404b;--accent: #f59e0b;--accent-dark: #fbbf24;--accent-soft: #2a2115;--accent-ink: #101317;--ok: #6fbf8e;--ok-soft: #16241c;--warn: #d7a13f;--danger: #f0837c;--danger-soft: #2a1917;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 8px 24px rgba(0, 0, 0, .35);--shadow-lg: 0 2px 6px rgba(0, 0, 0, .55), 0 18px 48px rgba(0, 0, 0, .45)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}main{max-width:940px;margin:0 auto;padding:24px 20px 64px}h1{font-size:1.75rem;margin:0 0 4px;letter-spacing:-.02em}h2{font-size:1.1rem;margin:0 0 8px}h3{font-size:.95rem;margin:0 0 6px}.subtitle,.hint,.meta{color:var(--muted)}.hint{font-size:.85rem}.hint.warn{color:var(--warn)}.centered{text-align:center}.card{--card-pad: var(--space-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--card-pad)}@media(max-width:559px){.card{--card-pad: var(--space-4)}}.stack>*+*{margin-top:24px}.page-head{margin-block-end:var(--space-6)}.page-head h1{font-size:var(--step-display);line-height:1.08;letter-spacing:-.025em;margin:0 0 var(--space-2);text-wrap:balance}.page-head .subtitle{font-size:var(--step-body);color:var(--muted);margin:0;max-width:46ch}.page-head.row,.row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}@media(max-width:559px){.page-head.row{flex-direction:column-reverse;align-items:flex-start}}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(420px,100%)}.auth-card .subtitle{margin-block-end:0;max-width:34ch}.brand{font-size:var(--step-title);letter-spacing:-.02em;margin-block-end:var(--space-1)}.tabs{display:flex;gap:var(--space-1);margin:var(--space-5) 0 var(--space-4);background:var(--surface-sunk);padding:var(--space-1);border-radius:var(--radius-pill)}.tab{flex:1;min-height:var(--tap);padding:var(--space-2);border:0;background:transparent;border-radius:var(--radius-pill);color:var(--muted);font:inherit;font-size:var(--step-small);font-weight:600;cursor:pointer;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.tab:hover:not(.active){color:var(--ink)}.tab.active{background:var(--surface);color:var(--ink);font-weight:650;box-shadow:var(--shadow-sm)}.field{display:block;margin-bottom:14px}.field>span{display:block;font-size:.85rem;font-weight:600;margin-bottom:5px}input[type=text],input[type=email],input[type=password],select{width:100%;min-height:var(--tap);padding:var(--space-3) var(--space-4);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-sunk);color:var(--ink);font:inherit;font-size:max(1rem,var(--step-body));transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}input[type=text]:hover,input[type=email]:hover,input[type=password]:hover,select:hover{border-color:var(--accent)}::placeholder{color:var(--muted);opacity:1}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--muted);font-size:.8rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.google-signin{display:grid;place-items:center}.btn{min-height:var(--tap);padding:var(--space-3) var(--space-5);border-radius:var(--radius-pill);border:1px solid transparent;font:inherit;font-weight:650;cursor:pointer;transition:background var(--fast) var(--ease),transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),opacity var(--fast) var(--ease)}.btn:active:not(:disabled){transform:scale(.98)}.btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.btn.primary:hover:not(:disabled){background:var(--accent-dark);box-shadow:var(--shadow)}.btn.ghost{background:transparent;border-color:var(--line);color:var(--ink)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.full{width:100%}.link{background:none;border:0;padding:0;color:var(--accent);font:inherit;cursor:pointer;text-decoration:underline}.error{color:var(--danger);font-size:.9rem;margin:10px 0}.notice{background:color-mix(in srgb,var(--warn) 12%,transparent);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:8px;padding:12px 14px;font-size:.9rem;margin-bottom:20px}.navbar{position:sticky;inset-block-start:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);border-block-end:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-wrap:nowrap}.brand-small{font-weight:700;text-decoration:none;color:var(--ink)}.nav-links{display:flex;gap:var(--space-1);align-items:center;font-size:var(--step-small);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.nav-links::-webkit-scrollbar{display:none}.nav-links a,.nav-links .link{display:inline-flex;align-items:center;min-height:36px;padding-inline:var(--space-3);border-radius:var(--radius-pill);color:var(--muted);text-decoration:none;white-space:nowrap;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.nav-links a:hover,.nav-links .link:hover{color:var(--ink);background:var(--surface-sunk)}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-2);padding:0;margin:0 0 var(--space-2)}.tag{display:inline-flex;align-items:center;gap:var(--space-1);background:var(--surface-sunk);border:1px solid var(--line-strong);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);font-size:var(--step-small)}.tag button{width:26px;height:26px;display:grid;place-items:center;border:0;border-radius:50%;background:none;cursor:pointer;color:var(--muted);font-size:1.05rem;line-height:1;padding:0;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.tag button:hover{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}.tag.locked{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 40%,transparent);color:var(--ink);font-weight:600;padding-inline-end:var(--space-4)}.counter{display:block;margin-top:4px}.required{color:var(--accent);font-size:.8rem;font-weight:400}.optional{color:var(--muted);font-size:.8rem;font-weight:400}.checkbox{display:flex;gap:10px;align-items:flex-start}.checkbox small{display:block}.meal-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}@media(min-width:560px){.meal-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}}.meal-card{position:relative;display:flex;flex-direction:column;gap:var(--space-1);min-height:132px;padding:var(--space-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;text-align:start;font:inherit;color:inherit;overflow:hidden;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),border-color var(--fast) var(--ease)}.meal-card:before{content:"";position:absolute;inset-block-start:-40%;inset-inline-end:-30%;width:150px;height:150px;background:radial-gradient(circle at center,color-mix(in srgb,var(--accent) 22%,transparent) 0%,transparent 68%);opacity:.85;transition:transform var(--slow) var(--ease),opacity var(--slow) var(--ease)}.meal-card:hover,.meal-card:focus-visible{transform:translateY(-3px);border-color:var(--accent);box-shadow:var(--shadow)}.meal-card:hover:before,.meal-card:focus-visible:before{transform:scale(1.3);opacity:1}.meal-card:active{transform:translateY(0) scale(.985)}.meal-card>*{position:relative}.meal-card .emoji{font-size:1.9rem;line-height:1.1;margin-block-end:var(--space-2)}.meal-label{font-size:var(--step-heading);font-weight:650;letter-spacing:-.01em}.meal-blurb{font-size:var(--step-small);color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0d11a6;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:50;padding:var(--space-5);animation:backdrop-in var(--fast) var(--ease)}@keyframes backdrop-in{0%{opacity:0}}.modal{width:min(560px,100%);max-height:88vh;display:flex;flex-direction:column;padding:0;overflow:hidden;animation:modal-in var(--slow) var(--ease)}.modal-body{overflow-y:auto;padding:var(--card-pad);overscroll-behavior:contain}.modal-body>*+*{margin-block-start:var(--space-4)}@keyframes modal-in{0%{opacity:0;transform:translateY(12px) scale(.98)}}.modal>*+*{margin-block-start:var(--space-4)}@media(max-width:559px){.modal-backdrop{place-items:end stretch;padding:0}.modal{width:100%;max-height:92vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-in var(--slow) var(--ease)}@keyframes sheet-in{0%{transform:translateY(100%)}}}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:520px){.grid-2{grid-template-columns:1fr}}.mode-picker{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-picker legend{font-size:.85rem;font-weight:600;margin-bottom:6px}.mode{border:1px solid var(--line);border-radius:10px;padding:12px;cursor:pointer;display:block}.mode.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.mode input{margin-inline-end:6px}.mode small{display:block;color:var(--muted);font-size:.8rem}.modal-actions{flex-shrink:0;display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--card-pad);background:var(--surface);border-block-start:1px solid var(--line)}.modal-actions .btn.primary{flex:1 1 auto;max-width:60%}@media(max-width:559px){.modal-actions .btn.primary{max-width:none}.modal-actions{padding-block-end:max(var(--space-4),env(safe-area-inset-bottom,0px))}}.recipe-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.love{font-size:1.9rem;line-height:1;background:none;border:0;cursor:pointer;color:var(--muted);padding:0}.love.active{color:var(--accent)}.meal-photo{margin:0;border-radius:var(--radius);overflow:hidden;aspect-ratio:4 / 3;background:color-mix(in srgb,var(--muted) 12%,transparent)}.meal-photo.hero{position:relative;margin-block-start:calc(var(--card-pad, var(--space-5)) * -1);margin-inline:calc(var(--card-pad, var(--space-5)) * -1);margin-block-end:var(--space-5);border-radius:var(--radius-lg) var(--radius-lg) 0 0;aspect-ratio:3 / 2}@media(min-width:700px){.meal-photo.hero{aspect-ratio:16 / 9}}.meal-photo img,.meal-photo-placeholder{width:100%;height:100%;display:block}.meal-photo img{object-fit:cover}.meal-photo-placeholder{display:grid;place-items:center;color:var(--muted);font-size:.88rem;animation:photo-pulse 1.8s ease-in-out infinite}@keyframes photo-pulse{50%{background:color-mix(in srgb,var(--muted) 20%,transparent)}}@media(prefers-reduced-motion:reduce){.meal-photo-placeholder{animation:none}}.safety-note{background:color-mix(in srgb,var(--ok) 12%,transparent);border-left:3px solid var(--ok);padding:10px 14px;border-radius:6px;font-size:.88rem}.macros{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);padding:0;margin:var(--space-5) 0;text-align:center}.macros li{background:var(--surface-sunk);border-radius:var(--radius);padding:var(--space-3) var(--space-2)}.macros strong{display:block;font-size:var(--step-heading);font-weight:650}.macros span{font-size:var(--step-tiny);color:var(--muted)}.recipe section{margin-block-start:var(--space-6)}.recipe section h2{font-size:var(--step-heading);letter-spacing:-.01em;margin-block-end:var(--space-3)}.ingredients,.instructions{padding-inline-start:var(--space-5);font-size:1.05rem;line-height:1.65}.ingredients li,.instructions li{margin-block-end:var(--space-3);padding-inline-start:var(--space-1)}.ingredients li::marker{color:var(--accent)}.instructions li::marker{color:var(--accent);font-weight:700}.instructions li{margin-block-end:var(--space-4)}.tip{background:var(--bg);border-radius:8px;padding:14px;margin-top:20px}.tip p,.tip h3{margin:0}.pairing{font-size:.9rem}.recipe-actions{display:flex;gap:10px;margin-top:28px}.recipe-actions .btn{flex:1}.quota-badge{font-size:.82rem;padding:5px 11px;border-radius:999px;background:var(--bg);border:1px solid var(--line);color:var(--muted);white-space:nowrap}.quota-badge.empty{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent)}.quota-badge.unlimited{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 35%,transparent)}.plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-bottom:24px}.plan .price .amount{font-size:2rem;font-weight:700}.plan .price .per{color:var(--muted)}.was{font-size:.85rem;color:var(--muted);margin-top:-6px}.save{color:var(--ok);font-weight:600}.plan-desc{font-size:.9rem}.limit{font-weight:600;font-size:.9rem}.saved-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-3)}.saved-item a{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);text-decoration:none;color:inherit;transition:transform var(--fast) var(--ease),border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.saved-item a:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow)}.saved-item a:active{transform:translateY(0) scale(.995)}.saved-thumb{flex:0 0 auto;width:76px;height:76px;border-radius:var(--radius);overflow:hidden;background:var(--surface-sunk);display:grid;place-items:center}.saved-thumb img{width:100%;height:100%;object-fit:cover;display:block}.saved-thumb-fallback{font-size:1.6rem;opacity:.5}.saved-text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.saved-text strong{font-size:var(--step-heading);font-weight:650;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.saved-item .meta{font-size:var(--step-small)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center;padding-block:var(--space-7)}.empty-state h2{margin:0;font-size:var(--step-title);letter-spacing:-.02em}.empty-state .hint{margin:0;max-width:34ch}.empty-emoji{font-size:2.4rem;opacity:.6}.empty-state .btn{display:inline-flex;align-items:center;text-decoration:none;margin-block-start:var(--space-2)}.legal-body{line-height:1.7}.legal-body .lead{font-size:1.05rem;margin-top:0}.legal-body section{margin-top:28px}.legal-body h2{font-size:1.05rem;border-bottom:1px solid var(--line);padding-bottom:6px}.legal-body ul{padding-inline-start:20px}.legal-body li{margin-bottom:6px}.notice.draft{background:color-mix(in srgb,var(--danger) 10%,transparent);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.gift{margin-bottom:24px}.gift h2{margin-top:0;font-size:1.05rem}.gift-form{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.gift-form input{flex:1 1 200px}.success{color:var(--ok);font-size:.9rem;margin:10px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.account-actions{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 8px}.account-actions .btn{display:inline-flex;align-items:center;text-decoration:none}.credit-pack{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:24px}.credit-pack h2{margin-top:0;font-size:1.05rem}.credit-pack .plan-desc{margin-bottom:0}.credit-pack-buy{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.plan.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.plan-badge{display:inline-block;align-self:flex-start;background:var(--accent);color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:999px;margin:0 0 8px}.meal-group+.meal-group{margin-top:32px}.meal-group-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--line)}.meal-group-head h2{margin:0;font-size:1rem}.meal-group-head .hint{margin:0}.tag.allergen{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 40%,transparent);font-weight:600}.tag.allergen:before{content:"🛡";font-size:.9em;margin-inline-end:var(--space-1)}.lang-toggle{text-decoration:none;font-weight:650}[dir=rtl] .meal-card .emoji,[dir=rtl] .empty-emoji,[dir=rtl] .saved-thumb-fallback{transform:none}[dir=rtl] .back-arrow{display:inline-block;transform:scaleX(-1)}[dir=rtl] .macros strong,[dir=rtl] .counter,[dir=rtl] .price .amount{unicode-bidi:isolate}.navbar{padding-block-start:max(var(--space-3),env(safe-area-inset-top,0px));padding-inline-start:max(var(--space-5),env(safe-area-inset-left,0px));padding-inline-end:max(var(--space-5),env(safe-area-inset-right,0px))}main{padding-block-end:max(64px,calc(env(safe-area-inset-bottom,0px) + var(--space-6)));padding-inline-start:max(20px,env(safe-area-inset-left,0px));padding-inline-end:max(20px,env(safe-area-inset-right,0px))}@media(display-mode:standalone){body{overscroll-behavior-y:none}}.install-prompt{display:inline-flex;align-items:center;gap:var(--space-2);min-height:36px;padding-inline:var(--space-3);border:1px solid var(--accent);border-radius:var(--radius-pill);background:transparent;color:var(--accent);font:inherit;font-size:var(--step-small);font-weight:650;white-space:nowrap;cursor:pointer;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.install-prompt:hover{background:var(--accent);color:var(--accent-ink)}.checkbox-field{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3);align-items:start;margin-block:var(--space-4)}.checkbox-field>span{display:inline;font-size:var(--step-small);font-weight:400;line-height:1.5;margin:0}.checkbox-field input[type=checkbox]{inline-size:1.15rem;block-size:1.15rem;margin-block-start:.15rem;accent-color:var(--accent);flex-shrink:0}.link-button{background:none;border:0;padding:0;font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}.link-button:hover{text-decoration:none}.modal-head{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--card-pad);background:var(--surface);border-block-end:1px solid var(--line)}.modal-head h2{margin:0;font-size:var(--step-heading)}
