html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,main,menu,nav,output,ruby,section,summary,time,mark,audio,video{font-size:100%;font:inherit;vertical-align:baseline;border:0;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}[hidden]{display:none}body{line-height:1}menu,ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}#app{width:var(--app-width);background-color:var(--color-page);grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);height:100dvh;margin:0 auto;display:grid}#app:has(.bottom-bar input:focus) .tabs{display:none}.top-bar{align-items:baseline;gap:.75rem;padding:1rem 1rem .625rem;display:flex}.top-bar h1{color:var(--color-ink);font-size:1.625rem;font-weight:700}.top-bar .subtitle{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--color-muted);flex:1;font-size:.875rem;overflow:hidden}.top-bar .sync{color:var(--color-muted);align-self:center;width:1.125rem;height:1.125rem}.top-bar .sync.syncing{animation:1s linear infinite spin}.top-bar .sync.offline{align-items:center;gap:.25rem;width:auto;font-size:.8125rem;display:flex}.top-bar .sync.offline svg{width:1rem;height:1rem}main{flex-direction:column;min-height:0;display:flex;position:relative}.section{flex-direction:column;flex:1;min-height:0;animation:.2s fade-in;display:flex}.list{overscroll-behavior:contain;flex:1;padding-bottom:1.5rem;overflow-y:auto}.row{min-height:var(--row-height);background-color:var(--color-surface);border-bottom:var(--hairline) solid var(--color-line);-webkit-user-select:none;user-select:none;cursor:pointer;align-items:center;gap:.75rem;padding:.25rem .5rem .25rem 1rem;transition:background-color .15s;display:flex}.row:active{background-color:var(--color-primary-soft)}.row .name{overflow-wrap:anywhere;flex:1;min-width:0;font-size:1.0625rem}.row .alias{color:var(--color-muted);font-size:.8125rem;display:block}.row .state{width:2.5rem;height:2.5rem;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.row .state svg{width:1.375rem;height:1.375rem}.row.create{color:var(--color-primary);font-weight:600}.bottom-bar{height:var(--bar-height);border-top:var(--hairline) solid var(--color-line);align-items:center;gap:.5rem;padding:0 .75rem;display:flex}.tabs{border-top:var(--hairline) solid var(--color-line);grid-template-columns:repeat(3,1fr);padding:.375rem 0 .625rem;display:grid}.tabs .tab{color:var(--color-muted);flex-direction:column;align-items:center;gap:.25rem;font-size:.75rem;font-weight:600;transition:color .2s;display:flex}.tabs .tab .tab-icon{border-radius:var(--pill);place-items:center;width:4rem;height:2rem;transition:background-color .2s;display:grid;position:relative}.tabs .tab .tab-icon svg{width:1.375rem;height:1.375rem}.tabs .tab .badge{border-radius:var(--pill);background-color:var(--color-accent);min-width:1.125rem;height:1.125rem;color:var(--color-text);place-items:center;padding:0 .3rem;font-size:.6875rem;font-weight:700;display:grid;position:absolute;top:-.25rem;right:.75rem}.tabs .tab.active{color:var(--color-ink)}.tabs .tab.active .tab-icon{background-color:var(--color-primary-soft)}.section.in-pantry .row{cursor:default}.section.in-pantry .row:active{background-color:var(--color-surface)}.section.in-pantry .row .name{cursor:pointer}.section.in-pantry .row.out .name{color:var(--color-muted)}.section.in-pantry .row.create{cursor:pointer}.section.in-pantry .to-buy-toggle{color:var(--color-muted)}.section.in-pantry .to-buy-toggle.on-list{background-color:var(--color-primary);color:#fff}.section.in-pantry .group-toggle.active{background-color:var(--color-primary-soft);color:var(--color-ink)}.section.in-pantry .create-new{background-color:var(--color-primary);color:#fff;width:2.75rem;height:2.75rem}.section.in-pantry .create-new svg{stroke-width:2.5px}.icon-button{border-radius:50%;flex-shrink:0;place-items:center;width:2.5rem;height:2.5rem;transition:transform .1s,background-color .15s,color .15s;display:grid}.icon-button svg{width:1.25rem;height:1.25rem}.icon-button:active{background-color:var(--color-primary-soft);transform:scale(.88)}.icon-button:disabled{opacity:.25;pointer-events:none}.stepper{cursor:default;flex-shrink:0;align-items:center;display:flex}.stepper .amount{text-align:center;font-variant-numeric:tabular-nums;min-width:1.5rem;font-weight:600}.stepper .amount.zero,.stepper .remove{color:var(--color-muted)}.stepper .remove:active{color:var(--color-danger)}.search-field{border-radius:var(--pill);background-color:var(--color-surface);border:var(--hairline) solid var(--color-line);flex:1;align-items:center;gap:.5rem;min-width:0;height:2.75rem;padding:0 .25rem 0 .875rem;transition:border-color .15s,box-shadow .15s;display:flex}.search-field>svg{width:1.125rem;height:1.125rem;color:var(--color-muted);flex-shrink:0}.search-field input{flex:1;min-width:0;height:100%}.search-field .clear{width:2.25rem;height:2.25rem;color:var(--color-muted)}.search-field:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 var(--hairline) var(--color-primary)}.group-header{z-index:1;background-color:var(--color-page);border-bottom:var(--hairline) solid var(--color-line);letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink);padding:1.25rem 1rem .375rem;font-size:.75rem;font-weight:700;position:sticky;top:0}.group-header:first-child{padding-top:.5rem}.empty{text-align:center;color:var(--color-muted);padding:4rem 2rem}.empty .title{color:var(--color-text);margin-bottom:.375rem;font-size:1.125rem;font-weight:600}.sheet-container{z-index:10;pointer-events:none;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.sheet-container .backdrop{opacity:0;background-color:#0006;transition:opacity .25s;position:absolute;inset:0}.sheet-container .sheet{width:var(--app-width);background-color:var(--color-page);max-height:90%;transition:transform .3s var(--ease);border-radius:1.25rem 1.25rem 0 0;flex-direction:column;gap:1rem;margin:0 auto;padding:.75rem 1rem 1.25rem;display:flex;position:relative;overflow-y:auto;transform:translateY(100%)}.sheet-container.active{pointer-events:all}.sheet-container.active .backdrop{opacity:1}.sheet-container.active .sheet{transform:none}.sheet-container .sheet-header{justify-content:space-between;align-items:center;margin-right:-.5rem;display:flex}.sheet-container .sheet-header h2{color:var(--color-ink);font-size:1.25rem;font-weight:700}.sheet-container .chips{flex-wrap:wrap;gap:.5rem;margin-top:-.25rem;display:flex}.sheet-container .chip{border-radius:var(--pill);border:var(--hairline) solid var(--color-line);background-color:var(--color-surface);padding:.5rem .875rem;font-size:.9375rem;transition:background-color .15s,color .15s}.sheet-container .chip.selected{border-color:var(--color-primary);background-color:var(--color-primary);color:#fff}.sheet-container .actions{gap:.75rem;margin-top:.5rem;display:flex}.sheet-container .actions .delete{color:var(--color-danger);align-items:center;gap:.375rem;padding:0 .5rem;font-weight:600;display:flex}.sheet-container .actions .delete svg{width:1.125rem;height:1.125rem}.sheet-container .actions .save{flex:0 0 50%;margin-left:auto}.section.settings{gap:2rem;padding:.5rem 1rem 1.5rem;overflow-y:auto}.section.settings h2{letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink);font-size:.75rem;font-weight:700}.section.settings form{flex-direction:column;gap:1rem;display:flex}.section.settings .data{flex-direction:column;flex:1;gap:.75rem;display:flex}.section.settings .data .data-header{align-items:center;gap:.75rem;display:flex}.section.settings .data .data-header .summary{color:var(--color-muted);flex:1;font-size:.8125rem}.section.settings .data .copy{border-radius:var(--pill);border:var(--hairline) solid var(--color-line);background-color:var(--color-surface);align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;display:flex}.section.settings .data .copy svg{width:1rem;height:1rem}.section.settings .data textarea{border-radius:var(--radius);border:var(--hairline) solid var(--color-line);background-color:var(--color-surface);resize:none;flex:1;min-height:14rem;padding:.75rem;font-family:ui-monospace,monospace;font-size:.75rem}.toast{z-index:5;border-radius:var(--radius);background-color:var(--color-ink);color:#fff;min-height:3rem;animation:toast-in .25s var(--ease);align-items:center;gap:.75rem;padding:.25rem .25rem .25rem 1rem;display:flex;position:absolute;bottom:.75rem;left:.75rem;right:.75rem;box-shadow:0 .25rem 1rem #0003}.toast span{flex:1}.toast button{color:var(--color-accent);letter-spacing:.04em;text-transform:uppercase;padding:.75rem 1rem;font-size:.875rem;font-weight:700}main:has(.bottom-bar) .toast{bottom:calc(var(--bar-height) + .5rem)}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}}.section.to-buy .row .check{border:.125rem solid var(--color-primary);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:1.5rem;height:1.5rem;transition:background-color .15s;display:grid}.section.to-buy .row .check svg{stroke-width:3px;width:1rem;height:1rem}.section.to-buy .row.checked{background-color:#0000}.section.to-buy .row.checked .check{background-color:var(--color-primary)}.section.to-buy .row.checked .name{color:var(--color-muted);text-decoration:line-through}.section.to-buy .row.checked .times{color:var(--color-muted);padding-right:.75rem}.section.to-buy .row.leaving{opacity:0;transition:transform .3s ease-in,opacity .3s;transform:translate(-110%)}.section.to-buy .results .row .at-home{color:var(--color-muted);flex-shrink:0;font-size:.8125rem}.section.to-buy .results .row.on-list .name{color:var(--color-muted)}.section.to-buy .results .row.on-list .state svg{background-color:var(--color-primary);color:#fff;stroke-width:3px;border-radius:50%;padding:.2rem}.section.to-buy .commit{border-radius:var(--pill);background-color:var(--color-primary);color:#fff;flex-shrink:0;align-items:center;gap:.375rem;height:2.75rem;padding:0 .625rem 0 .875rem;font-weight:600;transition:transform .1s;animation:.2s fade-in;display:flex}.section.to-buy .commit:active{transform:scale(.95)}.section.to-buy .commit svg{stroke-width:2.5px;width:1.125rem;height:1.125rem}.section.to-buy .commit .count{border-radius:var(--pill);text-align:center;background-color:#ffffff40;min-width:1.5rem;padding:.125rem .375rem;font-size:.8125rem}:root{--color-page:#eef4f2;--color-surface:#fff;--color-backdrop:#bbd4ce;--color-primary:#679186;--color-primary-soft:rgb(from var(--color-primary) r g b / .16);--color-ink:#264e70;--color-accent:#f9b4ab;--color-danger:#c4594c;--color-text:#171717;--color-muted:rgb(from var(--color-text) r g b / .5);--color-line:rgb(from var(--color-primary) r g b / .22);--hairline:.0625rem;--radius:.75rem;--pill:100rem;--row-height:3.25rem;--bar-height:4rem;--app-width:min(100vw, 30rem);--ease:cubic-bezier(.2, .8, .2, 1)}*,:before,:after{box-sizing:border-box}html{touch-action:manipulation;-webkit-tap-highlight-color:transparent}body{background-color:rgb(from var(--color-backdrop) r g b/.4);color:var(--color-text);overscroll-behavior:none;font-family:system-ui,sans-serif;line-height:1.3}input,button,select,textarea{font:inherit;color:inherit;background:0 0;border:0;outline:0;padding:0}button{cursor:pointer;-webkit-user-select:none;user-select:none}input::placeholder{color:var(--color-muted)}.lucide{stroke-width:1.75px}.field{flex-direction:column;gap:.375rem;display:flex}.field>span{color:var(--color-ink);font-size:.8125rem;font-weight:600}.field input{border-radius:var(--radius);background-color:var(--color-surface);border:var(--hairline) solid var(--color-line);height:3rem;padding:0 .875rem;transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--color-primary);box-shadow:0 0 0 var(--hairline) var(--color-primary)}.primary-button{border-radius:var(--radius);background-color:var(--color-primary);color:#fff;height:3rem;padding:0 1.25rem;font-weight:600;transition:transform .1s,opacity .15s}.primary-button:active{transform:scale(.97)}.primary-button:disabled{opacity:.4}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}
