@import url("https://fonts.googleapis.com/css2?family=Josefin+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400&family=DM+Mono:wght@400;500&family=Newsreader:ital,wght@0,300;0,400;0,500;0,600;1,400;1,500&display=swap");:root{--color-bg:#f5ecde;--color-paper:#fbf3e6;--color-surface:#ffffff;--color-surface-2:#faf5e3;--color-ink:#1a1612;--color-ink-soft:#4a4036;--color-muted:#7a6e5e;--color-faint:#b8a994;--color-border:#e0d3bc;--color-border-strong:#c8b69a;--color-teal:#afe2e5;--color-teal-deep:#4f9aa0;--color-amber:#c8842a;--color-amber-deep:#a86a17;--color-amber-light:#f1c486;--color-moss:#6a8a4a;--color-rose:#c9554d;--color-success:#6a8a4a;--font-display:"Josefin Sans","Futura",system-ui,sans-serif;--font-sans:"Josefin Sans",system-ui,sans-serif;--font-mono:"DM Mono","IBM Plex Mono",ui-monospace,monospace;--font-editorial:"Newsreader",Georgia,serif;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:48px;--sp-9:64px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-pill:999px;--shadow-1:0 1px 0 rgba(255,255,255,0.6) inset,0 1px 2px rgba(26,22,18,0.04);--shadow-2:0 1px 0 rgba(255,255,255,0.5) inset,0 4px 16px -4px rgba(26,22,18,0.10);--shadow-3:0 1px 0 rgba(255,255,255,0.5) inset,0 12px 32px -8px rgba(26,22,18,0.16);--ease-spring:cubic-bezier(0.22,1,0.36,1);--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-in:cubic-bezier(0.4,0,1,1)}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--color-bg);color:var(--color-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{background-image:radial-gradient(circle at 8% 6%,rgba(200,132,42,.06) 0,transparent 36%),radial-gradient(circle at 92% 92%,rgba(175,226,229,.1) 0,transparent 40%);min-height:100dvh}button{font-family:inherit}:where(button,a,input,select,textarea,[role=tab]):focus-visible{outline:2px solid var(--color-amber);outline-offset:2px;border-radius:6px}::selection{background:rgba(175,226,229,.5);color:var(--color-ink)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(122,110,94,.25);border-radius:4px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:rgba(122,110,94,.4);background-clip:padding-box}@media (max-width:768px){input,select,textarea{font-size:16px!important}}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fade-up .5s var(--ease-out) both}.delay-1{animation-delay:60ms}.delay-2{animation-delay:.12s}.delay-3{animation-delay:.18s}.delay-4{animation-delay:.24s}.delay-5{animation-delay:.3s}.delay-6{animation-delay:.36s}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-paper) 0,var(--color-surface-2) 50%,var(--color-paper) 100%);background-size:200% 100%;animation:shimmer 1.6s linear infinite;border-radius:var(--r-md)}@keyframes pulse-dot{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}.pulse-dot{animation:pulse-dot 2.4s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.fade-up,.pulse-dot,.skeleton{animation:none!important}.fade-up{opacity:1!important;transform:none!important}}.shell{max-width:1320px;margin:0 auto;width:100%;padding:var(--sp-6) var(--sp-6) calc(var(--sp-9) + 80px)}@media (min-width:720px){.shell{padding:var(--sp-7) var(--sp-7) var(--sp-9)}}@media (min-width:1024px){.shell{padding:var(--sp-8) var(--sp-8) var(--sp-9)}}@media (max-width:480px){.shell{padding:var(--sp-4) var(--sp-4) calc(var(--sp-9) + 80px)}}.grid{display:grid;grid-template-columns:repeat(12,1fr);grid-gap:var(--sp-5);gap:var(--sp-5)}@media (max-width:720px){.grid{gap:var(--sp-4)}}.col-12{grid-column:span 12}.col-8{grid-column:span 8}.col-7{grid-column:span 7}.col-6{grid-column:span 6}.col-5{grid-column:span 5}.col-4{grid-column:span 4}.col-3{grid-column:span 3}@media (max-width:1024px){.col-5,.col-7,.col-8{grid-column:span 12}.col-4{grid-column:span 6}}@media (max-width:720px){.col-3,.col-4,.col-6{grid-column:span 12}}.app-header{position:-webkit-sticky;position:sticky;top:0;z-index:30;margin:calc(var(--sp-6) * -1) calc(var(--sp-6) * -1) var(--sp-5);padding:var(--sp-5) var(--sp-6);background:rgba(245,236,222,.85);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px);border-bottom:1px solid transparent;transition:border-color .3s var(--ease-out),background .3s var(--ease-out)}.app-header.scrolled{border-bottom-color:var(--color-border);background:rgba(245,236,222,.92)}@media (min-width:720px){.app-header{margin:calc(var(--sp-7) * -1) calc(var(--sp-7) * -1) var(--sp-6);padding:var(--sp-5) var(--sp-7)}}@media (min-width:1024px){.app-header{margin:calc(var(--sp-8) * -1) calc(var(--sp-8) * -1) var(--sp-7);padding:var(--sp-5) var(--sp-8)}}@media (max-width:480px){.app-header{margin:calc(var(--sp-4) * -1) calc(var(--sp-4) * -1) var(--sp-4);padding:var(--sp-4)}}.subnav{display:inline-flex;gap:2px;padding:4px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--r-pill);box-shadow:var(--shadow-1);margin-bottom:var(--sp-6);overflow-x:auto;max-width:100%}.subnav::-webkit-scrollbar{display:none}.subnav button{font-family:var(--font-display);font-size:13px;font-weight:500;letter-spacing:.005em;padding:8px 16px;border-radius:var(--r-pill);border:1px solid transparent;background:transparent;color:var(--color-ink-soft);cursor:pointer;white-space:nowrap;min-height:36px;transition:background .15s var(--ease-out),color .15s var(--ease-out)}.subnav button:hover:not(.active){color:var(--color-ink);background:rgba(26,22,18,.04)}.subnav button.active{background:var(--color-ink);color:var(--color-paper)}@media (max-width:720px){.subnav{display:none}}.tabbar{display:none;position:fixed;left:0;right:0;bottom:0;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:rgba(251,243,230,.95);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px);border-top:1px solid var(--color-border);z-index:40}.tabbar-inner{display:grid;grid-template-columns:repeat(var(--tab-cols,5),1fr);grid-gap:2px;gap:2px;max-width:480px;margin:0 auto}.tabbar button{display:grid;place-items:center;grid-gap:2px;gap:2px;padding:8px 4px;border:0;background:transparent;color:var(--color-muted);cursor:pointer;border-radius:var(--r-md);min-height:52px;transition:color .15s var(--ease-out),background .15s var(--ease-out)}.tabbar button.active{color:var(--color-ink)}.tabbar button .tab-icon{font-family:var(--font-mono);font-size:18px;line-height:1}.tabbar button .tab-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase}@media (max-width:720px){.tabbar{display:block}}.card{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--shadow-1);transition:box-shadow .2s var(--ease-out),transform .2s var(--ease-out)}@media (min-width:720px){.card{padding:var(--sp-6)}}.card.hero{background:linear-gradient(180deg,var(--color-surface) 0,var(--color-surface-2) 100%)}.card-link{text-decoration:none;color:inherit;display:block}.card-link:focus-visible .card,.card-link:hover .card{box-shadow:var(--shadow-2);transform:translateY(-1px)}.card-link:active .card{transform:translateY(0)}.eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--color-muted);display:inline-flex;align-items:center;gap:6px}.title{font-family:var(--font-display);font-weight:600;font-size:20px;letter-spacing:-.01em;line-height:1.15;margin:6px 0 0;color:var(--color-ink)}.title.large{font-size:26px;font-weight:700}.title.editorial{font-family:var(--font-editorial);font-weight:500;letter-spacing:-.005em}.section-head{margin-bottom:var(--sp-4)}.subhead{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--color-muted);margin-bottom:var(--sp-3)}.hero-num{font-family:var(--font-editorial);font-weight:400;font-size:clamp(38px,6vw,56px);letter-spacing:-.02em;line-height:1;color:var(--color-ink)}.hero-num .cents{font-size:.5em;color:var(--color-muted);font-weight:400}.hero-num .unit{font-size:.28em;letter-spacing:.1em;color:var(--color-muted);margin-left:8px;vertical-align:.4em}.hero-num .unit,.pill{font-family:var(--font-mono)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;letter-spacing:.04em;padding:6px 12px;border-radius:var(--r-pill);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-ink-soft);cursor:pointer;white-space:nowrap;min-height:32px;transition:background .15s var(--ease-out),border-color .15s var(--ease-out)}.pill:hover{background:var(--color-paper);border-color:var(--color-border-strong)}.pill.status{cursor:default;padding-left:10px}.pill.status .dot{width:8px;height:8px;border-radius:50%;background:var(--color-moss);box-shadow:0 0 0 3px rgba(106,138,74,.18)}.pill.green{background:rgba(106,138,74,.1);border-color:rgba(106,138,74,.25);color:var(--color-moss)}.pill.rose{background:rgba(201,85,77,.08);border-color:rgba(201,85,77,.22);color:var(--color-rose)}.pill.amber{background:rgba(200,132,42,.1);border-color:rgba(200,132,42,.25);color:var(--color-amber-deep)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-display);font-weight:500;font-size:14px;letter-spacing:.005em;padding:10px 18px;border-radius:var(--r-pill);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);cursor:pointer;min-height:40px;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--color-paper);border-color:var(--color-border-strong)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-paper)}.btn.primary:hover{background:var(--color-ink-soft);border-color:var(--color-ink-soft)}.empty{font-family:var(--font-editorial);font-style:italic;font-size:15px;color:var(--color-muted);padding:var(--sp-3) 0;line-height:1.45}.empty.compact{font-style:normal}.empty.compact,.error-line{font-family:var(--font-mono);font-size:12px}.error-line{color:var(--color-rose);padding:var(--sp-2) 0}.toggle{width:36px;height:20px;border-radius:999px;background:var(--color-paper);border:1px solid var(--color-border);position:relative;flex-shrink:0;transition:background .2s var(--ease-out)}.toggle.on{background:var(--color-amber);border-color:var(--color-amber-deep)}.toggle .knob{position:absolute;top:1px;left:1px;width:16px;height:16px;border-radius:50%;background:var(--color-surface);box-shadow:0 1px 2px rgba(26,22,18,.18);transition:transform .2s var(--ease-spring)}.toggle.on .knob{transform:translateX(16px)}.light-tile{display:grid;grid-gap:8px;gap:8px;padding:12px 14px;border:1px solid var(--color-border);border-radius:var(--r-md);background:var(--color-surface);cursor:pointer;text-align:left;min-height:64px;transition:background .15s,border-color .15s,box-shadow .15s}.light-tile:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-1)}.light-tile.on{background:linear-gradient(180deg,rgba(241,196,134,.2),rgba(241,196,134,.05));border-color:rgba(200,132,42,.35)}.row{display:grid;grid-template-columns:64px 1fr auto;grid-gap:var(--sp-3);gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--color-border);align-items:center}.row:last-child{border-bottom:0}.row .time{font-family:var(--font-mono);font-size:12px}.row .label,.row .time{font-weight:500;color:var(--color-ink)}.row .label{font-family:var(--font-display);font-size:15px}.row .meta{font-size:10px;letter-spacing:.08em;color:var(--color-muted);margin-top:2px}.owner,.row .meta{font-family:var(--font-mono);text-transform:uppercase}.owner{font-size:9px;letter-spacing:.16em;padding:4px 9px;border-radius:var(--r-pill);border:1px solid var(--color-border);color:var(--color-ink)}.owner.cam{background:rgba(175,226,229,.4)}.owner.ambar{background:rgba(200,132,42,.16)}.owner.us{background:rgba(106,138,74,.18)}.tabular{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted{color:var(--color-muted)}.faint{color:var(--color-faint)}.center{text-align:center}.flex,.flex-col{display:flex}.flex-col{flex-direction:column}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.mt-1{margin-top:var(--sp-1)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mt-6{margin-top:var(--sp-6)}.between{justify-content:space-between}.center-y{align-items:center}.baseline{align-items:baseline}.stack>*+*{margin-top:var(--sp-3)}.stack-tight>*+*{margin-top:var(--sp-2)}.stack-loose>*+*{margin-top:var(--sp-5)}.divider{height:1px;background:var(--color-border);margin:var(--sp-4) 0}.shopping-shell{max-width:720px;margin:0 auto;padding:var(--sp-4) var(--sp-4) calc(96px + env(safe-area-inset-bottom));min-height:100dvh;background:var(--color-bg);font-family:var(--font-display)}.shopping-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;margin:0 calc(-1 * var(--sp-4)) var(--sp-4);padding:var(--sp-3) var(--sp-4) var(--sp-3);background:color-mix(in srgb,var(--color-bg) 88%,transparent);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px);border-bottom:1px solid var(--color-border)}.shopping-header-row{display:flex;align-items:center;gap:var(--sp-3);justify-content:space-between}.shopping-header-row+.shopping-header-row{margin-top:var(--sp-3)}.shopping-back{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--color-muted);text-decoration:none;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-pill);border:1px solid var(--color-border);background:var(--color-paper);white-space:nowrap}.shopping-back:hover,.shopping-title{color:var(--color-ink)}.shopping-title{font-family:var(--font-editorial);font-size:22px;font-weight:500;margin:0;letter-spacing:-.01em}.shopping-meta{display:flex;align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:11px;color:var(--color-muted);flex-shrink:0}.shopping-store-pill{padding:3px 10px;border-radius:var(--r-pill);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-ink-soft);letter-spacing:.04em;text-transform:uppercase}.shopping-count{color:var(--color-muted)}.list-picker{position:relative;flex:1 1;min-width:0}.list-picker-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);width:100%;min-height:44px;padding:var(--sp-2) var(--sp-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-md);font-family:var(--font-display);font-weight:500;font-size:15px;color:var(--color-ink);cursor:pointer;text-align:left}.list-picker-trigger:hover{border-color:var(--color-border-strong)}.list-picker-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-picker-caret{color:var(--color-muted);font-size:14px}.list-picker-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:4px;max-height:60vh;overflow-y:auto}.list-picker-empty{padding:var(--sp-3);color:var(--color-muted);font-size:13px;font-style:italic}.list-picker-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--sp-2) var(--sp-3);border:none;background:transparent;font-family:var(--font-display);font-size:14px;color:var(--color-ink);border-radius:var(--r-sm);cursor:pointer;text-align:left}.list-picker-item.active,.list-picker-item:hover{background:var(--color-surface-2)}.list-picker-item.active{font-weight:600}.list-picker-item.create{color:var(--color-amber-deep);font-weight:500}.list-picker-item-store{font-family:var(--font-mono);font-size:10px;color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase}.list-picker-divider{height:1px;background:var(--color-border);margin:4px 0}.add-item-bar{position:relative;margin-bottom:var(--sp-4)}.add-item-form{display:flex;gap:var(--sp-2);align-items:stretch}.add-item-input{flex:1 1;height:52px;padding:0 var(--sp-4);border:1px solid var(--color-border);border-radius:var(--r-md);background:var(--color-surface);font-family:var(--font-display);font-size:16px;color:var(--color-ink)}.add-item-input:focus{outline:2px solid var(--color-amber);outline-offset:-1px;border-color:var(--color-amber)}.add-item-submit{width:52px;height:52px;border-radius:var(--r-md);border:none;background:var(--color-ink);color:var(--color-bg);font-size:24px;font-weight:300;cursor:pointer;transition:transform .18s var(--ease-spring),opacity .18s var(--ease-spring)}.add-item-submit:hover:not(:disabled){transform:scale(1.03)}.add-item-submit:disabled{opacity:.4;cursor:not-allowed}.add-item-suggestions{position:absolute;top:calc(100% + 6px);left:0;right:60px;z-index:15;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-md);box-shadow:var(--shadow-2);list-style:none;margin:0;padding:4px}.add-item-suggestion{display:block;width:100%;padding:var(--sp-2) var(--sp-3);background:transparent;border:none;text-align:left;font-family:var(--font-display);font-size:14px;color:var(--color-ink);border-radius:var(--r-sm);cursor:pointer}.add-item-suggestion:hover{background:var(--color-surface-2)}.shopping-items{display:flex;flex-direction:column;gap:var(--sp-5)}.shopping-category-head{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-amber-deep);margin:0 0 var(--sp-2);padding-bottom:var(--sp-2);border-bottom:1px solid var(--color-border)}.shopping-category-head.muted{color:var(--color-muted)}.shopping-category-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.shopping-item{display:flex;align-items:center;gap:var(--sp-3);min-height:52px;padding:6px 10px;border-radius:var(--r-md);background:var(--color-surface);border:1px solid transparent;transition:background .15s var(--ease-spring),opacity .18s var(--ease-spring)}@media (hover:hover) and (pointer:fine){.shopping-item:hover{background:var(--color-surface-2)}}.shopping-item.checked{opacity:.55}.shopping-item.checked .shopping-item-content{text-decoration:line-through;-webkit-text-decoration-color:var(--color-muted);text-decoration-color:var(--color-muted)}.shopping-item-check{flex-shrink:0;width:44px;height:44px;display:grid;place-items:center;background:transparent;border:none;cursor:pointer;padding:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.shopping-item-check:active .shopping-item-check-box{transform:scale(.92)}.shopping-item-check-box{width:26px;height:26px;border:1.5px solid var(--color-border-strong);border-radius:8px;background:var(--color-paper);display:grid;place-items:center;font-size:16px;color:var(--color-success);font-weight:700;line-height:1;transition:background .12s var(--ease-spring),border-color .12s var(--ease-spring),transform .12s var(--ease-spring)}.shopping-item.checked .shopping-item-check-box{background:var(--color-success);color:var(--color-bg);border-color:var(--color-success)}.shopping-item-label{flex:1 1;min-width:0;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:2px;min-height:36px;background:transparent;border:none;text-align:left;padding:0;cursor:pointer;font-family:var(--font-display);font-size:16px;color:var(--color-ink);line-height:1.2;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.shopping-item-line{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.shopping-item-attr{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;color:var(--color-muted);letter-spacing:.02em;line-height:1}.shopping-item-attr-who{color:var(--color-ink-soft);font-weight:500;text-transform:uppercase;letter-spacing:.06em}.shopping-item-attr-sep{opacity:.5}.shopping-item.checked .shopping-item-attr{opacity:.85}.shopping-item-content{font-weight:500}.shopping-item-qty{font-family:var(--font-mono);font-size:12px;color:var(--color-muted);padding:1px 8px;border-radius:var(--r-pill);background:var(--color-paper)}.shopping-item-aisle{font-family:var(--font-mono);font-size:11px;color:var(--color-amber-deep);letter-spacing:.04em;text-transform:uppercase}.shopping-item-edit-btn{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;background:transparent;border:none;color:var(--color-faint);cursor:pointer;font-size:14px;border-radius:var(--r-sm);opacity:.55;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:opacity .15s var(--ease-spring),color .15s var(--ease-spring)}.shopping-item-edit-btn:active{color:var(--color-amber-deep);opacity:1}@media (hover:hover) and (pointer:fine){.shopping-item-edit-btn{opacity:0}.shopping-item:hover .shopping-item-edit-btn{opacity:.7}.shopping-item-edit-btn:hover{color:var(--color-amber-deep);opacity:1}}.shopping-item-delete{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;background:transparent;border:none;color:var(--color-faint);cursor:pointer;font-size:14px;border-radius:var(--r-sm);opacity:.6;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:opacity .15s var(--ease-spring),color .15s var(--ease-spring)}.shopping-item-delete:focus{opacity:1}@media (hover:hover) and (pointer:fine){.shopping-item-delete{opacity:0}.shopping-item:hover .shopping-item-delete{opacity:1}.shopping-item-delete:hover{color:var(--color-rose);background:var(--color-paper)}}.shopping-item-delete:active{color:var(--color-rose)}.shopping-item-edit{flex:1 1;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.shopping-item-edit-input{flex:1 1;min-width:120px;border:1px solid var(--color-amber);border-radius:var(--r-sm);font-family:var(--font-display);font-size:16px}.shopping-item-edit-input,.shopping-item-edit-qty{height:36px;padding:0 var(--sp-2);background:var(--color-surface)}.shopping-item-edit-qty{width:60px;border:1px solid var(--color-border);font-size:13px}.shopping-item-edit-qty,.shopping-item-edit-save{border-radius:var(--r-sm);font-family:var(--font-mono)}.shopping-item-edit-save{height:36px;padding:0 var(--sp-3);border:none;background:var(--color-amber-deep);color:var(--color-bg);font-size:11px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.shopping-empty-list{color:var(--color-muted);font-family:var(--font-editorial);font-style:italic;font-size:15px;line-height:1.5}.shopping-empty,.shopping-empty-list{text-align:center;padding:var(--sp-9) var(--sp-4)}.shopping-empty-title{font-family:var(--font-editorial);font-size:22px;color:var(--color-ink);margin:0 0 var(--sp-2);font-weight:500}.shopping-empty-sub{color:var(--color-muted);max-width:360px;margin:0 auto var(--sp-5);font-size:14px;line-height:1.5}.shopping-empty-cta{display:inline-flex;align-items:center;gap:var(--sp-2);padding:12px var(--sp-5);background:var(--color-ink);color:var(--color-bg);border:none;border-radius:var(--r-pill);font-family:var(--font-display);font-weight:500;font-size:14px;cursor:pointer;transition:transform .18s var(--ease-spring)}.shopping-empty-cta:hover{transform:translateY(-1px)}.shopping-actions{margin-top:var(--sp-7);padding-top:var(--sp-5);border-top:1px solid var(--color-border);display:flex;flex-wrap:wrap;gap:var(--sp-2)}.shopping-action{padding:9px 14px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--r-pill);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--color-ink-soft);cursor:pointer}.shopping-action:hover{border-color:var(--color-ink-soft);color:var(--color-ink)}.shopping-action.danger:hover{color:var(--color-rose);border-color:var(--color-rose)}.dialog-backdrop{position:fixed;inset:0;z-index:50;background:rgba(26,22,18,.42);display:grid;place-items:center;padding:var(--sp-4);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.dialog{width:min(440px,100%);max-height:80vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--shadow-3);display:flex;flex-direction:column;gap:var(--sp-4)}.dialog-title{font-family:var(--font-editorial);font-size:22px;margin:0;color:var(--color-ink);font-weight:500}.dialog-help{color:var(--color-muted);font-size:13px;line-height:1.5;margin:0}.dialog-field{display:flex;flex-direction:column;gap:var(--sp-2)}.dialog-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.dialog-input{height:44px;padding:0 var(--sp-3);border:1px solid var(--color-border);border-radius:var(--r-sm);font-family:var(--font-display);font-size:15px;color:var(--color-ink);background:var(--color-paper)}.dialog-input:focus{outline:2px solid var(--color-amber);outline-offset:-1px;border-color:var(--color-amber)}.dialog-actions{display:flex;gap:var(--sp-2);justify-content:flex-end;margin-top:var(--sp-2)}.dialog-button{padding:10px 18px;border-radius:var(--r-pill);border:1px solid var(--color-border);font-family:var(--font-display);font-size:14px;font-weight:500;cursor:pointer}.dialog-button.secondary{background:var(--color-surface);color:var(--color-ink-soft)}.dialog-button.primary{background:var(--color-ink);color:var(--color-bg);border-color:var(--color-ink)}.dialog-button.primary:disabled{opacity:.4;cursor:not-allowed}.reorder-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:50vh;overflow-y:auto}.reorder-row{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3);background:var(--color-paper);border-radius:var(--r-sm);border:1px solid var(--color-border)}.reorder-name{font-family:var(--font-display);font-size:14px;color:var(--color-ink);font-weight:500}.reorder-buttons{display:flex;gap:4px}.reorder-btn{width:36px;height:36px;border-radius:var(--r-sm);border:1px solid var(--color-border);background:var(--color-surface);font-size:16px;cursor:pointer;color:var(--color-ink-soft)}.reorder-btn:hover:not(:disabled){background:var(--color-surface-2);color:var(--color-ink)}.reorder-btn:disabled{opacity:.3;cursor:not-allowed}@media (max-width:480px){.shopping-title{font-size:19px}.shopping-meta{font-size:10px}.shopping-header-row{flex-wrap:wrap}.shopping-meta{width:100%;justify-content:flex-end}}.shopping-all-view{display:flex;flex-direction:column;gap:var(--sp-7)}.shopping-all-summary{font-family:var(--font-display);font-size:14px;color:var(--color-ink-soft);padding:var(--sp-3) var(--sp-4);background:var(--color-paper);border-radius:var(--r-md);border:1px solid var(--color-border)}.shopping-all-summary strong{font-family:var(--font-editorial);font-size:22px;font-weight:500;color:var(--color-ink);margin-right:6px}.shopping-all-list-block{display:flex;flex-direction:column;gap:var(--sp-3)}.shopping-all-list-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-md);cursor:pointer;transition:border-color .15s var(--ease-spring),transform .15s var(--ease-spring);text-align:left}.shopping-all-list-head:hover{border-color:var(--color-border-strong);transform:translateY(-1px)}.shopping-all-list-name{font-family:var(--font-editorial);font-size:18px;font-weight:500;color:var(--color-ink)}.shopping-all-list-meta{display:flex;align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:11px;color:var(--color-muted)}.shopping-all-list-arrow{font-size:14px;color:var(--color-muted);margin-left:4px}.shopping-category.compact .shopping-category-head{margin-top:0}.shopping-all-done{margin-top:var(--sp-2)}.shopping-all-done summary{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);cursor:pointer;padding:var(--sp-2) 0;list-style:none}.shopping-all-done summary::-webkit-details-marker{display:none}.shopping-all-done[open] summary:after{content:" ↑"}.shopping-all-done summary:after{content:" ↓"}.quick-add-chips{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--sp-4)}.quick-add-chips-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.quick-add-chips-row{display:flex;flex-wrap:wrap;gap:6px}.quick-add-chip{display:inline-flex;align-items:center;gap:4px;padding:6px 12px 6px 8px;border-radius:var(--r-pill);border:1px dashed var(--color-border-strong);background:var(--color-paper);font-family:var(--font-display);font-size:13px;color:var(--color-ink-soft);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background .12s var(--ease-spring),border-color .12s var(--ease-spring),transform .12s var(--ease-spring)}.quick-add-chip:active{transform:scale(.95)}@media (hover:hover) and (pointer:fine){.quick-add-chip:hover{background:var(--color-surface);border-color:var(--color-ink-soft);border-style:solid;color:var(--color-ink)}}.quick-add-chip-plus{font-size:14px;color:var(--color-amber-deep);font-weight:600;line-height:1}.quick-add-chip-content{line-height:1}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.shopping-toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 24px);transform:translateX(-50%);z-index:60;padding:12px 20px;border-radius:var(--r-pill);background:var(--color-ink);color:var(--color-bg);font-family:var(--font-display);font-size:14px;font-weight:500;box-shadow:var(--shadow-3);animation:toast-in .25s var(--ease-spring) both;max-width:calc(100% - 32px);text-align:center}.shopping-toast-success{background:var(--color-success)}.shopping-toast-error{background:var(--color-rose)}