:root{
  --bg:#EDF0EA; --surface:#FFFFFF; --surface-2:#F4F6F1; --ink:#16201A; --ink-2:#48564E; --muted:#6F7C74; --line:#D3DBD2;
  --accent:#E09A0B; --accent-ink:#7F5300;
  --herb:#2A6946; --herb-soft:#DCEBE0; --paprika:#AE441D; --paprika-soft:#F7E3DA; --egg:#B87E00;
  --panel:#18211C; --panel-2:#212C26; --panel-ink:#EEF2EC; --panel-muted:#9FACA4; --panel-line:#34423A;
  --glow:#FFB830; --glow-dim:#A98A4E;
  --chip-on:#16201A; --chip-on-ink:#F4F7F2;
  --shadow:0 1px 2px rgba(22,32,26,.06),0 10px 28px -14px rgba(22,32,26,.22);
  --f-display:"Bricolage Grotesque","Avenir Next","Segoe UI",system-ui,sans-serif;
  --f-body:"Figtree","Segoe UI",system-ui,-apple-system,sans-serif;
  --f-mono:"Chivo Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#0E1310; --surface:#161E19; --surface-2:#1B241E; --ink:#E6ECE7; --ink-2:#B2BDB6; --muted:#87938B; --line:#2B3730;
    --accent:#F0A81C; --accent-ink:#F4C35E;
    --herb:#6CC08F; --herb-soft:#1D3326; --paprika:#EE8A63; --paprika-soft:#3A2219; --egg:#E7B23A;
    --panel:#1A241E; --panel-2:#223029; --panel-ink:#EEF2EC; --panel-muted:#9FACA4; --panel-line:#34443B;
    --chip-on:#E6ECE7; --chip-on-ink:#0E1310;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 28px -14px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0E1310; --surface:#161E19; --surface-2:#1B241E; --ink:#E6ECE7; --ink-2:#B2BDB6; --muted:#87938B; --line:#2B3730;
  --accent:#F0A81C; --accent-ink:#F4C35E;
  --herb:#6CC08F; --herb-soft:#1D3326; --paprika:#EE8A63; --paprika-soft:#3A2219; --egg:#E7B23A;
  --panel:#1A241E; --panel-2:#223029; --panel-ink:#EEF2EC; --panel-muted:#9FACA4; --panel-line:#34443B;
  --chip-on:#E6ECE7; --chip-on-ink:#0E1310;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 28px -14px rgba(0,0,0,.6);
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font:400 15px/1.5 var(--f-body);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{max-width:1220px;margin:0 auto;padding-inline:max(16px,3vw);padding-block:18px 110px}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font:800 19px/1 var(--f-display);letter-spacing:-.01em}
.brand svg{width:30px;height:30px;flex:none}
.top-note{font:500 12px/1.3 var(--f-mono);color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.hero{padding-block:26px 22px;display:grid;gap:10px;max-width:760px}
.hero h1{margin:0;font:800 clamp(28px,4.4vw,46px)/1.04 var(--f-display);letter-spacing:-.025em;text-wrap:balance}
.hero h1 em{font-style:normal;color:var(--accent-ink)}
.hero p{margin:0;color:var(--ink-2);font-size:16.5px;max-width:60ch}

/* layout */
.layout{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:26px;align-items:start}
@media (max-width:900px){.layout{grid-template-columns:minmax(0,1fr)}}

/* pantry */
.pantry{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;display:grid;gap:16px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 14px);max-height:calc(100vh - 28px);overflow:auto;overscroll-behavior:contain}
@media (max-width:900px){.pantry{position:static;max-height:none;overflow:visible}}
.pantry-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.pantry-head h2{margin:0;font:700 20px/1.1 var(--f-display);letter-spacing:-.01em}
.count{font:700 13px/1 var(--f-mono);color:var(--ink-2)}
.linkbtn{background:none;border:0;padding:4px 2px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;font-size:13.5px}
.linkbtn:hover{color:var(--ink)}
.example{display:flex;gap:10px;align-items:flex-start;background:var(--surface-2);border:1px dashed var(--line);border-radius:12px;padding:10px 12px;font-size:13.5px;color:var(--ink-2)}
.example b{color:var(--ink)}
.search{display:flex;gap:8px}
.search input{flex:1;min-width:0;border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:10px 12px}
.search input::placeholder{color:var(--muted)}
.btn{border:1px solid var(--ink);background:var(--ink);color:var(--surface);border-radius:12px;padding:9px 14px;font-weight:600;white-space:nowrap}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.addhint{font-size:13px;color:var(--muted);margin-top:-8px}
.group{display:grid;gap:8px}
.group h3{margin:0;display:flex;justify-content:space-between;font:600 11.5px/1 var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.group h3 span{font-family:var(--f-mono);letter-spacing:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface-2);font:500 14px/1.2 var(--f-body);transition:background .15s,border-color .15s,color .15s}
.chip:hover{border-color:var(--ink-2)}
.chip[aria-pressed="true"],.chip.on{background:var(--chip-on);color:var(--chip-on-ink);border-color:var(--chip-on)}
.chip[aria-pressed="true"]::before,.chip.on::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--glow);box-shadow:0 0 6px var(--glow)}
.chip .x{margin-left:2px;margin-right:-4px;border:0;background:none;color:inherit;opacity:.7;font-size:15px;line-height:1;padding:0 2px}
.staples{font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:12px}

