@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Figtree:wght@400;500;600;700&display=swap";:root{--bg:#f7f6f2;--bg-elevated:#fffcf7;--ink:#1a1c16;--ink-muted:#4a5240;--olive:#5c6b3a;--olive-deep:#3d4a28;--olive-soft:#e8ecd9;--line:#d9ddd0;--danger:#8b3a2f;--danger-deep:#6e2e25;--focus:#3d4a28;--white:#fffcf7;--shadow:0 18px 40px #1a1c1614;--radius:0;--font-display:"Fraunces", Georgia, serif;--font-body:"Figtree", system-ui, sans-serif;--grain:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");color:var(--ink);background:var(--bg);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body,#root{min-height:100%}body{background:var(--bg);min-width:320px;color:var(--ink);margin:0}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}:focus{outline:none}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.atmosphere{background:radial-gradient(ellipse 80% 60% at 20% 10%, var(--olive-soft) 0%, transparent 55%), radial-gradient(ellipse 70% 50% at 90% 80%, #5c6b3a1f 0%, transparent 50%), linear-gradient(165deg, #faf8f3 0%, var(--bg) 45%, #eef0e6 100%)}.atmosphere:before{content:"";pointer-events:none;opacity:.4;background-image:var(--grain);mix-blend-mode:multiply;position:absolute;inset:0}.btn-primary{background:var(--olive);color:#fffcf7;letter-spacing:.01em;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.875rem 1.5rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:background .2s,transform .2s;display:inline-flex}.btn-primary:hover{background:var(--olive-deep)}.btn-primary:active{transform:scale(.98)}a.btn-ghost,.landing-cta .btn-ghost{color:var(--ink);border:1px solid var(--line);background:0 0;justify-content:center;align-items:center;gap:.5rem;padding:.875rem 1.5rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:border-color .2s,background .2s;display:inline-flex}a.btn-ghost:hover,.landing-cta .btn-ghost:hover{border-color:var(--olive);background:var(--olive-soft)}.btn-text{color:var(--ink-muted);background:0 0;border:none;padding:.35rem 0;font-size:.875rem;font-weight:500;transition:color .2s}.btn-text:hover{color:var(--olive)}.btn{border:1px solid #0000;justify-content:center;align-items:center;gap:.35rem;padding:.7rem 1.1rem;font-weight:600;transition:background .15s,color .15s,transform .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn.btn-ghost{color:var(--ink-muted);background:0 0;border-color:#0000}.btn.btn-ghost:hover{color:var(--ink);background:#1a1c160d}.btn-danger:hover{color:var(--danger);background:#8b3a2f14}.skip-link{z-index:100;background:var(--olive-deep);color:#fffcf7;padding:.75rem 1rem;font-size:.875rem;font-weight:500;text-decoration:none;position:absolute;top:-100px;left:1rem}.skip-link:focus{top:1rem}.reveal{opacity:0;transition:opacity .55s cubic-bezier(.22,1,.36,1),transform .55s cubic-bezier(.22,1,.36,1);transform:translateY(16px)}.reveal-delay{transition-delay:.1s}.reveal.is-visible{opacity:1;transform:translateY(0)}.landing{background:var(--bg);min-height:100vh}.landing-hero{flex-direction:column;min-height:100svh;display:flex;position:relative;overflow:hidden}.landing-hero-inner{z-index:10;flex-direction:column;flex:1;width:100%;max-width:72rem;margin:0 auto;padding:2rem 1.5rem 4rem;display:flex;position:relative}@media (width>=768px){.landing-hero-inner{padding:2rem 2.5rem 4rem}}.landing-nav{justify-content:space-between;align-items:center;display:flex}.landing-nav-brand{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:1.125rem;font-weight:600}@media (width>=768px){.landing-nav-brand{font-size:1.25rem}}.landing-hero-copy{flex-direction:column;flex:1;justify-content:center;gap:1.75rem;max-width:36rem;padding:4rem 0;animation:.75s cubic-bezier(.22,1,.36,1) both rise;display:flex}@media (width>=768px){.landing-hero-copy{padding:6rem 0}}.landing-brand{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0;font-size:clamp(2.75rem,8vw,5.5rem);font-weight:600;line-height:.95;animation:.75s cubic-bezier(.22,1,.36,1) both rise}.landing-lede{max-width:28rem;color:var(--ink-muted);margin:0;font-size:1.125rem;line-height:1.65;animation:.75s cubic-bezier(.22,1,.36,1) .12s both rise}@media (width>=768px){.landing-lede{font-size:1.25rem}}.landing-cta{flex-wrap:wrap;align-items:center;gap:1rem;animation:.65s cubic-bezier(.22,1,.36,1) .22s both rise;display:flex}.landing-hero-visual{pointer-events:none;width:100%;min-height:14rem;margin-top:-1rem;margin-bottom:2rem;animation:1s cubic-bezier(.22,1,.36,1) .15s both slide-in;position:relative}@media (width>=768px){.landing-hero-visual{inset-block:0;width:48%;min-height:0;margin:0;position:absolute;right:0}}.landing-hero-wash{background:linear-gradient(270deg,#5c6b3a40,#e8ecd966,#0000);position:absolute;inset:0}@media (width<=767px){.landing-hero{min-height:auto}.landing-hero-copy{flex:0;padding:2.5rem 0 1.5rem}.landing-hero-wash{background:linear-gradient(#0000,#e8ecd959,#5c6b3a38)}.landing-hero-panel{aspect-ratio:16/11;width:min(100%,22rem);margin:0 auto;position:relative;bottom:auto;left:auto;right:auto}.landing-hero-panel-inner{inset:auto 1.25rem 1.25rem}.landing-panel-title{margin-bottom:.65rem;font-size:1.35rem}.landing-panel-lines{gap:.45rem;font-size:.8rem}}.landing-hero-panel{aspect-ratio:4/5;background:linear-gradient(145deg,#3d4a28 0%,#5c6b3a 40%,#8a9a62 100%);position:absolute;bottom:12%;left:20%;right:8%;overflow:hidden}.landing-hero-panel:after{content:"";opacity:.3;mix-blend-mode:overlay;background-image:var(--grain);position:absolute;inset:0}.landing-hero-panel-inner{color:#fffcf7;position:absolute;inset:auto 2.5rem 2.5rem}.landing-panel-title{font-family:var(--font-display);margin:0 0 1rem;font-size:1.875rem;font-weight:500;line-height:1.15}.landing-panel-lines{color:#fffcf7cc;flex-direction:column;gap:.75rem;font-size:.875rem;line-height:1.5;display:flex}.landing-panel-lines p{border-bottom:1px solid #fff3;margin:0;padding-bottom:.5rem}.landing-panel-lines p:last-child{border-bottom:none;padding-bottom:0}.landing-section{padding:6rem 1.5rem}@media (width>=768px){.landing-section{padding:8rem 2.5rem}}.landing-narrow{max-width:48rem;margin:0 auto}.landing-section-soft{border-top:1px solid var(--line);background:color-mix(in srgb, var(--olive-soft) 40%, transparent)}.landing-section-demo{border-top:1px solid var(--line);background:var(--bg)}.landing-section-border{border-top:1px solid var(--line)}.landing-section-center{text-align:center}.section-title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:600}.section-body,.section-lede{max-width:36rem;color:var(--ink-muted);margin:1.5rem 0 0;font-size:1.125rem;line-height:1.65}.section-lede{margin-top:1rem}.section-lede-center{margin-left:auto;margin-right:auto}.section-link{color:var(--olive);margin-top:1.5rem;font-weight:500;text-decoration:none;transition:color .2s;display:inline-block}.section-link:hover{color:var(--olive-deep);text-decoration:underline}.landing-begin-btn{margin-top:2rem}.demo-panel{border:1px solid var(--line);background:var(--bg-elevated);margin-top:2.5rem;overflow:hidden}.demo-panel-head{border-bottom:1px solid var(--line);padding:1rem 1.25rem}.demo-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);margin:0;font-size:.75rem;font-weight:500}.demo-day{font-family:var(--font-display);color:var(--ink);margin:.25rem 0 0;font-size:1.5rem;font-weight:500}.demo-groups{flex-direction:column;gap:2rem;padding:1.5rem 1.25rem;display:flex}.demo-group-label{font-family:var(--font-display);color:var(--olive-deep);margin:0;font-size:1.125rem;font-weight:500}.demo-list{flex-direction:column;gap:.75rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.demo-item{border:1px solid var(--line);border-left:3px solid var(--olive);background:var(--bg);align-items:flex-start;gap:.75rem;padding:.75rem;display:flex}.demo-item.is-done{opacity:.72}.demo-item.is-done .demo-item-name{text-decoration:line-through;text-decoration-thickness:1px}.demo-check{border:1px solid var(--line);background:var(--bg-elevated);color:#fffcf7;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;margin-top:.1rem;font-size:.75rem;display:flex}.demo-check.is-checked{border-color:var(--olive);background:var(--olive)}.demo-item-body{flex-wrap:wrap;flex:1;justify-content:space-between;align-items:baseline;gap:.5rem;min-width:0;display:flex}.demo-item-name{color:var(--ink);margin:0;font-weight:500}.demo-item-qty{color:var(--ink-muted);margin:0;font-size:.75rem}.demo-stats{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.demo-stat{padding:1rem 1.25rem}.demo-stat:first-child{border-right:1px solid var(--line)}.demo-stat-label{color:var(--ink-muted);margin:0;font-size:.75rem}.demo-stat-value{color:var(--olive-deep);margin:.25rem 0 0;font-weight:500}.faq-list{margin:2.5rem 0 0}.faq-item{margin:0 0 2rem}.faq-item:last-child{margin-bottom:0}.faq-q{font-family:var(--font-display);letter-spacing:-.02em;color:var(--olive-deep);font-size:1.25rem;font-weight:500}.faq-a{color:var(--ink-muted);margin:.5rem 0 0;font-size:1rem;line-height:1.65}.site-footer{border-top:1px solid var(--line);padding:2rem 1.5rem}.site-footer-inner{text-align:center;max-width:48rem;color:var(--ink-muted);flex-direction:column;align-items:center;gap:1rem;margin:0 auto;font-size:.875rem;display:flex}.site-footer-inner p{margin:0}.site-footer-nav{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.site-footer-nav a{text-decoration:none;transition:color .2s}.site-footer-nav a:hover{color:var(--olive)}@media (width>=640px){.site-footer-inner{text-align:left;flex-direction:row;justify-content:space-between}}.app{isolation:isolate;min-height:100vh;padding:clamp(1.5rem,4vw,3rem) clamp(1rem,4vw,2rem) 3rem;position:relative;overflow:hidden}.app>.atmosphere{z-index:-1;position:fixed;inset:0}.app-topbar{justify-content:space-between;align-items:center;max-width:42rem;margin:0 auto 1.25rem;animation:.6s both rise;display:flex}.app-topbar-actions{align-items:center;gap:1rem;display:flex}.app-error{border:1px solid color-mix(in srgb, var(--danger) 35%, var(--line));background:color-mix(in srgb, var(--danger) 8%, var(--bg-elevated));color:var(--danger);margin:0 0 1rem;padding:.75rem 1rem;font-size:.9rem}.auth-page{justify-content:center;align-items:center;min-height:100svh;padding:2rem 1.5rem;display:flex;position:relative;overflow:hidden}.auth-card{z-index:1;width:100%;max-width:28rem;position:relative}.auth-brand{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);cursor:pointer;background:0 0;border:none;margin:0 0 2.5rem;padding:0;font-size:1.125rem;font-weight:600;display:inline-block}p.auth-brand{cursor:default}.auth-title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:600}.auth-lede{color:var(--ink-muted);margin:.75rem 0 0;line-height:1.55}.auth-form{flex-direction:column;gap:1.25rem;margin-top:2.5rem;display:flex}.auth-submit{width:100%}.auth-error{color:var(--danger);margin:0;font-size:.9rem}.auth-status{border:1px solid color-mix(in srgb, var(--olive) 30%, var(--line));background:color-mix(in srgb, var(--olive-soft) 60%, transparent);margin-top:2.5rem;padding:1.25rem 1.5rem}.auth-status-title{color:var(--olive-deep);margin:0;font-weight:600}.auth-status-text{color:var(--ink-muted);margin:.5rem 0 0;font-size:.9rem}.hero{max-width:42rem;margin:0 auto 1.75rem;animation:.7s both rise}.hero-app .headline{margin:0 0 .65rem}.headline{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0 0 .65rem;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:600}.lede{max-width:28rem;color:var(--ink-muted);margin:0;font-size:1.05rem;line-height:1.5;animation:.7s .1s both rise}.panel{max-width:42rem;margin:0 auto;animation:.7s .18s both rise}.add-form{background:color-mix(in srgb, var(--bg-elevated) 88%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);grid-template-columns:1fr;gap:.75rem;margin-bottom:1.25rem;padding:1rem;display:grid}@media (width>=640px){.add-form{grid-template-columns:1fr auto auto auto;align-items:end;gap:.65rem}}.field{flex-direction:column;gap:.35rem;display:flex}.field-grow{min-width:0}.field-qty,.field-category{width:100%}@media (width>=640px){.field-qty{width:4.5rem}.field-category{width:9.5rem}}.field-label{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted);font-size:.75rem;font-weight:600}.input{width:100%;color:var(--ink);background:var(--bg-elevated);border:1px solid var(--line);outline:none;padding:.7rem .85rem;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--olive-deep);box-shadow:0 0 0 3px color-mix(in srgb, var(--olive) 35%, transparent)}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%231a1c16' d='M1.4.6 6 5.2 10.6.6 12 2 6 8 0 2z'/%3E%3C/svg%3E");background-position:right .85rem center;background-repeat:no-repeat;padding-right:2rem}.add-form .btn-primary,.edit-actions .btn-primary{padding:.7rem 1.1rem;font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:.85rem;display:flex}.toolbar-count{color:var(--ink-muted);flex:auto;margin:0;font-size:.95rem;font-weight:500}.filters{background:#1a1c160d;gap:.25rem;padding:.2rem;display:flex}.filter-btn{color:var(--ink-muted);background:0 0;border:none;padding:.4rem .75rem;font-size:.875rem;font-weight:600;transition:background .15s,color .15s}.filter-btn:hover{color:var(--ink)}.filter-btn.is-active{color:var(--olive-deep);background:var(--bg-elevated)}.toolbar-actions{flex-wrap:wrap;gap:.25rem;margin-left:auto;display:flex}.item-list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.item-row{background:color-mix(in srgb, var(--bg-elevated) 92%, transparent);border:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.85rem .9rem;transition:opacity .2s,background .2s;animation:.4s both item-in;display:grid}.item-row.is-done{opacity:.62}.item-row.is-done .item-name{color:var(--ink-muted);text-decoration:line-through;text-decoration-thickness:1.5px}.item-row-editing{grid-template-columns:1fr}.check{background:var(--bg-elevated);border:2px solid var(--line);place-items:center;width:1.65rem;height:1.65rem;padding:0;transition:border-color .15s,background .15s,transform .15s;display:grid}.check:hover{border-color:var(--olive)}.item-row.is-done .check{background:var(--olive);border-color:var(--olive)}.check-mark{border:2px solid #fffcf7;border-width:0 2px 2px 0;width:.55rem;height:.9rem;margin-top:-2px;transition:transform .18s;transform:rotate(45deg)scale(0)}.item-row.is-done .check-mark{transform:rotate(45deg)scale(1)}.item-body{min-width:0}.item-name{word-break:break-word;margin:0;font-size:1.05rem;font-weight:600;line-height:1.3}.item-qty{color:var(--olive);font-variant-numeric:tabular-nums}.item-meta{letter-spacing:.02em;color:var(--ink-muted);margin:.15rem 0 0;font-size:.8rem;font-weight:500}.item-actions{flex-shrink:0;gap:.15rem;display:flex}.edit-form{grid-template-columns:1fr;gap:.5rem;width:100%;display:grid}@media (width>=560px){.edit-form{grid-template-columns:1fr 4.5rem 9rem auto;align-items:center}}.input-qty{max-width:100%}.edit-actions{gap:.35rem;display:flex}.empty{text-align:center;border:1px dashed var(--line);padding:2.5rem 1rem;animation:.45s both rise}.empty-title{font-family:var(--font-display);margin:0 0 .35rem;font-size:1.35rem;font-weight:500}.empty-text{color:var(--ink-muted);margin:0}.footer{text-align:center;max-width:42rem;color:var(--ink-muted);margin:2rem auto 0;font-size:.8rem;animation:.7s .28s both rise}.footer p{margin:0}.list-switcher{flex-wrap:wrap;align-items:end;gap:.75rem;margin-bottom:1rem;display:flex}.list-switcher-actions{flex-wrap:wrap;gap:.25rem;padding-bottom:.15rem;display:flex}.list-inline-form{flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;display:flex}.list-inline-form .input{flex:12rem}.app-tools-row{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.share-panel{position:relative}.share-card{border:1px solid var(--line);background:var(--bg-elevated);margin-top:.75rem;padding:1rem}.share-title{font-family:var(--font-display);margin:0;font-size:1.15rem;font-weight:500}.share-text{color:var(--ink-muted);margin:.35rem 0 .85rem;font-size:.9rem}.share-form{flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem;display:flex}.share-form .input{flex:12rem}.share-link-row{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.share-link-row .input{flex:12rem;font-size:.8rem}.share-status{color:var(--olive-deep);margin:.65rem 0 0;font-size:.85rem}.templates{margin-bottom:1.1rem}.template-row{flex-wrap:wrap;gap:.45rem;margin-top:.4rem;display:flex}.template-chip{border:1px solid var(--line);background:var(--bg-elevated);color:var(--ink);padding:.45rem .85rem;font-size:.875rem;font-weight:500;transition:border-color .15s,background .15s}.template-chip:hover{border-color:var(--olive);background:var(--olive-soft)}.aisle-groups{flex-direction:column;gap:1.35rem;display:flex}.aisle-title{font-family:var(--font-display);color:var(--olive-deep);margin:0 0 .55rem;font-size:1.15rem;font-weight:500}.undo-toast{z-index:50;background:var(--ink);color:#fffcf7;box-shadow:var(--shadow);align-items:center;gap:.75rem;max-width:calc(100vw - 2rem);padding:.75rem 1rem;font-size:.9rem;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%)}.undo-toast .btn-text{color:#fffcf7}.settings-panel{border-top:1px solid var(--line);margin-top:2.5rem;padding-top:1.5rem}.settings-title{font-family:var(--font-display);margin:0;font-size:1.25rem;font-weight:500}.settings-text{color:var(--ink-muted);margin:.5rem 0 .85rem;font-size:.9rem;line-height:1.5}.settings-confirm{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.app-legal-links{gap:1rem;margin-top:1.5rem;display:flex}.legal-page{min-height:100svh;padding:2rem 1.5rem 3rem;position:relative;overflow:hidden}.legal-inner{z-index:1;max-width:40rem;margin:0 auto;position:relative}.legal-body{color:var(--ink-muted);margin:1.5rem 0 2rem;line-height:1.65}.legal-body h2{font-family:var(--font-display);color:var(--ink);margin:1.75rem 0 .5rem;font-size:1.15rem;font-weight:600}.legal-body p{margin:0 0 1rem}.legal-body a{color:var(--olive)}.settings-collapse>.settings-summary{cursor:pointer;font-family:var(--font-display);color:var(--ink);font-size:1.05rem;font-weight:600;list-style:none}.settings-collapse>.settings-summary::-webkit-details-marker{display:none}.settings-collapse[open]>.settings-summary{margin-bottom:.75rem}.btn-sm{padding:.45rem .85rem;font-size:.875rem}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes item-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}
