@font-face{font-family:"Atkinson Hyperlegible";font-weight:400;font-style:normal;font-display:swap;src:url(fonts/atkinson-hyperlegible-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Atkinson Hyperlegible";font-weight:400;font-style:italic;font-display:swap;src:url(fonts/atkinson-hyperlegible-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Atkinson Hyperlegible";font-weight:700;font-style:normal;font-display:swap;src:url(fonts/atkinson-hyperlegible-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Bricolage Grotesque";font-weight:200 800;font-style:normal;font-display:swap;src:url(fonts/bricolage-grotesque-latin-wght-normal.woff2) format("woff2")}

:root{
  --bg:#F3F5F3;--surface:#fff;--ink:#101A26;--mute:#5A6978;--line:#D9E0E6;
  --brand:#1F4E96;--brand-ink:#fff;--brand-soft:#E3EBF6;
  --amber:#F2A81D;--amber-soft:#FCEFD2;--alarm:#D93A2F;
  --r:14px;--tab-h:64px;--cooknav-h:92px;
  --body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --display:"Bricolage Grotesque","Atkinson Hyperlegible",system-ui,sans-serif;
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){:root{--bg:#0F141A;--surface:#18202A;--ink:#E9EEF3;--mute:#9AA9B8;--line:#2A3441;--brand:#7FA8EC;--brand-ink:#0B1626;--brand-soft:#1C2A3F;--amber-soft:#3A2D10}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.55 var(--body);padding-bottom:calc(var(--tab-h) + 24px)}
body.cooking{overflow:hidden}
h1,h2,h3{font-family:var(--display);line-height:1.15;margin:0}
a{color:var(--brand)}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:8px 16px}
button:hover:not(:disabled){border-color:var(--brand)}
button:disabled{opacity:.5;cursor:default}
button.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);font-weight:700}
button.quiet{border-color:transparent;background:transparent;color:var(--mute)}
:focus-visible{outline:3px solid var(--amber);outline-offset:2px}
svg.i{width:1.25em;height:1.25em;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* top bar + tab bar */
.topbar{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar>div{max-width:1100px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font:700 24px/1 var(--display);letter-spacing:-.01em}
.brand img{width:36px;height:36px;border-radius:9px}
.topnav{display:flex;gap:4px;flex:1}
.topnav a{padding:8px 14px;border-radius:999px;text-decoration:none;color:var(--mute);font-weight:700}
.topnav a[aria-current=page]{background:var(--brand-soft);color:var(--brand)}
.langbtn{min-height:36px;padding:4px 14px;font-weight:700}
.tabbar{display:none}
@media(max-width:720px){
  .topnav,.whoami{display:none}.topbar>div{justify-content:space-between}
  .tabbar{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;height:var(--tab-h);z-index:6;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
  body.cooking .tabbar{display:none}
  .tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--mute);font-size:13px;font-weight:700}
  .tabbar a[aria-current=page]{color:var(--brand)}
  .tabbar svg.i{width:26px;height:26px}
}

main{max-width:1100px;margin:0 auto;padding:20px 16px}
.err{color:var(--alarm);margin:8px 0}
.muted{color:var(--mute)}

/* home */
.finder{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:22px}
.field{display:flex;gap:8px}
.field input{flex:1;min-width:0;min-height:48px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.field button{min-height:48px}
.count{margin:0 0 12px;color:var(--mute)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}
.rcard{display:block;text-decoration:none;color:inherit}
.rcard .pic{aspect-ratio:4/3;border-radius:var(--r);background:var(--tile,var(--brand)) center/cover;display:grid;place-items:center;color:#fff;font:700 64px var(--display);overflow:hidden}
.rcard b{display:block;margin-top:10px;font:600 18px/1.25 var(--display)}
.rcard:hover b{color:var(--brand)}
.rcard small{color:var(--mute)}
.empty{max-width:420px;margin:56px auto;text-align:center;color:var(--mute)}
.empty img{width:72px;height:72px;border-radius:18px;margin-bottom:12px}

/* recipe */
.back{display:inline-block;margin-bottom:12px;text-decoration:none;font-weight:700}
.hero{width:100%;height:clamp(180px,34vw,340px);object-fit:cover;border-radius:var(--r);display:block}
.rtitle{margin:18px 0 6px;font-size:clamp(28px,5vw,44px);font-weight:700;letter-spacing:-.015em}
.rdesc{max-width:68ch;color:var(--mute);margin:6px 0 0}
.facts{display:flex;flex-wrap:wrap;margin:18px 0}
.fact{padding:2px 22px 2px 0;margin-right:22px;border-right:1px solid var(--line)}
.fact:last-child{border-right:0}
.fact span{display:block;color:var(--mute);font-size:14px}
.fact b{font:600 22px/1.2 var(--display)}
.src{align-self:center;color:var(--mute);font-size:15px}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 26px}
.cta .primary{min-height:54px;padding:10px 28px;font-size:19px}
.rbody{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:40px;align-items:start}
.rbody aside{position:sticky;top:76px;max-height:calc(100vh - 92px);overflow:auto;padding-right:4px}
@media(max-width:820px){.rbody{grid-template-columns:1fr;gap:12px}.rbody aside{position:static;max-height:none}}
h2.sec{font-size:22px;font-weight:650;margin:0 0 10px}
.scaler{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;margin-bottom:12px}
.scaler b{margin-right:auto;font-weight:700}
.scaler .step{width:44px;padding:0;font-size:24px;line-height:1;border-radius:50%}
.scaler .val{min-width:2.4ch;text-align:center;font:700 26px var(--display)}
.scaler small{color:var(--mute);flex-basis:100%}
.scaler .mult.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
ul.ing{list-style:none;margin:0;padding:0}
ul.ing li{border-bottom:1px solid var(--line)}
ul.ing label{display:flex;gap:12px;align-items:flex-start;padding:11px 2px;cursor:pointer}
ul.ing input{width:22px;height:22px;margin-top:2px;accent-color:var(--brand);flex:none}
ul.ing input:checked+span{color:var(--mute);text-decoration:line-through}
ol.steps{list-style:none;padding:0;margin:0;counter-reset:s}
ol.steps li{counter-increment:s;position:relative;padding:0 0 22px 58px;max-width:68ch}
ol.steps li::before{content:counter(s);position:absolute;left:0;top:-4px;font:700 36px/1 var(--display);color:var(--brand)}
.dur{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:2px 12px;margin:0 2px;border-radius:999px;border:1.5px solid var(--amber);background:var(--amber-soft);color:var(--ink);font-weight:700;font-size:.92em;vertical-align:baseline}
.dur:hover{background:var(--amber);color:#2A1A00;border-color:var(--amber)}
.dur.started{background:var(--amber);color:#2A1A00}
textarea{width:100%;min-height:96px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);resize:vertical}

/* lists + import */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.tabs button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
ul.items{list-style:none;padding:0;margin:0}
ul.items li{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line)}
ul.items li.done .n{text-decoration:line-through;color:var(--mute)}
ul.items .n{flex:1}ul.items small{color:var(--mute);display:block}
ul.items input[type=checkbox]{width:24px;height:24px;accent-color:var(--brand)}
ul.items .x{border:0;background:none;color:var(--mute);min-width:44px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;max-width:540px}
.panel label{display:block;margin:12px 0 4px;color:var(--mute);font-size:15px}
.panel input{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.bar{height:12px;background:var(--line);border-radius:6px;overflow:hidden;margin:12px 0}
.bar>i{display:block;height:100%;background:var(--brand);width:0;transition:width .3s}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:var(--brand-soft);color:var(--brand);border-radius:999px;padding:3px 12px;font-weight:700;font-size:15px}
.chip.bad{background:#F8DAD7;color:#8E1F17}

/* footer */
footer.about{max-width:1100px;margin:0 auto;padding:8px 16px;color:var(--mute);font-size:14px;display:flex;flex-wrap:wrap;gap:4px 18px;align-items:center}
footer.about button{min-height:32px;padding:2px 12px;font-size:14px}

/* timers dock */
#dock{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tab-h) + 12px);z-index:30;width:min(680px,calc(100vw - 20px));display:flex;flex-direction:column;gap:8px;pointer-events:none}
#dock>*{pointer-events:auto}
body.cooking #dock{bottom:calc(var(--cooknav-h) + 10px)}
@media(min-width:721px){#dock{bottom:16px}body.cooking #dock{bottom:calc(var(--cooknav-h) + 10px)}}
.tcard{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:10px 12px;box-shadow:0 8px 28px rgb(0 0 0/.16)}
.tcard .ring{width:62px;height:62px;transform:rotate(-90deg)}
.tcard .trk{fill:none;stroke:var(--line);stroke-width:4}
.tcard .arc{fill:none;stroke:var(--amber);stroke-width:4;stroke-linecap:round;transition:stroke-dashoffset .25s linear}
.tcard.paused .arc{stroke:var(--mute)}
.tcard .clock{font:700 34px/1 var(--display);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.tcard .lbl{color:var(--mute);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:34vw}
.tcard .btns{display:flex;gap:6px}
.tcard .btns button{min-width:44px;padding:4px 10px;font-weight:700}
.tcard.done{background:var(--alarm);border-color:var(--alarm);color:#fff}
.tcard.done .lbl{color:#fff;opacity:.9}.tcard.done .trk{stroke:rgb(255 255 255/.35)}.tcard.done .arc{stroke:#fff}
.tcard.done button{background:#fff;color:#8E1F17;border-color:#fff}
@media(prefers-reduced-motion:no-preference){.tcard.done:not(.silenced){animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 8px rgb(217 58 47/.35)}}}

/* cook mode */
#cook{position:fixed;inset:0;z-index:20;background:var(--bg);display:none;flex-direction:column}
#cook.on{display:flex}
.cook-top{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.cook-top .ttl{flex:1;min-width:0;font:600 18px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cook-top button{min-width:48px;min-height:48px}
.segs{display:flex;gap:4px;padding:10px 14px 0}
.segs i{flex:1;height:6px;border-radius:3px;background:var(--line)}.segs i.on{background:var(--brand)}.segs i.cur{background:var(--amber)}
.cook-main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr)}
.cook-ing{overflow:auto;padding:16px 16px 140px;border-right:1px solid var(--line)}
.cook-step{overflow:auto;padding:24px clamp(18px,5vw,64px) 160px;display:flex;flex-direction:column;justify-content:center}
.cook-step .num{font:700 20px var(--display);color:var(--brand);margin-bottom:10px}
.cook-step .txt{font-size:clamp(26px,4.4vw,46px);line-height:1.28;max-width:30ch;font-weight:400}
.cook-step .dur{font-size:.7em;min-height:46px;padding:4px 16px}
.cook-nav{display:flex;gap:12px;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg);min-height:var(--cooknav-h)}
.cook-nav button{flex:1;font-size:20px;font-weight:700;min-height:64px;border-radius:16px}
.cook-nav .primary{flex:2}
.addtimer{position:absolute;right:14px;top:70px;z-index:3;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:0 12px 32px rgb(0 0 0/.2);width:min(320px,calc(100vw - 28px))}
.addtimer .presets{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0}
.addtimer form{display:flex;gap:8px}.addtimer input{flex:1;min-width:0;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
@media(max-width:820px){
  .cook-main{grid-template-columns:1fr}
  .cook-ing{display:none;position:absolute;left:0;right:0;bottom:var(--cooknav-h);max-height:62%;z-index:2;background:var(--surface);border-top:1px solid var(--line);border-right:0;border-radius:20px 20px 0 0;box-shadow:0 -10px 30px rgb(0 0 0/.18);padding-bottom:24px}
  .cook-ing.open{display:block}
  .cook-step{justify-content:flex-start;padding-top:20px}
}
@media(min-width:821px){.cook-ing{display:block}#cookIngBtn{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}


/* ---- accounts, sharing, lists by aisle, meal plan ---- */
.whoami a{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;text-decoration:none;color:var(--mute);font-weight:700}
.whoami a[aria-current=page]{background:var(--brand-soft);color:var(--brand)}
body.auth .topnav,body.auth .whoami,body.auth .tabbar,body.auth #foot,body.auth .topbar .langbtn{display:none}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.wrap{align-items:flex-end}
.stack>*+*{margin-top:8px}
.ok{color:#1B7F4B}.err{color:var(--alarm)}
code{font:600 15px ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--brand-soft);color:var(--ink);padding:2px 8px;border-radius:8px;word-break:break-all}
input:not([type=checkbox]):not([type=radio]),select{min-height:46px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);width:100%;max-width:100%}
.row>input:not([type=checkbox]),.row>select{flex:1;width:auto;min-width:0}
.field input{background:var(--surface)}
.panel{max-width:none}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:18px;align-items:start}
.panel .row{margin-top:10px}
.panel h3.sub,.sheet h3.sub{font-size:18px;margin:16px 0 2px}
.wide{width:100%}
.authcard{max-width:420px;margin:6vh auto 0;text-align:center}
.authcard img{border-radius:18px}.authcard h1{font-size:32px;margin:12px 0 6px}
.authcard .panel{text-align:left;margin:16px 0}
.authcard .panel .wide{margin-top:14px}
.chip.soft{background:var(--bg);border:1px solid var(--line);color:var(--ink);font-weight:400}
.chip .xs{min-height:22px;padding:0 6px;border:0;background:none;font-size:18px;line-height:1;color:var(--mute)}
.hh{border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0;background:var(--bg)}
ul.plain{list-style:none;margin:0;padding:0}ul.plain li{padding:6px 0;border-bottom:1px solid var(--line)}
.reveal{background:var(--amber-soft);border:1px solid var(--amber);border-radius:12px;padding:12px;margin:8px 0}
.pick{display:flex;align-items:center;gap:10px;padding:8px 0;cursor:pointer}
.pick input{width:22px;height:22px;accent-color:var(--brand)}
fieldset{border:1px solid var(--line);border-radius:12px;margin:10px 0;padding:6px 14px 8px}legend{padding:0 6px;color:var(--mute);font-size:15px}
.sharedline{margin:-12px 0 22px;font-size:15px}
.btnlike{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);text-decoration:none;font-weight:700}

/* modal sheet */
.modal{position:fixed;inset:0;z-index:50;background:rgb(10 18 28/.55);display:flex;align-items:center;justify-content:center;padding:16px}
.sheet{background:var(--surface);border-radius:20px;padding:20px;width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 24px 60px rgb(0 0 0/.35)}
.sheet label,.panel label:not(.pick):not(.rule){display:block;margin:10px 0 4px;color:var(--mute);font-size:15px}
.sheet .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:600px){.modal{align-items:flex-end;padding:0}.sheet{border-radius:20px 20px 0 0;max-height:92vh;padding-bottom:calc(20px + env(safe-area-inset-bottom))}}

/* lists by aisle */
button.linklike{border:0;background:none;padding:0;min-height:44px;text-align:left;font:inherit;cursor:pointer}
button.linklike:hover{color:var(--brand)}
ul.items .qty{color:var(--brand);font-weight:700;margin-left:4px}
ul.items small{display:block;font-weight:400}
.listhead{margin:4px 0 10px}
.filters{margin:6px 0 4px}
.fchip{min-height:40px;border-radius:999px;padding:4px 16px;font-weight:700}
.fchip.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.aisle{margin-top:14px}
.aislehead{display:flex;align-items:center;gap:10px;font:700 15px var(--display);color:var(--brand);padding:6px 4px;border-bottom:2px solid var(--brand-soft);letter-spacing:.01em}
.aislehead span{color:var(--mute);font-weight:400}
.rules{display:grid;gap:4px}.sheet .rule{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:center;margin:0;color:var(--ink);font-size:16px}
ol.order{list-style:none;margin:6px 0;padding:0;counter-reset:o}
ol.order li{counter-increment:o;display:flex;align-items:center;justify-content:space-between;padding:2px 0;border-bottom:1px solid var(--line)}
ol.order li::before{content:counter(o);width:26px;color:var(--mute);font-weight:700}ol.order li span:first-of-type{flex:1}
ol.order button{min-height:40px;min-width:40px;padding:0}

/* meal plan */
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.day{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px;min-height:150px;display:flex;flex-direction:column;gap:8px}
.day.today{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.day header{display:flex;align-items:baseline;gap:8px}
.day header b{font:700 17px var(--display);text-transform:capitalize}
.day header{gap:6px}.day header .dl{color:var(--mute);font-size:14px;flex:1;min-width:0;white-space:nowrap}
.day header b{min-width:0}.day .ws{display:inline}.day .wl{display:none}
.addm{min-height:32px;min-width:32px;padding:0;border-radius:50%;flex:none}
.meal{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;padding:8px 10px;border-radius:10px;background:var(--brand-soft);border:1px solid transparent;min-height:0;width:100%}
.meal.guest{background:var(--amber-soft)}
.meal .slot{font-size:13px;color:var(--mute)}.meal b{font-weight:700;line-height:1.25}.meal small{color:var(--mute)}
.meal .by{display:flex;gap:4px;align-items:center}
.none{margin:0;font-size:14px}
@media(max-width:1000px){.day .ws{display:none}.day .wl{display:inline}.week{grid-template-columns:1fr}.day{min-height:0}.none{display:none}.day:not(:has(.meal)) {padding:6px 10px}}

/* list of lists */
.lists{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:28px;align-items:start}
.lindex{position:sticky;top:12px;display:flex;flex-direction:column;gap:12px}
.lsearch{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:0 12px}
.lsearch input{border:0;background:none;min-height:44px;flex:1;min-width:0}.lsearch input:focus{outline:none}.lsearch:focus-within{outline:2px solid var(--brand);outline-offset:1px}
.lrows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lrow{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;border:1px solid transparent;color:var(--ink);text-decoration:none;background:var(--surface)}
.lrow:hover{border-color:var(--line)}.lrow.on{border-color:var(--brand);background:var(--brand-soft)}
.ltxt{display:flex;flex-direction:column;min-width:0}.ltxt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ltxt small{color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lbadge{flex:none;width:var(--s);height:var(--s);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:calc(var(--s)*.5)}
.lbadge svg.i{width:55%;height:55%}
.lback{display:none}
.toolbar button{min-width:44px;padding:0 10px}
.toolbar button[aria-pressed=true]{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.aisle{border-left:5px solid var(--ac,var(--brand));padding-left:12px}
.aislehead{color:var(--ink);border-bottom-color:var(--line)}
.hiddenn{margin-top:18px}
.looks .swatches{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}
.sw{min-width:44px;min-height:44px;padding:0;border-radius:50%;font-size:22px;display:inline-flex;align-items:center;justify-content:center}
.sw.on{outline:3px solid var(--brand);outline-offset:2px}.sw.dot{border:0}
@media(max-width:800px){.lists{grid-template-columns:1fr}.lindex{position:static}.lists .ldetail{display:none}.lists.show-detail .lindex{display:none}.lists.show-detail .ldetail{display:block}.lback{display:inline-flex;align-items:center;gap:4px;margin-bottom:10px}}

/* profile photos */
.av{flex:none;width:var(--s);height:var(--s);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;background:hsl(var(--h) 38% 86%);color:hsl(var(--h) 45% 24%);font-weight:700;font-size:calc(var(--s)*.4);line-height:1;vertical-align:middle}
.av img{width:100%;height:100%;object-fit:cover;display:block}
.photorow{display:flex;gap:16px;align-items:center;margin-bottom:10px}
.pick .av{margin:0 2px}
.chip.soft .av{margin-right:6px}
.faces{display:flex;flex-wrap:wrap;align-items:center;gap:0;margin-top:4px}
.faces .av{margin-right:-6px;box-shadow:0 0 0 2px var(--brand-soft)}.meal.guest .faces .av{box-shadow:0 0 0 2px var(--amber-soft)}
.faces .hhtag{margin-left:12px;font-size:13px;color:var(--mute)}
.who ul.plain{margin:6px 0;padding:0;list-style:none}.who li{gap:10px;padding:4px 0}
.nophoto{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border:1px dashed var(--line);border-radius:var(--r);color:var(--mute);margin-bottom:6px}
.nophoto svg.i{width:28px;height:28px}
.lindex .lsearch input{border:0;background:transparent;min-height:44px;padding:0;border-radius:0}

/* compact list rows: tap the line to cross it off, pencil to edit */
ul.items li{padding:1px 4px;min-height:38px;gap:10px;cursor:pointer;font-size:16px;line-height:1.25}
ul.items li:hover{background:var(--brand-soft)}
ul.items input[type=checkbox]{width:20px;height:20px;flex:none}
ul.items .n{padding:4px 0}
ul.items small{font-size:13px;line-height:1.2}
ul.items .editbtn{min-width:36px;min-height:36px;width:36px;padding:0;border:0;background:none;color:var(--mute);flex:none;cursor:pointer}
ul.items .editbtn:hover{color:var(--brand);background:var(--surface)}
ul.items .editbtn svg.i{width:18px;height:18px}
.aislehead{padding:3px 4px;font-size:14px}.aisle{margin-top:8px}

/* recipe: collections, add one ingredient, cooking now */
.colrow{margin:6px 0 4px;align-items:center}
.colrow .quiet{min-height:36px}
ul.ing li{display:flex;align-items:center;gap:6px}ul.ing li label{flex:1}
.addone{flex:none;min-width:36px;min-height:36px;width:36px;padding:0;border-radius:50%;border:1px solid var(--line);background:var(--surface)}
.addone svg.i{width:18px;height:18px}.addone.ok{color:var(--brand);border-color:var(--brand)}
.fchip small{opacity:.7;font-weight:400}
.pickl{gap:8px}.pickrow{display:flex;align-items:center;gap:12px;justify-content:flex-start;min-height:52px;text-align:left;width:100%}
#cookbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;max-width:1100px;margin:0 auto;padding:8px 16px;background:var(--amber-soft);border-bottom:1px solid var(--line)}
#cookbar[hidden]{display:none}
.cookchip{display:inline-flex;align-items:center;border:1.5px solid var(--amber);border-radius:999px;background:var(--surface);overflow:hidden}
.cookchip a{padding:6px 12px;color:var(--ink);text-decoration:none;font-weight:700}.cookchip a small{font-weight:400;color:var(--mute);margin-left:4px}
.cookchip button{min-height:34px;min-width:34px;padding:0;border:0;background:none;color:var(--mute)}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;z-index:60;font-weight:600;max-width:90vw}

.mealbanner{display:flex;gap:8px;align-items:center;background:var(--amber-soft);border:1px solid var(--amber);border-radius:12px;padding:8px 14px;margin:6px 0;font-weight:600;max-width:max-content}
ul.ing.plain-ing li span{padding:6px 0;display:block}
.pickings li{display:flex;align-items:center;gap:8px;justify-content:space-between}

.kinds{display:flex;flex-wrap:wrap;gap:8px}
ol.cats li{gap:8px;padding:4px 0}ol.cats li::before{display:none}
ol.cats input[type=color]{width:38px;min-width:38px;height:38px;min-height:38px;padding:2px;border-radius:50%;border:1px solid var(--line);background:none}
ol.cats input:not([type=color]){flex:1;min-width:0}
.aisle.nohead{border-left-color:transparent;padding-left:0}

.photoedit{display:flex;gap:14px;align-items:center}.photoedit .thumb{width:96px;height:72px;border-radius:10px;border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--mute);flex:none}
.photoedit .thumb img{width:100%;height:100%;object-fit:cover}
.three{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.sheet textarea{min-height:0}

.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;max-height:46vh;overflow:auto}
.pcell{position:relative;padding:0;min-height:0;aspect-ratio:4/3;overflow:hidden;border-radius:10px}
.pcell img{width:100%;height:100%;object-fit:cover;display:block}
.pcell small{position:absolute;left:4px;bottom:4px;background:rgb(0 0 0/.6);color:#fff;border-radius:6px;padding:0 6px;font-size:11px}
.credit{display:block;margin-top:4px}
.changephoto{display:inline-flex;margin-top:6px}