/* results */
.results{display:grid;gap:26px;min-width:0}
.fryer{background:var(--panel);color:var(--panel-ink);border-radius:20px;padding:20px;display:grid;gap:14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.fryer::after{content:"";position:absolute;inset:auto -40px -60px auto;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(255,184,48,.18),transparent 65%);pointer-events:none}
.fryer-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.fryer h2{margin:0;font:800 22px/1.1 var(--f-display);letter-spacing:-.015em}
.fryer p{margin:4px 0 0;color:var(--panel-muted);font-size:14px;max-width:56ch}
.led{font:700 12px/1 var(--f-mono);color:var(--glow);letter-spacing:.08em;text-transform:uppercase;display:inline-flex;align-items:center;gap:7px;padding-top:4px}
.led::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--glow);box-shadow:0 0 8px var(--glow)}
.led.off{color:var(--panel-muted)} .led.off::before{background:var(--panel-muted);box-shadow:none}
.controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:620px){.controls{grid-template-columns:1fr 1fr}.controls .note{grid-column:1/-1}}
.field{display:grid;gap:5px;font:600 11px/1 var(--f-body);letter-spacing:.08em;text-transform:uppercase;color:var(--panel-muted)}
.field select,.field input{background:var(--panel-2);border:1px solid var(--panel-line);color:var(--panel-ink);border-radius:10px;padding:9px 10px;font:500 14.5px/1.2 var(--f-body);letter-spacing:0;text-transform:none;width:100%;min-width:0}
.field input::placeholder{color:var(--panel-muted)}
.controls .note{grid-column:span 3}
@media (max-width:620px){.controls .note{grid-column:1/-1}}
.fryer-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.go{border:0;background:var(--glow);color:#1A1406;border-radius:12px;padding:11px 18px;font:700 15px/1 var(--f-body)}
.go:disabled{opacity:.45;cursor:not-allowed}
.stop{border:1px solid var(--panel-line);background:transparent;color:var(--panel-ink);border-radius:12px;padding:10px 14px;font-weight:600}
.ai-status{font-size:13.5px;color:var(--panel-muted)}
.heat{height:4px;border-radius:4px;background:var(--panel-2);overflow:hidden}
.heat i{display:block;height:100%;width:40%;background:linear-gradient(90deg,transparent,var(--glow),transparent);animation:heat 1.4s ease-in-out infinite}
@keyframes heat{from{transform:translateX(-100%)}to{transform:translateX(250%)}}

.filters{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;font:500 13.5px/1.2 var(--f-body)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.sec{display:grid;gap:12px}
.sec-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sec-head h2{margin:0;font:700 21px/1.1 var(--f-display);letter-spacing:-.01em}
.sec-head .n{font:700 13px/1 var(--f-mono);padding:4px 8px;border-radius:999px}
.sec-head .n.ready{background:var(--herb-soft);color:var(--herb)}
.sec-head .n.almost{background:var(--paprika-soft);color:var(--paprika)}
.sec-head p{margin:0;color:var(--muted);font-size:13.5px;flex-basis:100%}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:12px}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:14px;padding:18px;color:var(--ink-2)}

