:root{--bg:#fbf8f3;--surface:#fff;--fg:#1c2230;--muted:#555d6e;--line:#ece7f0;--soft:#f3eff8;--accent:#10a861;--accent-2:#0ab3a6;--accent-soft:#dcf7e9;--accent-fg:#fff;--gradient:linear-gradient(135deg, var(--accent), var(--accent-2));--sun:#ffc233;--coral:#ff6b5b;--violet:#8b5cf6;--danger:#e0362c;--shadow:0 1px 2px #281e460d, 0 6px 20px #281e4612;--radius:20px;--c-produce:#22b357;--c-dairy:#3b8bfd;--c-meat:#ff5a5f;--c-bakery:#f59e0b;--c-pantry:#f97316;--c-frozen:#06b6d4;--c-drinks:#a855f7;--c-household:#ec4899;--c-other:#64748b;--page:linear-gradient(165deg, #dff8ec 0%, #fbf8f3 34%, #fff1e6 62%, #fde8f1 82%, #ece8ff 100%);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f1220;--surface:#181c2e;--fg:#eef0f7;--muted:#9aa1b8;--line:#272c43;--soft:#20253a;--accent:#2fd283;--accent-2:#2dd4c4;--accent-soft:#163528;--accent-fg:#07140d;--danger:#ff8a80;--shadow:0 1px 2px #0000004d;--c-produce:#4ade80;--c-dairy:#60a5fa;--c-meat:#fb7185;--c-bakery:#fbbf24;--c-pantry:#fb923c;--c-frozen:#22d3ee;--c-drinks:#c084fc;--c-household:#f472b6;--c-other:#94a3b8;--page:linear-gradient(165deg, #0c2a24 0%, #0f1220 38%, #1a1430 72%, #241338 100%)}}*{box-sizing:border-box}html{font-size:17px;font:-apple-system-body}body{font-size:1rem}html,body{background-color:var(--bg);background-image:radial-gradient(600px 300px at 100% -80px, color-mix(in srgb, var(--sun) 24%, transparent), transparent), radial-gradient(500px 280px at -80px 0, color-mix(in srgb, var(--accent-2) 20%, transparent), transparent), var(--page);min-height:100vh;color:var(--fg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background-attachment:fixed;margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif;line-height:1.4}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{border:1px solid var(--line);background:var(--surface);outline-color:var(--accent);border-radius:12px;width:100%;padding:11px 14px;font-size:.941rem}html,button,label.check,a.button-link{touch-action:manipulation}button{white-space:nowrap;border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:12px;padding:10px 16px}button:disabled{opacity:.5}button.primary{background:var(--gradient);color:var(--accent-fg);box-shadow:0 4px 14px color-mix(in srgb, var(--accent) 35%, transparent);border-color:#0000;border-radius:999px;font-weight:700}button.small{padding:6px 12px;font-size:.882rem}button.danger,.link.danger{color:var(--danger)}button.wide{width:100%;margin-top:8px}button.link{color:var(--accent);background:0 0;border:none;padding:4px 6px;font-weight:500}button.chip{background:var(--soft);min-height:44px;color:var(--fg);border:none;border-radius:999px;flex:none;padding:0 14px;font-size:.882rem}ul{margin:0;padding:0;list-style:none}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.882rem}.app{max-width:640px;padding:env(safe-area-inset-top) 16px calc(32px + env(safe-area-inset-bottom));margin:0 auto}.top{align-items:center;gap:10px;padding:14px 0 6px;display:flex}.top h1{letter-spacing:-.03em;background:linear-gradient(120deg, var(--accent), var(--accent-2) 45%, var(--violet));color:#0000;-webkit-background-clip:text;background-clip:text;flex:1;margin:0;font-size:1.588rem;font-weight:800}.badge{color:#2a1800;vertical-align:middle;letter-spacing:0;background:#f0b04a;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.882rem;font-weight:600}@media (width<=400px){.status .status-words{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}}.status{color:var(--muted);align-items:center;gap:5px;font-size:.88rem;display:inline-flex}.dot{background:var(--muted);opacity:.6;border-radius:50%;width:9px;height:9px}.dot.on{background:var(--accent);opacity:1}.avatar{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border:none;border-radius:50%;place-items:center;padding:0;font-weight:700;display:inline-grid}.avatar.on{background:var(--accent);color:var(--accent-fg)}.avatar.small{vertical-align:middle;width:26px;height:26px;font-size:.882rem}.tabs{background:var(--surface);box-shadow:var(--shadow);border-radius:999px;gap:4px;margin:8px 0 14px;padding:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-radius:999px;flex:1;padding:8px 6px;font-weight:600}.tabs button.on{background:var(--gradient);color:var(--accent-fg);box-shadow:0 3px 10px color-mix(in srgb, var(--accent) 30%, transparent)}.tabs button.on .pill{color:inherit;background:#ffffff40}.pill{background:var(--accent-soft);color:var(--accent);border-radius:999px;margin-left:6px;padding:1px 7px;font-size:.882rem}.composer{margin-bottom:6px}.composer form{background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--line);border-radius:24px;align-items:flex-end;gap:8px;padding:6px 6px 6px 4px;display:flex}.composer textarea{resize:none;background:0 0;border:none;outline:none;flex:1;min-width:0;padding:8px 10px;line-height:1.35}.send{border-radius:50%;flex:none;width:40px;height:40px;padding:0;font-size:1.176rem;line-height:1}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.reply{background:var(--accent-soft);border-radius:14px;margin-top:8px;padding:10px 36px 10px 14px;animation:.18s ease-out rise;position:relative}.reply.error-reply{background:color-mix(in srgb, var(--danger) 12%, var(--surface))}.reply .close{color:var(--muted);position:absolute;top:6px;right:6px}.reply-text:before{content:"💬 "}.question{margin-top:10px}.question .actions{margin-top:8px}.pick{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.seg{background:var(--surface);border-radius:10px;padding:3px;display:flex}.seg button{background:0 0;border:none;border-radius:8px;padding:5px 10px;font-size:.882rem}.seg button.on{background:var(--accent);color:var(--accent-fg)}@keyframes rise{0%{opacity:0;transform:translateY(4px)}}.me-button{background:var(--accent-soft);color:var(--accent);border:none;border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 4px;font-weight:700;display:inline-flex}.me-button.on{background:var(--accent);color:var(--accent-fg)}.me-button .avatar.small{background:var(--surface)}.recent{border:1px dashed var(--line);text-align:left;white-space:normal;background:0 0;border-radius:12px;flex-direction:column;align-items:flex-start;gap:2px;width:100%;margin:8px 0 0;padding:8px 12px;font-size:.882rem;display:flex}.recent-line{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.recent-more{color:var(--accent);align-self:flex-end;font-weight:600}.undone{opacity:.6;text-decoration:line-through}.entries .entry{align-items:center;gap:8px;padding:8px 0;font-size:.882rem;display:flex}.entries .entry+.entry{border-top:1px solid var(--line)}.entry-text{flex:1}.said{color:var(--muted);margin-top:2px;font-size:.882rem;font-style:italic}.item-history h3{color:var(--muted);margin:4px 0 0;font-size:.882rem}.toast{border-radius:var(--radius);border-left:5px solid var(--accent);background:color-mix(in srgb, var(--accent-soft) 70%, var(--surface));color:var(--fg);box-shadow:var(--shadow);align-items:center;gap:8px;margin:10px 0 0;padding:8px 8px 8px 12px;animation:.18s ease-out rise;display:flex}.toast:before{content:"✓";background:var(--gradient);width:28px;height:28px;color:var(--accent-fg);border-radius:50%;flex:none;place-items:center;font-weight:800;display:inline-grid}.toast.error-reply{border-left-color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, var(--surface))}.toast.error-reply:before{content:"!";background:var(--danger)}.toast span{flex:1}.toast .link{background:var(--surface);min-height:36px;color:var(--accent);border-radius:999px;padding:0 14px;font-weight:700}.toast .close{min-height:36px;color:var(--muted);background:0 0}.notice{background:color-mix(in srgb, #f0b04a 22%, var(--surface));border-radius:12px;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:10px;padding:10px 12px;font-size:.882rem;display:flex}.notice span{flex:1}.save-msg{border-radius:12px;margin:10px 0;padding:10px 12px;font-size:.882rem}.save-msg p{margin:0 0 6px}.save-msg ul{margin:0 0 8px;padding-left:18px}.save-msg.good{background:var(--accent-soft)}.save-msg.bad{background:color-mix(in srgb, #f0b04a 22%, var(--surface))}.welcome .sheet{border-radius:22px;margin:auto 0 0}.dots{justify-content:center;gap:6px;display:flex}.dots .dot{width:7px;height:7px}.big-steps{flex-direction:column;gap:14px;margin:8px 0;padding:0;list-style:none;display:flex}.big-steps>li{align-items:flex-start;gap:12px;display:flex}.big-steps>li.done .step-num{background:var(--accent);color:var(--accent-fg)}.big-steps p{margin:4px 0 0}.step-num{background:var(--accent-soft);width:28px;height:28px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.button-link.dim{opacity:.55}.build-yourself{margin-top:12px;font-size:.882rem}.build-yourself summary{color:var(--accent);cursor:pointer;font-weight:600}.secret.inline{margin:2px 0;padding:2px 6px;display:inline-flex}.family-link .inline-form input{font-size:.882rem}.sync-banner{background:color-mix(in srgb, #f0b04a 25%, var(--surface));border-radius:12px;margin:0 0 10px;padding:8px 12px;font-size:.882rem}.sync-banner.syncing{background:var(--accent-soft)}.qr{image-rendering:pixelated;background:#fff;border-radius:8px;margin:8px auto;display:block}.device-code{text-align:center}.big-code{letter-spacing:.12em;margin:6px 0 2px;font:700 34px/1.1 ui-monospace,SFMono-Regular,Menlo,monospace}.install-tip ol{margin:6px 0 8px;padding-left:20px}.install-tip .device-code{text-align:left}.signin-icon{border-radius:16px;display:block}.code-input{letter-spacing:.1em;text-transform:uppercase;font:600 22px ui-monospace,SFMono-Regular,Menlo,monospace}.lists{scrollbar-width:none;gap:6px;margin:6px 0 2px;display:flex;overflow-x:auto}.lists button{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;flex:none;padding:6px 14px;font-size:.882rem;font-weight:600}.lists button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.check-buttons{gap:8px;margin-bottom:10px;display:flex}.check-buttons button{white-space:normal;flex:1;min-width:0;padding:10px 8px;font-size:.882rem;font-weight:600}.check-sheet h3{margin:8px 0 0;font-size:.882rem}.check-form{flex-direction:column;gap:10px;display:flex}.check-form textarea{resize:vertical;min-height:140px}.seg.wide{background:var(--soft);display:flex}.seg.wide button{flex:1;padding:8px}.review .row{min-height:46px}.review .pick{padding-left:12px}.group{--cat:var(--accent)}.cat-produce{--cat:var(--c-produce)}.cat-dairy{--cat:var(--c-dairy)}.cat-meat{--cat:var(--c-meat)}.cat-bakery{--cat:var(--c-bakery)}.cat-pantry{--cat:var(--c-pantry)}.cat-frozen{--cat:var(--c-frozen)}.cat-drinks{--cat:var(--c-drinks)}.cat-household{--cat:var(--c-household)}.cat-other{--cat:var(--c-other)}.group h2{color:var(--fg);justify-content:space-between;align-items:center;margin:22px 4px 8px;font-size:.941rem;font-weight:750;display:flex}.group h2>span:first-child{align-items:center;gap:10px;display:inline-flex}.cat-icon{background:color-mix(in srgb, var(--cat) 18%, var(--surface));border-radius:11px;place-items:center;width:34px;height:34px;font-size:1.118rem;display:inline-grid}.count{color:var(--muted);font-size:.882rem;font-weight:500}.group .count{background:color-mix(in srgb, var(--cat) 16%, var(--surface));min-width:26px;color:color-mix(in srgb, var(--cat) 75%, var(--fg));text-align:center;border-radius:999px;padding:2px 9px;font-weight:700}.card{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--line);overflow:hidden}.group .card{border-left:5px solid var(--cat)}.card.pad{margin-bottom:14px;padding:16px}.row{align-items:center;gap:4px;min-height:54px;padding:0 12px 0 4px;display:flex}.row+.row{border-top:1px solid var(--line)}.check{cursor:pointer;flex:none;place-items:center;width:44px;height:44px;display:grid;position:relative}.check input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.check .box{border:2px solid color-mix(in srgb, var(--cat,var(--accent)) 45%, var(--line));border-radius:50%;width:24px;height:24px;transition:background .15s,border-color .15s}.check input:checked+.box{background:var(--cat,var(--accent));border-color:var(--cat,var(--accent));box-shadow:inset 0 0 0 3px var(--surface)}.check input:focus-visible+.box{outline:2px solid var(--accent);outline-offset:2px}.row-main{text-align:left;background:0 0;border:none;flex-wrap:wrap;flex:1;align-items:baseline;column-gap:8px;min-width:0;padding:10px 4px;display:flex}.row>.row-main:first-child{padding-left:12px}.name{font-weight:500}.qty{color:color-mix(in srgb, var(--cat,var(--accent)) 80%, var(--fg));font-size:.882rem;font-weight:600}.sub{color:var(--muted);flex-basis:100%;font-size:.882rem}.row.bought .name{color:var(--muted);text-decoration:line-through}.row.bought .qty,.bought-section h2,.empty,.muted{color:var(--muted)}.empty{text-align:center;padding:48px 16px}.empty p{margin:4px 0}.empty-icon{margin-bottom:8px;font-size:2.588rem}.error{color:var(--danger);margin:6px 0}.center{text-align:center;padding:40vh 16px 0}.signin{max-width:420px;margin:0 auto;padding:16vh 20px 0}.signin h1{letter-spacing:-.02em;font-size:2rem}.signin form{gap:8px;display:flex}.sheet-backdrop{z-index:40;background:#00000059;justify-content:center;align-items:flex-end;animation:.15s ease-out fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-width:640px;max-height:90vh;padding:20px 16px calc(16px + env(safe-area-inset-bottom));background:var(--surface);border-radius:22px 22px 0 0;flex-direction:column;gap:12px;animation:.2s ease-out rise;display:flex;overflow:auto}.sheet h2{margin:0;font-size:1.059rem}.sheet label{color:var(--muted);flex-direction:column;gap:4px;font-size:.882rem;display:flex}.pair{gap:8px;display:flex}.pair label{flex:1}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.ios-pic{filter:drop-shadow(0 4px 12px #00000014);width:100%;max-width:260px;margin:8px 0;display:block}.test-siri{align-items:center;gap:8px;display:flex}.recipe-sheet h3{margin:10px 2px 0;font-size:1rem}.recipe-sheet .card.review{border-left:none}.recipe-sheet .row{border-left:5px solid var(--cat,var(--accent))}.recipe-sheet .check{color:var(--accent);font-weight:700}.recipe-sheet .chev{color:var(--muted);font-size:1.4rem}.sub.short{color:color-mix(in srgb, var(--c-bakery) 70%, var(--fg));font-weight:600}.recipe-name input,.recipe-name select{margin-top:2px}.sticky-actions{bottom:calc(-16px - env(safe-area-inset-bottom));margin:4px -16px calc(-16px - env(safe-area-inset-bottom));padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line);position:sticky}.pasted{white-space:pre-wrap;font:inherit;color:var(--muted);font-size:.88rem}.skeleton .row{background:linear-gradient(90deg, var(--soft), var(--surface), var(--soft));background-size:200% 100%;min-height:54px}@media (prefers-reduced-motion:no-preference){.skeleton .row{animation:1.4s linear infinite shimmer}}@keyframes shimmer{to{background-position:-200% 0}}.seg-wide{background:var(--soft);align-self:center}.seg-wide button{min-width:96px;min-height:40px;font-size:1rem}.stepper{justify-content:center;align-items:center;gap:18px;padding:8px 0;display:flex}.stepper button{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border:none;border-radius:50%;padding:0;font-size:1.765rem;font-weight:700;line-height:1}.stepper output{flex-direction:column;align-items:center;min-width:90px;display:flex}.stepper output b{font-size:2.588rem;line-height:1.1}.center-text{text-align:center;margin:0}.sheet label.inline-check{color:var(--fg);flex-direction:row;align-items:center;gap:10px;font-size:.941rem}.inline-check input{width:22px;height:22px}.title{margin:0 0 6px;font-size:1.059rem}.row-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.row-title select{width:auto;padding:5px 10px;font-size:.882rem}.tokens li{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;font-size:.882rem;display:flex}.tokens li+li{border-top:1px solid var(--line)}.secret{background:var(--soft);border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;padding:10px 12px;display:flex}.secret p{flex-basis:100%;margin:0;font-size:.882rem}.secret code{word-break:break-all;-webkit-user-select:all;user-select:all;flex:1;min-width:0}.add-member{flex-direction:column;gap:10px;display:flex}.add-member .title,.add-member p{margin:0}.list-picks{flex-wrap:wrap;align-items:center;gap:6px 14px;margin:4px 0 6px;font-size:.882rem;display:flex}.list-pick{align-items:center;gap:6px;display:inline-flex}.list-pick input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.list-pick select{width:auto;padding:4px 8px;font-size:.882rem}.inline-form{gap:8px;margin-top:8px;display:flex}.steps{padding-left:22px}.steps>li{margin:10px 0}.steps.folded{opacity:.8;font-size:.882rem}.button-link{background:var(--accent);color:var(--accent-fg);border-radius:12px;padding:6px 12px;font-weight:600;text-decoration:none;display:inline-block}.steps ul{padding-left:18px;list-style:outside}.siri h3{margin:16px 0 4px;font-size:.882rem}.menu-card{text-align:left;white-space:normal;--cat:var(--c-household);align-items:center;gap:12px;width:100%;display:flex}.menu-card>span:nth-child(2){flex-direction:column;flex:1;display:flex}.menu-card .chev{color:var(--muted);font-size:1.412rem}button.link.back{margin:0 0 6px -6px}.later-section{--cat:var(--violet)}.bought-section{--cat:var(--accent)}.row.later .name{color:var(--muted)}button.chip.later-chip{color:var(--violet);background:color-mix(in srgb, var(--violet) 12%, var(--surface))}.finish{text-align:center;margin:18px 0 8px}.finish .muted{margin:8px 4px 0;font-size:.882rem}button:active:not(:disabled),.check:active .box{transform:scale(.94)}button,.check .box{transition:transform .1s}.row{position:relative}.row.going-bought{background:color-mix(in srgb, var(--cat,var(--accent)) 14%, var(--surface));animation:.55s ease-in both row-down}.row.going-bought .check:after{content:"";border:2px solid var(--cat,var(--accent));pointer-events:none;border-radius:50%;animation:.45s ease-out both ring;position:absolute;inset:8px}.row.going-bought .box{animation:.35s ease-out box-pop}.row.going-bought .name{color:var(--muted);position:relative}.row.going-bought .name:after{content:"";transform-origin:0;background:currentColor;border-radius:2px;height:2px;animation:.3s ease-out 50ms both strike;position:absolute;top:55%;left:0;right:0}.row[class*=going-] button:disabled,.row[class*=going-] input:disabled{opacity:1}.row.going-later{background:color-mix(in srgb, var(--violet) 12%, var(--surface));animation:.55s ease-in both row-aside}.row.going-later button.chip.later-chip{background:var(--violet);color:#fff;animation:.3s ease-out box-pop}.row.going-needed{background:color-mix(in srgb, var(--accent) 12%, var(--surface));animation:.55s ease-in both row-up}@keyframes box-pop{50%{transform:scale(1.3)}}@keyframes ring{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(1.6)}}@keyframes strike{0%{transform:scaleX(0)}}@keyframes row-down{0%,65%{opacity:1;transform:none}to{opacity:.25;transform:translateY(8px)}}@keyframes row-aside{0%,55%{opacity:1;transform:none}to{opacity:.25;transform:translate(28px)}}@keyframes row-up{0%,65%{opacity:1;transform:none}to{opacity:.25;transform:translateY(-8px)}}@media (prefers-reduced-motion:reduce){.row[class*=going-],.row[class*=going-] *,.row[class*=going-] :after{animation:none!important}}@keyframes drop-in{0%{opacity:0;transform:translateY(-10px)}}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}}@keyframes pop-in{0%{transform:scale(.4)rotate(-12deg)}70%{transform:scale(1.15)rotate(4deg)}}@keyframes shine{0%{background-position:100% 0}}@media (prefers-reduced-motion:no-preference){.launching .top{animation:.72s ease-out both drop-in}.launching .top h1{background-size:200% 100%;animation:1.92s ease-out both shine}.launching .tabs{animation:.72s ease-out .13s both rise-in}.launching .composer{animation:.72s ease-out .26s both rise-in}.launching .group{animation:.8s ease-out both rise-in}.launching .group .cat-icon{animation:.88s ease-out both pop-in}.launching .group:first-of-type,.launching .group:first-of-type .cat-icon{animation-delay:.35s}.launching .group:nth-of-type(2),.launching .group:nth-of-type(2) .cat-icon{animation-delay:.48s}.launching .group:nth-of-type(3),.launching .group:nth-of-type(3) .cat-icon{animation-delay:.61s}.launching .group:nth-of-type(4),.launching .group:nth-of-type(4) .cat-icon{animation-delay:.74s}.launching .group:nth-of-type(n+5),.launching .group:nth-of-type(n+5) .cat-icon{animation-delay:.86s}}
