:root{--ink:#102A2A;--ink2:#3C5555;--muted:#6B7F7E;--bg:#FFFFFF;--mint:#DDF0EA;--mint2:#C3E6DA;--tomato:#E8452C;--tomato-dk:#C9341D;--yolk:#FFC93C;--line:#DCE6E3;
  --serif:"Young Serif",Georgia,serif;--sans:"Figtree",system-ui,sans-serif;--k-ink:var(--ink);--k-bg:#fff;--k-accent:var(--tomato);--k-font:var(--sans)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--tomato);outline-offset:2px}
h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-.01em;line-height:1.12;margin:0 0 .4em}
h1{font-size:clamp(1.8rem,6vw,2.4rem)}h2{font-size:1.35rem;margin-top:1.4em}
.sub{color:var(--ink2);margin:0 0 18px}.hint{color:var(--muted);font-size:.88rem;margin:6px 0}
/* app shell */
.bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font:400 1.25rem var(--serif)}.logo svg{width:28px;height:28px}
.icon-btn{border:0;background:var(--mint);width:40px;height:40px;border-radius:50%;display:grid;place-items:center;cursor:pointer}
.icon-btn svg,.tabs svg,.snap svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
main{max-width:680px;margin:0 auto;padding:22px 16px 110px}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;justify-content:center;gap:4px;background:#fff;border-top:1px solid var(--line);padding:6px 8px;padding-bottom:max(6px,env(safe-area-inset-bottom))}
.tabs button{position:relative;flex:1;max-width:160px;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.78rem;font-weight:600;color:var(--muted);padding:6px;border-radius:12px;cursor:pointer}
.tabs button[aria-current]{color:var(--ink);background:var(--mint)}
.badge{position:absolute;top:2px;right:calc(50% - 22px);background:var(--tomato);color:#fff;border-radius:10px;font-size:.7rem;padding:0 6px;line-height:16px}
/* step 1 */
.snap{position:relative;display:flex;align-items:center;gap:14px;background:var(--ink);color:#fff;border-radius:18px;padding:18px 20px;cursor:pointer}
.snap input{position:absolute;inset:0;opacity:0;cursor:pointer}.snap:focus-within{outline:3px solid var(--tomato);outline-offset:2px}
.snap svg{width:34px;height:34px;flex:none;stroke:var(--yolk)}
.snap span{display:flex;flex-direction:column}.snap b{font-size:1.1rem}.snap small{color:#B9D3CD}
.add{display:flex;gap:8px;margin:14px 0 4px}
.add input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;font:inherit;background:#fff;color:var(--ink)}
.add input:focus{outline:none;border-color:var(--ink)}
.add button{width:48px;border:0;border-radius:14px;background:var(--mint);font-size:1.5rem;cursor:pointer}
.chips{list-style:none;padding:0;margin:10px 0 18px;display:flex;flex-wrap:wrap;gap:8px}
.chip{display:flex;align-items:center;gap:2px;background:#FFF6DA;border:1.5px solid #F4DE9A;border-radius:999px;padding:3px 4px 3px 4px;font-weight:500}
.chip.soon{background:var(--yolk);border-color:#E9B21F}
.chip small{color:var(--ink2);font-weight:400}
.chip .star,.chip .x{border:0;background:none;width:28px;height:28px;border-radius:50%;cursor:pointer;line-height:1;color:#C9B26A;font-size:15px}
.chip.soon .star{color:var(--tomato)}.chip .x{color:var(--ink2);font-size:18px}.chip span{padding:0 2px}
.prefs{background:var(--mint);border-radius:16px;padding:12px 16px;margin-bottom:16px}
.prefs summary{cursor:pointer;font-weight:600}.prefs summary span{font-weight:400;color:var(--ink2)}
.pref-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.pref-grid label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600;color:var(--ink2)}
.pref-grid select,.pref-grid input:not([type=checkbox]){border:1.5px solid var(--mint2);border-radius:10px;padding:9px 10px;font:inherit;background:#fff;color:var(--ink)}
.pref-grid .check{flex-direction:row;align-items:center;gap:8px;grid-column:1/-1}
.cta{display:block;width:100%;border:0;border-radius:16px;background:var(--tomato);color:#fff;font-weight:700;font-size:1.05rem;padding:16px;cursor:pointer}
.cta:hover{background:var(--tomato-dk)}.cta:disabled{background:#E4E9E8;color:var(--muted);cursor:default}
.ghost{border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:11px 16px;font-weight:600;cursor:pointer}
.quota{color:var(--muted);font-size:.88rem;text-align:center;margin-top:10px}
.link{border:0;background:none;padding:0;color:var(--tomato);font-weight:600;text-decoration:underline;cursor:pointer}
.back{border:0;background:none;color:var(--ink2);font-weight:600;padding:4px 0;margin-bottom:10px;cursor:pointer}.back::before{content:"‹ ";font-size:1.2em}
/* ideas */
.ideas{display:flex;flex-direction:column;gap:12px;margin:12px 0 18px}
.idea{text-align:left;border:1.5px solid var(--line);background:#fff;border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:4px;cursor:pointer}
.idea:hover{border-color:var(--ink)}
.idea b{font:400 1.25rem/1.2 var(--serif)}.idea-sum{color:var(--ink2)}
.idea-top{display:flex;gap:10px;font-size:.8rem;font-weight:700}.mins{color:var(--ink)}.diff{text-transform:capitalize;color:var(--muted)}
.need{font-size:.85rem;color:var(--tomato-dk);font-weight:600}.need.ok{color:#2B7A57}
/* recipe */
.intro{color:var(--ink2);font-size:1.05rem}
.meta{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.meta span{background:var(--mint);border-radius:999px;padding:3px 12px;font-size:.88rem;font-weight:600}
.r-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.pill{border:1.5px solid var(--ink);background:#fff;border-radius:999px;padding:8px 16px;font-weight:600;cursor:pointer}
.pill.dark{background:var(--ink);color:#fff}.pill.danger{border-color:#E5B4AC;color:var(--tomato-dk)}.pill:disabled{opacity:.6}
.ing{list-style:none;padding:0;margin:0;border-top:1px solid var(--line)}
.ing li{display:flex;justify-content:space-between;gap:12px;padding:9px 2px;border-bottom:1px solid var(--line)}
.ing .qty{color:var(--ink2);text-align:right}.ing .miss span:first-child::after{content:" · to buy";color:var(--tomato-dk);font-size:.82rem;font-weight:600}
.steps{padding-left:0;list-style:none;counter-reset:s;margin:0}
.steps li{counter-increment:s;position:relative;padding:10px 0 10px 44px;border-bottom:1px dashed var(--line)}
.steps li::before{content:counter(s);position:absolute;left:0;top:9px;width:30px;height:30px;border-radius:50%;background:var(--yolk);display:grid;place-items:center;font-weight:700;font-size:.9rem}
.tips li{margin:5px 0}.nutri{color:var(--muted);font-size:.88rem;margin-top:18px}
/* saved */
.saved-item{border:1.5px solid var(--line);border-radius:16px;margin-bottom:10px;padding:0 16px}
.saved-item summary{cursor:pointer;padding:14px 0;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.saved-item summary b{font:400 1.1rem var(--serif)}.saved-item summary small{color:var(--muted)}
.saved-item .recipe{padding-bottom:16px}.saved-item .recipe h1{font-size:1.5rem}
.empty{color:var(--muted)}
/* shopping */
.shop{list-style:none;padding:0;margin:10px 0}
.shop li{border-bottom:1px solid var(--line)}.shop label{display:flex;gap:12px;align-items:center;padding:12px 2px;cursor:pointer}
.shop input{width:22px;height:22px;accent-color:var(--tomato)}.shop .done span{text-decoration:line-through;color:var(--muted)}
.shop-actions{display:flex;gap:10px;flex-wrap:wrap}
/* busy overlay */
.busy{position:fixed;inset:0;z-index:20;background:rgba(255,255,255,.88);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;font-weight:600}
.busy[hidden]{display:none}
.pan{width:70px;height:70px;border-radius:50%;background:var(--ink);position:relative}
.pan::after{content:"";position:absolute;width:22px;height:22px;border-radius:50%;background:var(--yolk);left:24px;top:24px;box-shadow:0 0 0 7px #fff}
@media(prefers-reduced-motion:no-preference){.pan{animation:toss 1.1s ease-in-out infinite}}
@keyframes toss{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg) translateY(-6px)}}
/* settings + cook mode */
.field{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:.9rem;margin:10px 0}
.field input{border:1.5px solid var(--line);border-radius:10px;padding:10px;font:inherit;font-weight:400}
.kit-modal hr{border:0;border-top:1px solid var(--line);margin:18px 0}
.kit-modal .cta{margin-top:10px}.kit-modal .ghost{width:100%}
.cook-modal{max-width:min(96vw,640px)}
.cook-n{color:var(--muted);font-weight:700;margin:4px 0 8px}.cook-step{font:400 1.5rem/1.4 var(--serif);min-height:7em}
.cook-nav{display:grid;grid-template-columns:1fr 2fr;gap:10px}.cook-nav .ghost{width:auto}
.kit-toast{bottom:calc(84px + env(safe-area-inset-bottom))}