.card{display:flex;flex-direction:column;gap:10px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:15px;transition:border-color .15s,transform .15s,box-shadow .15s}
.card:hover{border-color:var(--ink-2);box-shadow:var(--shadow);transform:translateY(-1px)}
.card-meta{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.card h3{margin:0;font:700 17.5px/1.2 var(--f-display);letter-spacing:-.01em;text-wrap:balance}
.tags{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
.tag{font-size:12px;line-height:1;padding:5px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2)}
.tag.need{background:var(--paprika-soft);border-color:transparent;color:var(--paprika);font-weight:600}
.card .lbl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}

/* air fryer display */
.readout{display:inline-flex;align-self:flex-start;background:var(--panel);border-radius:9px;padding:6px 4px;border:1px solid var(--panel-line)}
.readout .ro{display:grid;gap:3px;padding:0 10px;font:700 15px/1 var(--f-mono);color:var(--glow);letter-spacing:.03em;text-shadow:0 0 8px rgba(255,184,48,.35);font-variant-numeric:tabular-nums}
.readout .ro + .ro{border-left:1px solid var(--panel-line)}
.readout small{font:500 9px/1 var(--f-mono);letter-spacing:.14em;color:var(--glow-dim);text-shadow:none}
.readout.big .ro{font-size:22px;padding:2px 14px}
.readout.big small{font-size:10px}

