:root{--paper:#f4ecdd;--surface:#fcf8f1;--ink:#2c2018;--muted:#6e5d51;--faint:#a8927d;--line:#e7dcc9;--green:#2f8a5e;--green-deep:#236a48;--mint:#e3efe5;--chilli:#e1542a;--chilli-deep:#c0431f;--chilli-soft:#fbe6dc;--saffron:#f0b23c;--saffron-soft:#fbecd3;--plum:#7b3b59;--r-lg:26px;--r-md:18px;--r-sm:12px;--shadow:0 18px 40px -22px #2c201873;--shadow-soft:0 10px 30px -18px #2c201866;--disp:"Bricolage Grotesque", "Plus Jakarta Sans", system-ui, sans-serif;--body:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E")}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--body);color:var(--ink);background:radial-gradient(1200px 600px at 15% -5%, #f3f0e6 0%, transparent 55%), radial-gradient(1000px 700px at 110% 10%, #efe7d6 0%, transparent 50%), var(--paper);-webkit-font-smoothing:antialiased;overscroll-behavior:none;background-attachment:fixed;font-size:16px;position:fixed;inset:0;overflow:hidden}button{font-family:inherit}:focus-visible{outline:2.5px solid var(--green);outline-offset:2px;border-radius:6px}.app{flex-direction:column;width:100%;max-width:480px;height:100%;margin:0 auto;display:flex;position:relative;overflow:hidden}.app-body{min-height:0;padding:calc(env(safe-area-inset-top) + 22px) 22px 22px;flex:1;overflow-y:auto}.compose{flex-direction:column;display:flex}.compose-main{flex-direction:column;flex:1;justify-content:center;padding-bottom:7vh;display:flex}.compose-main .greet{margin:6px 0;font-size:clamp(33px,9.5vw,40px)}.compose-main .sub{font-size:17px;line-height:1.55}.compose-main .ask{align-items:flex-end;margin-top:24px;padding:16px 18px}.compose-main .ask textarea{min-height:80px;font-size:18px;line-height:1.5}.compose-main .ask .go,.compose-main .ask .mic{border-radius:14px;width:46px;height:46px}.compose-main .ask .go svg,.compose-main .ask .mic svg{width:22px;height:22px}.compose-main .ask .mic .spinner{width:20px;height:20px}.compose-main .chips{margin-top:18px}.compose-main .chip{padding:10px 16px;font-size:15.5px}.recipe{flex-direction:column;flex:1;min-height:0;display:flex}.recipe-scroll{flex:1;min-height:0;overflow-y:auto}.recipe-top{padding:calc(env(safe-area-inset-top) + 16px) 20px 14px;align-items:center;gap:12px;display:flex}.recipe-hero{aspect-ratio:5/4;position:relative;overflow:hidden}.recipe-hero.reveal{animation:.5s cubic-bezier(.2,.7,.2,1) both hero-reveal}@media (prefers-reduced-motion:reduce){.recipe-hero.reveal{animation:none}}@keyframes hero-reveal{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.hero-poster,.hero-poster svg,.hero-img{width:100%;height:100%;display:block}.hero-img{object-fit:cover}.plate-grain{position:relative}.plate-grain:after{content:"";pointer-events:none;background-image:var(--grain);opacity:.5;mix-blend-mode:soft-light;background-size:150px;position:absolute;inset:0}.plate-grain.has-photo:after{opacity:.16}.hero-ctrl{z-index:1;gap:7px;display:flex;position:absolute;top:12px;right:12px}.hero-chip{font-family:var(--body);color:var(--ink);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;box-shadow:var(--shadow-soft);background:#ffffffe6;border:0;border-radius:999px;align-items:center;gap:6px;padding:9px 13px;font-size:12.5px;font-weight:700;display:inline-flex}.hero-chip svg{flex:none;width:15px;height:15px}.hero-chip.round{border-radius:50%;padding:9px}.hero-chip.dark{color:#fff;background:#2c2018d1}.hero-chip:disabled{opacity:.7;cursor:default}.hero-chip .spinner.sm{border-width:2px;width:15px;height:15px}.recipe-body{padding:20px 22px 8px}.recipe-body .title{font-size:27px}.recipe-source{color:var(--green-deep);align-items:center;gap:7px;margin-top:12px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.recipe-source svg{width:15px;height:15px}.recipe-source:hover{text-decoration:underline}.rd-tags{flex-wrap:wrap;gap:7px;margin-top:14px;display:flex}.rd-tag{font-family:var(--body);color:var(--muted);background:#efe6d4;border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:600}.rd-tag.cat{color:#fff;background:var(--green)}.sec-label{font-family:var(--disp);color:var(--ink);margin:24px 0 2px;font-size:17px;font-weight:600}.ing-group{font-family:var(--disp);letter-spacing:.02em;text-transform:uppercase;color:var(--green);margin:16px 0 4px;font-size:13.5px;font-weight:600}.ing-group:first-of-type{margin-top:10px}.recipe-actions{border-top:1px solid var(--line);background:#fff;flex:none;padding:14px 20px}.recipe-actions .btn-row{margin-top:0}.search{background:#efe6d4;border-radius:14px;align-items:center;gap:9px;margin-top:14px;padding:12px 14px;display:flex}.search svg{width:17px;height:17px;color:var(--faint);flex:none}.search input{font-family:var(--body);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:15px}.search input::placeholder{color:var(--faint)}.lib-filters{align-items:center;gap:8px;margin-top:12px;display:flex}.cat-row{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.cat-row::-webkit-scrollbar{display:none}.cat-pill{border:1px solid var(--line);color:var(--ink);font-family:var(--body);cursor:pointer;white-space:nowrap;background:#efe6d4;border-radius:999px;flex:none;padding:7px 14px;font-size:14px;font-weight:500}.cat-pill.on{background:var(--green);border-color:var(--green);color:#fff}.filter-btn{border:1px solid var(--line);width:40px;height:40px;color:var(--ink);cursor:pointer;background:#efe6d4;border-radius:12px;flex:none;place-items:center;display:grid;position:relative}.filter-btn svg{width:19px;height:19px}.filter-badge{background:var(--chilli);color:#fff;min-width:18px;height:18px;font-family:var(--body);border-radius:999px;place-items:center;padding:0 4px;font-size:11px;font-weight:700;display:grid;position:absolute;top:-5px;right:-5px}.filter-foot{align-items:center;gap:12px;margin-top:18px;display:flex}.filter-foot .btn-primary{flex:1}.filter-clear{color:var(--faint);font-family:var(--body);cursor:pointer;background:0 0;border:none;padding:10px 4px;font-size:15px;font-weight:600}.filter-clear:disabled{opacity:.4;cursor:default}.psec-list{margin-top:6px}.psec-row{border-bottom:1px solid var(--line);background:var(--paper);align-items:center;gap:10px;padding:6px 0;transition:transform .16s;display:flex}.psec-row.dragging{transition:none}.psec-grip{width:32px;height:32px;color:var(--faint);cursor:grab;touch-action:none;flex:none;place-items:center;display:grid}.psec-grip svg{width:18px;height:18px}.psec-name{text-align:left;min-width:0;font-family:var(--body);color:var(--ink);cursor:text;background:0 0;border:1px solid #0000;border-radius:9px;flex:1;padding:9px 8px;font-size:16px;font-weight:500}.psec-name.editing{border-color:var(--green);background:#fff;outline:none}.psec-count{color:var(--faint);flex:none;font-size:13px}.psec-del{width:36px;height:36px;color:var(--faint);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:none;place-items:center;display:grid}.psec-del svg{width:17px;height:17px}.psec-del:disabled{opacity:.35;cursor:default}.psec-note{align-items:center;gap:7px;margin-top:12px;font-size:13.5px;display:flex}.psec-note svg{width:15px;height:15px;color:var(--green);flex:none}@media (prefers-reduced-motion:reduce){.psec-row{transition:none}}.grid{grid-template-columns:1fr 1fr;gap:13px;margin-top:16px;display:grid}.card.mini{text-align:left;cursor:pointer;flex-direction:column;width:100%;padding:0;display:flex}.mini-thumb{flex:0 0 108px;height:108px;overflow:hidden}.mini .mt{flex:auto;padding:11px 13px 13px}.mini .nm{letter-spacing:-.01em;font-size:15px;font-weight:600;line-height:1.25}.mini .tm{color:var(--muted);margin-top:4px;font-size:13px}.empty{text-align:center;margin-top:16vh;padding:0 18px}.empty-mark{background:var(--mint);width:60px;height:60px;color:var(--green);border-radius:18px;place-items:center;margin-bottom:16px;display:inline-grid}.empty-mark svg{width:28px;height:28px}.empty-t{font-family:var(--disp);margin-bottom:6px;font-size:19px;font-weight:600}.empty .sub{max-width:280px;margin:0 auto}.eyebrow{color:var(--muted);letter-spacing:.01em;font-size:13.5px;font-weight:600}h2.greet{font-family:var(--disp);letter-spacing:-.02em;margin:2px 0 4px;font-size:28px;font-weight:600;line-height:1.12}h3.title{font-family:var(--disp);letter-spacing:-.01em;font-size:22px;font-weight:600;line-height:1.2}.sub{color:var(--muted);font-size:16px;line-height:1.55}.meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:13px;font-size:15px;font-weight:500;display:flex}.meta .m{align-items:center;gap:5px;display:flex}.meta svg{opacity:.8;width:16px;height:16px}.ask{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);align-items:center;gap:11px;margin-top:16px;padding:15px 16px;display:flex}.ask textarea{resize:none;font-family:var(--body);color:var(--ink);background:0 0;border:none;outline:none;flex:1;max-height:120px;font-size:14.5px;line-height:1.45}.ask textarea::placeholder{color:var(--faint)}.ask .go{background:var(--green);cursor:pointer;border:none;border-radius:13px;flex:none;place-items:center;width:38px;height:38px;transition:opacity .15s;display:grid}.ask .go:disabled{opacity:.45;cursor:default}.ask .go svg{color:#fff;width:19px;height:19px}.ask .mic{background:var(--mint);cursor:pointer;border:none;border-radius:13px;flex:none;place-items:center;width:38px;height:38px;transition:background .15s,opacity .15s;display:grid}.ask .mic svg{width:19px;height:19px;color:var(--green-deep)}.ask .mic:disabled{opacity:.45;cursor:default}.ask .mic .spinner{border-width:2px;width:18px;height:18px}.ask .mic.rec{background:#c4453a;animation:1.6s ease-in-out infinite mic-pulse}.ask .mic.rec svg{color:#fff}@keyframes mic-pulse{0%,to{box-shadow:0 0 #c4453a73}50%{box-shadow:0 0 0 7px #c4453a00}}.mic-hint{color:var(--muted);margin-top:12px;font-size:14px}@media (prefers-reduced-motion:reduce){.ask .mic.rec{animation:none}}.chips{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.chip{color:var(--green-deep);background:var(--mint);white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:999px;padding:9px 15px;font-size:15px;font-weight:600;transition:transform .12s,background .12s,color .12s}.chip.on{background:var(--saffron);color:#5c3206}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-soft);overflow:hidden}.btn{height:52px;font-family:var(--body);cursor:pointer;border:none;border-radius:15px;justify-content:center;align-items:center;gap:8px;width:100%;font-size:16.5px;font-weight:600;display:flex}.btn svg{width:18px;height:18px}.btn-primary{background:var(--green);color:#fff;box-shadow:var(--shadow-soft)}.btn-ghost{color:var(--ink);background:#efe6d4}.btn:disabled{opacity:.55;cursor:default}.btn-row{gap:10px;margin-top:12px;display:flex}.hdr{align-items:center;gap:12px;padding-top:2px;display:flex}.back{cursor:pointer;background:#efe6d4;border:none;border-radius:12px;flex:none;place-items:center;width:36px;height:36px;display:grid}.back svg{width:17px;height:17px;color:var(--ink)}.ctx{color:#9a5316;background:var(--saffron-soft);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600}.ing{border-bottom:1px solid var(--line);align-items:center;gap:11px;padding:13px 0;font-size:16.5px;display:flex}.ing:last-child{border-bottom:none}.ing .amt{color:var(--muted);margin-left:auto;font-size:15px;font-weight:500}.step{border-bottom:1px solid var(--line);gap:13px;padding:13px 0;display:flex}.step:last-child{border-bottom:none}.step .n{background:var(--mint);width:27px;height:27px;color:var(--green-deep);border-radius:9px;flex:none;place-items:center;font-size:13.5px;font-weight:700;display:grid}.step p{font-size:16px;line-height:1.55}.tweak{background:#efe6d4;border-radius:14px;align-items:center;gap:10px;margin-top:14px;padding:12px 14px;display:flex}.tweak svg{width:16px;height:16px;color:var(--saffron);flex:none}.tweak input{font-family:var(--body);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:15px}.tweak input::placeholder{color:var(--muted)}.tabs{height:calc(62px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fff;flex:none;justify-content:space-around;align-items:center;display:flex}.tab{color:var(--faint);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:4px;font-size:12px;font-weight:600;display:flex}.tab svg{width:22px;height:22px}.tab.on{color:var(--green)}.brand{align-items:center;gap:10px;display:inline-flex}.brand .mark{place-items:center;width:32px;height:32px;display:grid}.brand .mark svg{width:32px;height:32px}.brand .name{font-family:var(--disp);letter-spacing:-.02em;font-size:20px;font-weight:700}.spinner{border:2.5px solid var(--mint);border-top-color:var(--green);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}.fade-in{animation:.4s cubic-bezier(.2,.7,.2,1) both fade}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.fade-in{animation:none}}.onb{min-height:0;padding-top:calc(env(safe-area-inset-top) + 16px);flex-direction:column;flex:1;display:flex}.onb-top{align-items:center;gap:12px;min-height:36px;padding:0 22px;display:flex}.onb-body{flex:1;min-height:0;padding:0 22px;overflow-y:auto}.onb-foot{padding:16px 22px calc(env(safe-area-inset-bottom) + 20px)}.onb-body .eyebrow{margin-top:20px}.q{font-family:var(--disp);letter-spacing:-.02em;margin:6px 0;font-size:26px;font-weight:600;line-height:1.16}.progress{gap:6px;margin-left:2px;display:flex}.progress i{background:#ece1cf;border-radius:999px;width:22px;height:5px;display:block}.progress i.on{background:var(--green)}.skip{color:var(--faint);cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:14px;font-weight:600}.ghostlink{text-align:center;width:100%;color:var(--faint);cursor:pointer;background:0 0;border:none;margin-top:14px;font-size:14px;font-weight:600;display:block}.welcome{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding-bottom:24px;display:flex}.wmark{place-items:center;width:84px;height:84px;margin-bottom:18px;display:grid}.wmark svg{width:84px;height:84px}.welcome h1{font-family:var(--disp);letter-spacing:-.02em;margin-bottom:10px;font-size:30px;font-weight:600;line-height:1.14}.welcome p{color:var(--muted);max-width:250px;font-size:15.5px;line-height:1.55}.steppers{flex-direction:column;gap:11px;margin-top:22px;display:flex}.strow{border-radius:var(--r-md);border:1.5px solid var(--line);background:#fff;align-items:center;gap:13px;padding:14px 16px;display:flex}.strow .ic{background:var(--mint);border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid}.strow .ic svg{width:20px;height:20px;color:var(--green)}.strow .lbl{flex-direction:column;line-height:1.2;display:flex}.strow .lbl b{font-size:16px;font-weight:600}.strow .lbl span{color:var(--faint);margin-top:2px;font-size:13px}.step{align-items:center;gap:8px;margin-left:auto;display:flex}.sbtn{border:1.5px solid var(--line);cursor:pointer;background:#fff;border-radius:11px;place-items:center;width:36px;height:36px;display:grid}.sbtn svg{width:16px;height:16px;color:var(--ink)}.sbtn:disabled{opacity:.35;cursor:default}.sval{text-align:center;min-width:26px;font-family:var(--disp);font-size:20px;font-weight:600}.onb-chips{flex-wrap:wrap;gap:9px;margin-top:22px;display:flex}.onb-chips .chip{color:var(--muted);cursor:pointer;background:#efe6d4;border:1.5px solid #0000;border-radius:999px;align-items:center;gap:7px;padding:11px 15px;font-size:15px;font-weight:600;display:inline-flex}.onb-chips .chip svg{width:14px;height:14px}.onb-chips .chip.sel{color:#fff;background:var(--green);border-color:var(--green)}.onb-chips .chip.apr.sel{background:var(--saffron);border-color:var(--saffron);color:#5c3206}.sheet-scrim{z-index:50;background:#1b262052;align-items:flex-end;animation:.2s both scrim-in;display:flex;position:absolute;inset:0}.sheet{width:100%;padding:22px 22px calc(env(safe-area-inset-bottom) + 24px);background:#fff;border-radius:24px 24px 0 0;animation:.32s cubic-bezier(.2,.7,.2,1) both sheet-up;box-shadow:0 -16px 40px -20px #1f443180}.sheet .grab{background:#e7dcc8;border-radius:999px;width:40px;height:5px;margin:0 auto 16px}.sheet h3{font-family:var(--disp);letter-spacing:-.01em;font-size:20px;font-weight:600}.sheet .ss{color:var(--muted);margin-top:5px;font-size:14.5px;line-height:1.5}.istep{align-items:center;gap:12px;margin-top:15px;display:flex}.istep .n{background:var(--mint);width:28px;height:28px;color:var(--green-deep);border-radius:9px;flex:none;place-items:center;font-size:14px;font-weight:700;display:grid}.istep .tx{font-size:14.5px}.istep .tx b{font-weight:600}.istep .sh{background:#efe6d4;border-radius:9px;flex:none;place-items:center;width:30px;height:30px;margin-left:auto;display:grid}.istep .sh svg{width:16px;height:16px;color:var(--green)}.install-fallback{text-align:center;color:var(--faint);margin-top:12px;font-size:13px}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}@media (prefers-reduced-motion:reduce){.sheet-scrim,.sheet{animation:none}}.fab{z-index:40;right:max(18px,50% - 222px);bottom:calc(62px + env(safe-area-inset-bottom) + 18px);background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:50%;place-items:center;width:56px;height:56px;display:grid;position:fixed;box-shadow:0 10px 26px -8px #1f443199}.fab svg{width:26px;height:26px}.sl-add-fields{flex-direction:column;gap:10px;margin-top:6px;display:flex}.sl-add-row{gap:10px;display:flex}.sl-add-row .import-input{flex:1;min-width:0}.sl-add-row .sl-ef-aisle{border:1.5px solid var(--line);max-width:45%;font-family:var(--body);color:var(--ink);background:#fff;border-radius:12px;outline:none;flex:none;padding:11px 12px;font-size:15px}.sl-add-row .sl-ef-aisle:focus-visible{border-color:var(--green)}.sl-aisle-select{border:1.5px solid var(--line);width:100%;font-family:var(--body);color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:11px 12px;font-size:15px}.sl-aisle-select:focus-visible{border-color:var(--green)}.lib-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.icon-btn{cursor:pointer;width:40px;height:40px;color:var(--muted);background:#efe6d4;border:none;border-radius:12px;flex:none;place-items:center;display:grid}.icon-btn svg{width:20px;height:20px}.prefs-head{align-items:center;gap:12px;display:flex}.prefs-label{color:var(--muted);margin-top:26px;font-size:13px;font-weight:600}.prefs-label+.steppers,.prefs-label+.onb-chips{margin-top:12px}.tag-hidden-toggle{font-family:var(--body);color:var(--green-deep);cursor:pointer;background:0 0;border:none;margin-top:14px;padding:0;font-size:13.5px;font-weight:600}.pan-legend{flex-wrap:wrap;gap:16px;margin-top:14px;display:flex}.pan-key{color:var(--muted);align-items:center;gap:7px;font-size:13px;font-weight:600;display:inline-flex}.pan-key .dot{border-radius:50%;width:11px;height:11px}.pan-key .dot.have{background:var(--green)}.pan-key .dot.low{background:var(--saffron)}.pan-key .dot.out{background:#efe6d4;border:1.5px solid #dccfb9}.onb-chips .chip .chip-x{opacity:.7;cursor:pointer;border-radius:50%;place-items:center;width:22px;height:22px;margin:-2px -6px -2px 2px;display:inline-grid}.onb-chips .chip .chip-x:hover{opacity:1}.onb-chips .chip .chip-x svg{width:13px;height:13px}.pan-add{align-items:center;gap:10px;margin-top:12px;display:flex}.pan-add input{font-family:var(--body);color:var(--ink);background:#efe6d4;border:1.5px solid #0000;border-radius:999px;flex:1;padding:11px 16px;font-size:15px}.pan-add input:focus-visible{border-color:var(--green);background:#fff;outline:none}.pan-add-btn{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;transition:opacity .12s;display:grid}.pan-add-btn:disabled{opacity:.4;cursor:default}.pan-add-btn svg{width:20px;height:20px}.plan-list{flex-direction:column;gap:10px;margin-top:18px;display:flex}.plan-list .plan-section{margin:6px 0 0}.plan-list .plan-section:first-child{margin-top:0}.plan-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-soft);align-items:center;gap:13px;padding:8px 10px 8px 8px;display:flex}.plan-thumb{border-radius:13px;flex:none;width:56px;height:56px;overflow:hidden}.plan-meta{flex:1;min-width:0}.plan-meta .nm{letter-spacing:-.01em;font-size:15.5px;font-weight:600;line-height:1.25}.plan-meta .tm{color:var(--muted);margin-top:3px;font-size:13px}.plan-x{width:36px;height:36px;color:var(--faint);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;place-items:center;display:grid}.plan-x svg{width:18px;height:18px}.plan-add{font-family:var(--body);color:var(--green-deep);background:var(--mint);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:8px;margin-top:18px;padding:12px 20px;font-size:15px;font-weight:600;display:inline-flex}.plan-add svg{width:18px;height:18px}.pick-sheet{flex-direction:column;max-height:78%;display:flex}.pick-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.pick-head h3{font-family:var(--disp);letter-spacing:-.01em;font-size:20px;font-weight:600}.pick-grid{padding:4px 2px calc(16px + env(safe-area-inset-bottom));grid-auto-rows:max-content;align-content:start;margin-top:4px;overflow-y:auto}.card.mini.pick{transition:transform .12s,box-shadow .12s;position:relative}.card.mini.pick.on{border-color:var(--green);box-shadow:0 0 0 2px var(--green)}.pick-view{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;width:100%;padding:0;display:flex}.pick-toggle{width:30px;height:30px;color:var(--green-deep);cursor:pointer;box-shadow:var(--shadow-soft);z-index:1;background:#ffffffeb;border:none;border-radius:50%;place-items:center;display:grid;position:absolute;top:8px;right:8px}.pick-toggle.on{background:var(--green);color:#fff}.pick-toggle svg{width:16px;height:16px}.preview-overlay{z-index:70;background:var(--paper);flex-direction:column;max-width:480px;margin-inline:auto;display:flex;position:fixed;inset:0}.sl-eyebrow{letter-spacing:.04em;text-transform:uppercase;color:var(--saffron);margin-bottom:2px;font-size:12.5px;font-weight:700}.sl-aisle-group{margin-top:22px}.sl-aisle{font-family:var(--disp);color:var(--green-deep);margin-bottom:6px;font-size:15px;font-weight:600}.sl-item{text-align:left;border:none;border-bottom:1px solid var(--line);cursor:pointer;background:0 0;align-items:center;gap:13px;width:100%;padding:13px 2px;transition:transform .16s;display:flex}.sl-item:last-child{border-bottom:none}.sl-item.dragging{cursor:grabbing;transition:none}.sl-grip{width:30px;height:30px;color:var(--faint);cursor:grab;touch-action:none;flex:none;place-items:center;margin:-6px -4px -6px 2px;display:grid}.sl-grip svg{width:18px;height:18px}.sl-edit-btn{width:44px;height:44px;color:var(--faint);cursor:pointer;flex:none;place-items:center;margin:-13px -6px -13px 0;display:grid}.sl-edit-btn svg{width:17px;height:17px}@media (prefers-reduced-motion:reduce){.sl-item{transition:none}}.sl-edit{border-bottom:1px solid var(--line);padding:12px 2px 14px}.sl-edit-fields{grid-template-columns:1fr 64px 64px;gap:8px;display:grid}.sl-edit-fields .sl-ef-aisle{grid-column:1/-1}.sl-edit-fields input,.sl-edit-fields select{border:1px solid var(--line);font-family:var(--body);color:var(--ink);background:#fff;border-radius:10px;outline:none;width:100%;padding:10px 11px;font-size:15px}.sl-edit-fields input:focus,.sl-edit-fields select:focus{border-color:var(--green)}.sl-edit-actions{justify-content:space-between;align-items:center;margin-top:10px;display:flex}.sl-ef-del,.sl-ef-done{font-family:var(--body);cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;padding:9px 14px;font-size:14.5px;font-weight:600;display:inline-flex}.sl-ef-del{color:var(--chilli);background:0 0}.sl-ef-del svg{width:16px;height:16px}.sl-ef-done{background:var(--green);color:#fff}.sl-ef-done svg{width:16px;height:16px}.sl-ef-pantry{font-family:var(--body);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:6px;padding:9px 12px;font-size:14.5px;font-weight:600;display:inline-flex}.sl-ef-pantry svg{width:16px;height:16px}.sl-confirm{left:50%;bottom:calc(72px + env(safe-area-inset-bottom));z-index:50;background:var(--green);color:#fff;border-radius:var(--r-md);box-shadow:var(--shadow);font-family:var(--body);align-items:center;gap:8px;padding:11px 16px;font-size:14.5px;font-weight:600;animation:.32s cubic-bezier(.2,.7,.2,1) both toast-up;display:inline-flex;position:fixed;transform:translate(-50%)}.sl-confirm svg{width:16px;height:16px}@media (prefers-reduced-motion:reduce){.sl-confirm{animation:none}}.sl-ck{color:#fff;border:2px solid #dccfb9;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;transition:background .12s,border-color .12s;display:grid}.sl-ck.done{background:var(--green);border-color:var(--green)}.sl-ck svg{width:14px;height:14px}.sl-name{min-width:0;color:var(--ink);flex:1;font-size:16px;font-weight:500}.sl-low{vertical-align:1px;letter-spacing:.02em;text-transform:uppercase;color:#9a5316;background:var(--saffron-soft);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.sl-item.checked .sl-low{opacity:.5}.sl-out{vertical-align:1px;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);background:#efe6d4;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.sl-item.checked .sl-out{opacity:.5}.sl-amt{color:var(--muted);flex:none;font-size:14px}.sl-item.checked .sl-name,.sl-item.checked .sl-amt{color:var(--faint);text-decoration:line-through}.sl-cupboard{background:var(--mint);border-radius:var(--r-md);margin-top:26px;padding:15px 16px}.sl-ct{font-family:var(--disp);color:var(--green-deep);align-items:center;gap:9px;font-size:14.5px;font-weight:600;display:flex}.sl-ct svg{width:17px;height:17px}.sl-cs{color:var(--green-deep);opacity:.85;margin-top:6px;font-size:14px;line-height:1.5}.lib-actions{flex:none;align-items:center;gap:8px;display:flex}.imp-seg{background:#efe6d4;border-radius:14px;gap:4px;margin-top:14px;padding:4px;display:flex}.imp-seg-opt{font-family:var(--body);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:11px;flex:1 1 0;justify-content:center;align-items:center;gap:7px;padding:9px 10px;font-size:14.5px;font-weight:600;display:inline-flex}.imp-seg-opt svg{width:16px;height:16px}.imp-seg-opt.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm,0 1px 3px #00000014)}.imp-seg-opt:disabled{opacity:.55;cursor:default}.import-input{width:100%;font-family:var(--body);color:var(--ink);background:#efe6d4;border:1.5px solid #0000;border-radius:14px;margin-top:14px;padding:13px 16px;font-size:16px}.import-input:focus-visible{border-color:var(--green);background:#fff;outline:none}.import-input:disabled{opacity:.6}.import-error{color:#b4452e;margin-top:10px;font-size:14px;line-height:1.45}.rf-ing{align-items:center;gap:8px;margin-top:8px;display:flex}.rf-ing input,.rf-steptext{font-family:var(--body);color:var(--ink);background:#efe6d4;border:1.5px solid #0000;border-radius:12px;padding:11px 14px;font-size:15px}.rf-ing input:focus-visible,.rf-steptext:focus-visible{border-color:var(--green);background:#fff;outline:none}.rf-name{flex:1;min-width:0}.rf-qty{text-align:center;flex:none;width:62px}.rf-unit{flex:none;width:74px}.rf-del{width:38px;height:38px;color:var(--faint);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;place-items:center;display:grid}.rf-del:disabled{opacity:.3;cursor:default}.rf-del svg{width:18px;height:18px}.rf-step{align-items:flex-start;gap:10px;margin-top:8px;display:flex}.rf-step .n{background:var(--mint);width:26px;height:26px;color:var(--green-deep);font-family:var(--disp);border-radius:50%;flex:none;place-items:center;margin-top:9px;font-size:13px;font-weight:600;display:grid}.rf-steptext{resize:vertical;flex:1;min-width:0;line-height:1.45}.btn-primary .spinner{border-color:#fff #fff6 #fff6}.update-toast{left:50%;bottom:calc(72px + env(safe-area-inset-bottom));z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);width:calc(100% - 32px);max-width:448px;box-shadow:var(--shadow);align-items:center;gap:12px;padding:12px 12px 12px 16px;animation:.32s cubic-bezier(.2,.7,.2,1) both toast-up;display:flex;position:fixed;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.update-toast{animation:none}}@keyframes toast-up{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.update-msg{min-width:0;color:var(--ink);flex:1;font-size:14.5px;font-weight:500}.update-actions{flex:none;align-items:center;gap:6px;display:flex}.update-dismiss{font-family:var(--body);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;padding:9px 12px;font-size:14px;font-weight:600}.update-refresh{background:var(--green);color:#fff;font-family:var(--body);cursor:pointer;border:none;border-radius:10px;padding:9px 16px;font-size:14px;font-weight:700}.hh-btn{border:1.5px solid var(--green);color:var(--green-deep);font-family:var(--body);cursor:pointer;background:0 0;border-radius:14px;align-items:center;gap:8px;padding:11px 16px;font-size:15px;font-weight:600;display:inline-flex}.hh-btn svg{width:18px;height:18px}.hh-leave{color:var(--chilli);font-family:var(--body);cursor:pointer;background:0 0;border:none;margin-top:12px;padding:6px 0;font-size:14.5px;font-weight:600;display:block}.hh-leave-confirm{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);margin-top:14px;padding:14px}.hh-leave-actions{justify-content:flex-end;gap:10px;display:flex}.hh-leave-go{background:var(--chilli);color:#fff;font-family:var(--body);cursor:pointer;border:none;border-radius:10px;padding:9px 16px;font-size:14px;font-weight:700}.invite-center{text-align:center;flex-direction:column;align-items:center;padding:18px 8px 8px;display:flex}.invite-qr{border-radius:var(--r-md);box-shadow:var(--shadow-soft);background:#fff;justify-content:center;width:fit-content;margin:16px auto 4px;padding:16px;display:flex}.invite-link{color:var(--green-deep);font-family:var(--body);cursor:pointer;background:0 0;border:none;margin:14px auto 0;font-size:14px;font-weight:600;display:block}.invite-wait{text-align:center;color:var(--muted);margin-top:10px;font-size:13.5px}.invite-tick{background:var(--green);color:#fff;border-radius:50%;place-items:center;width:52px;height:52px;display:grid}.invite-tick svg{width:26px;height:26px}.join-overlay{z-index:60;background:#2c201873;justify-content:center;align-items:center;padding:20px;animation:.2s both scrim-in;display:flex;position:fixed;inset:0}.join-card{background:var(--paper);border-radius:var(--r-lg);width:100%;max-width:440px;max-height:88vh;box-shadow:var(--shadow);padding:22px 20px 20px;overflow-y:auto}.merge-list{flex-direction:column;gap:12px;margin-top:16px;display:flex}.merge-row{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:12px}.merge-head{align-items:center;gap:12px;display:flex}.merge-thumb{border-radius:12px;flex:none;width:52px;height:52px;overflow:hidden}.merge-meta{min-width:0}.merge-title{font-family:var(--display,var(--body));color:var(--ink);font-size:16px;font-weight:700}.merge-dates{color:var(--muted);margin-top:2px;font-size:12.5px}.merge-opts{gap:6px;margin-top:12px;display:flex}.merge-opt{border:1.5px solid var(--line);background:var(--paper);font-family:var(--body);color:var(--muted);cursor:pointer;border-radius:11px;flex:1 1 0;padding:9px 6px;font-size:13px;font-weight:600}.merge-opt.on{border-color:var(--green);background:var(--green);color:#fff}.join-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.pan-undo{left:50%;bottom:calc(72px + env(safe-area-inset-bottom));z-index:50;background:var(--ink);color:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow);font-family:var(--body);align-items:center;gap:14px;padding:11px 12px 11px 18px;font-size:14.5px;animation:.32s cubic-bezier(.2,.7,.2,1) both toast-up;display:inline-flex;position:fixed;transform:translate(-50%)}.pan-undo button{color:#8fd6ac;font-family:var(--body);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:14.5px;font-weight:700}@media (prefers-reduced-motion:reduce){.pan-undo{animation:none}}