/* diet marks */
.diet{width:14px;height:14px;flex:none;border:1.6px solid currentColor;border-radius:3px;display:inline-grid;place-items:center}
.diet::after{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.diet.veg{color:var(--herb)} .diet.egg{color:var(--egg)}
.diet.nonveg{color:var(--paprika)} .diet.nonveg::after{border-radius:0;width:7px;height:6px;clip-path:polygon(50% 0,100% 100%,0 100%)}

/* recipe detail */
dialog{border:0;padding:0;border-radius:20px;width:min(660px,calc(100% - 24px));max-height:calc(100% - 40px);background:var(--surface);color:var(--ink);box-shadow:0 30px 80px -20px rgba(0,0,0,.45)}
dialog::backdrop{background:rgba(9,13,11,.55)}
dialog{overflow:hidden}
.dlg{display:grid;grid-template-rows:auto minmax(0,1fr);max-height:calc(100vh - 40px)}
[hidden]{display:none!important}
.card{cursor:pointer}
.dlg-bar{display:flex;justify-content:flex-end;gap:8px;padding:12px 12px 0}
.dlg-body{padding:4px 22px 24px;overflow:auto}
.detail{display:grid;gap:18px}
.detail h2{margin:4px 0 0;font:800 clamp(24px,4vw,32px)/1.08 var(--f-display);letter-spacing:-.02em;text-wrap:balance}
.detail h4{margin:0 0 8px;font:600 11.5px/1 var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.ing{list-style:none;margin:0;padding:0;display:grid}
.ing li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:15px}
.ing li:last-child{border-bottom:0}
.st{flex:none;font:600 11.5px/1 var(--f-body);padding:5px 8px;border-radius:999px;align-self:flex-start;white-space:nowrap}
.st.have{background:var(--herb-soft);color:var(--herb)}
.st.need{background:var(--paprika-soft);color:var(--paprika)}
.st.opt,.st.staple{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.steps{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:12px}
.steps li{counter-increment:s;display:grid;grid-template-columns:30px 1fr;gap:10px;font-size:15px;max-width:65ch}
.steps li::before{content:counter(s);font:700 13px/1 var(--f-mono);width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2)}
.tip{background:var(--surface-2);border-radius:12px;padding:12px 14px;font-size:14.5px;color:var(--ink-2)}
.tip b{color:var(--ink)}
.detail-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.preheat{font-size:12.5px;color:var(--muted)}
.ai-out{background:var(--surface);color:var(--ink);border-radius:16px;padding:20px;border:1px solid var(--line)}
.ai-badge{font:700 11px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}

/* mobile jump bar + toast */
.jump{position:fixed;left:0;right:0;bottom:0;z-index:5;display:none;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -8px 24px -16px rgba(0,0,0,.3)}
.jump span{font:700 13px/1.2 var(--f-mono);color:var(--ink-2)}
@media (max-width:900px){.jump{display:flex}}
.toast{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:9px 14px;border-radius:10px;font-size:14px;z-index:20;max-width:calc(100% - 32px)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
footer{margin-top:34px;color:var(--muted);font-size:12.5px;max-width:70ch}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}

/* ---- multi-page additions ---- */
a{color:inherit}
.sitenav{display:flex;flex-wrap:wrap;gap:7px;padding-block:12px 2px}
.sitenav a{font:600 13px/1 var(--f-mono);letter-spacing:.02em;color:var(--ink-2);text-decoration:none;padding:8px 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface)}
.sitenav a:hover{border-color:var(--ink-2);color:var(--ink)}
.sitenav a[aria-current="page"]{background:var(--chip-on);color:var(--chip-on-ink);border-color:var(--chip-on)}
.crumbs{font:500 12.5px/1 var(--f-mono);color:var(--muted);letter-spacing:.02em;padding-top:4px}
.crumbs a{color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.crumbs a:hover{color:var(--ink)}
.rhero{padding-block:22px 18px;display:grid;gap:12px;max-width:760px}
.rhero h1{margin:0;font:800 clamp(26px,4vw,40px)/1.08 var(--f-display);letter-spacing:-.02em;text-wrap:balance}
.rhero p{margin:0;color:var(--ink-2);font-size:16px;max-width:62ch}
.pill{display:inline-flex;align-items:center;gap:7px;font:600 12.5px/1 var(--f-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:7px 12px;width:fit-content}
.rlayout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:28px;align-items:start;margin-top:22px}
@media (max-width:820px){.rlayout{grid-template-columns:minmax(0,1fr)}}
.panel-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px}
.panel-card h2{margin:0 0 12px;font:700 18px/1.15 var(--f-display);letter-spacing:-.01em}
.ing-list{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.ing-list li{display:flex;gap:9px;align-items:baseline;font-size:14.5px;color:var(--ink)}
.ing-list li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none;margin-top:6px}
.ing-list li.opt{color:var(--ink-2)}
.ing-list li .opt-tag{font-size:11px;color:var(--muted);font-family:var(--f-mono)}
.steps-list{list-style:none;margin:0;padding:0;display:grid;gap:14px;counter-reset:step}
.steps-list li{display:flex;gap:13px;align-items:flex-start;font-size:15px;line-height:1.55}
.steps-list li::before{counter-increment:step;content:counter(step);flex:none;width:26px;height:26px;border-radius:50%;background:var(--panel);color:var(--glow);font:700 13px/26px var(--f-mono);text-align:center}
.tip-box{background:var(--surface-2);border:1px dashed var(--line);border-radius:12px;padding:12px 14px;font-size:14px;color:var(--ink-2)}
.tip-box b{color:var(--ink)}
.sticky-side{position:sticky;top:calc(env(safe-area-inset-top,0px) + 14px);display:grid;gap:16px}
.cta-panel{background:var(--panel);color:var(--panel-ink);border-radius:18px;padding:18px;display:grid;gap:10px}
.cta-panel p{margin:0;color:var(--panel-muted);font-size:13.5px}
.cta-panel a.btn{display:inline-block;text-align:center;text-decoration:none}
.related h2{font:700 16px/1.2 var(--f-display);margin:0 0 4px}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.rcard{display:block;text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px;font-size:13px;color:var(--ink);overflow:hidden}
.rcard:hover{border-color:var(--ink-2)}
.rcard b{display:block;font:700 14px/1.2 var(--f-display);margin-bottom:3px}
.rcard span{color:var(--muted);font:500 11px/1 var(--f-mono)}
.catintro{padding-block:22px 8px;display:grid;gap:10px;max-width:760px}
.catintro h1{margin:0;font:800 clamp(28px,4.4vw,42px)/1.06 var(--f-display);letter-spacing:-.02em}
.catintro p{margin:0;color:var(--ink-2);font-size:16px;max-width:62ch}
.catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:12px;margin-top:20px}
.site-footer{margin-top:40px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}
.site-footer a{color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.site-footer a:hover{color:var(--ink)}
.hero-photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:18px;margin-top:4px;box-shadow:var(--shadow);display:block}
.card-img{width:calc(100% + 30px);aspect-ratio:4/3;object-fit:cover;display:block;margin:-15px -15px 12px;border-radius:16px 16px 0 0}
