@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');

:root{--bg:#f4f5ee;--paper:#fffefa;--ink:#25372e;--muted:#788078;--green:#2b5946;--green-dark:#204433;--line:#e3e6dc;--sage:#e8eee5;--orange:#d88350;--shadow:0 20px 65px rgba(39,57,44,.08);font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #9ebd9f;outline-offset:3px}button:disabled{cursor:not-allowed}svg{display:block}.site-header{height:92px;max-width:1240px;padding:0 32px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(62,81,66,.1)}.brand{display:flex;align-items:center;text-decoration:none;color:var(--green);font:800 27px 'Manrope',sans-serif;letter-spacing:-1.3px}.brand svg{width:32px;height:32px;margin-right:10px;fill:var(--green);stroke:var(--green);stroke-width:1.8;stroke-linejoin:round}.brand svg path+path{fill:none;stroke:var(--bg)}.brand-dot{color:var(--orange)}.local-note{display:flex;align-items:center;gap:8px;font-size:13px;color:#667369}.status-dot{width:7px;height:7px;border-radius:50%;background:#78a37d;box-shadow:0 0 0 4px rgba(120,163,125,.12)}.shell{max-width:1240px;margin:0 auto;padding:64px 32px 52px;display:grid;grid-template-columns:320px 1fr;gap:74px;align-items:start}.intro{padding-top:24px;position:sticky;top:32px}.eyebrow{margin:0 0 14px;text-transform:uppercase;letter-spacing:2.2px;font-weight:700;font-size:10px;color:#7d8b7d}.intro h1{font:700 44px/1.13 'Manrope',sans-serif;letter-spacing:-2.2px;margin:0 0 22px}.intro-copy{font-size:16px;line-height:1.75;color:var(--muted);margin:0}.progress-card{margin-top:48px;padding-top:26px;border-top:1px solid #d8ddd2}.progress-topline{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#6e796f}.progress-topline strong{font:700 14px 'Manrope',sans-serif;color:var(--green)}.progress-track{height:7px;background:#e0e5da;border-radius:20px;margin:13px 0;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:var(--green);border-radius:20px;transition:width .35s ease}.progress-card p{font-size:12px;color:var(--muted);margin:0}.list-panel{background:var(--paper);border:1px solid rgba(62,81,66,.08);border-radius:20px;padding:34px 36px 22px;box-shadow:var(--shadow)}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.panel-heading .eyebrow{margin-bottom:7px}.panel-heading h2,.dialog-heading h2{font:700 26px 'Manrope',sans-serif;letter-spacing:-1px;margin:0}.item-count{font-size:12px;font-weight:600;background:var(--sage);color:var(--green);border-radius:20px;padding:7px 11px}.form-row{display:grid;grid-template-columns:minmax(140px,1fr) 76px 130px auto;gap:10px;align-items:start}.field{position:relative;min-width:0}.field label{display:block;font-size:11px;font-weight:600;margin:0 0 7px 2px;color:#626e64}.field input,.field select{width:100%;height:44px;background:#f8f8f3;border:1px solid #e1e4da;border-radius:9px;color:var(--ink);padding:0 12px;font-size:13px;outline:none;transition:border-color .2s,background .2s}.field input::placeholder{color:#a2a79f}.field input:focus,.field select:focus{border-color:#84a48d;background:white}.field input[aria-invalid=true]{border-color:#b95343}.field select{cursor:pointer;padding-right:5px}.field-error{display:block;color:#a64032;font-size:10px;position:absolute;left:2px;top:69px;white-space:nowrap}.add-button{border:0;background:var(--green);color:white;border-radius:9px;height:44px;padding:0 16px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:600;margin-top:21px;transition:background .2s,transform .2s}.add-button:hover{background:var(--green-dark);transform:translateY(-1px)}.add-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.list-toolbar{display:flex;align-items:center;justify-content:space-between;margin-top:37px;border-bottom:1px solid var(--line);padding-bottom:15px;gap:12px}.filters{display:flex;gap:4px}.filter{border:0;background:transparent;border-radius:7px;padding:8px 10px;font-size:12px;font-weight:500;color:#788078;transition:background .15s}.filter span{display:inline-flex;min-width:18px;justify-content:center;margin-left:3px;padding:1px 4px;border-radius:8px;background:#eef0e9;font-size:10px}.filter.active{background:var(--sage);color:var(--green)}.filter.active span{background:#d7e2d3}.filter:hover{color:var(--green)}.clear-button{border:0;background:transparent;color:#7d867e;font-size:11px;padding:8px 0}.clear-button:not(:disabled):hover{color:#a54d3d}.clear-button:disabled{opacity:.45}.grocery-list{list-style:none;margin:0;padding:0}.grocery-item{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:12px;padding:19px 0;border-bottom:1px solid #eceee7;animation:appear .22s ease}.check-button{border:1.5px solid #bdc8b9;background:white;width:25px;height:25px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-left:2px;color:white;transition:background .2s,border-color .2s}.check-button:hover{border-color:var(--green)}.check-button svg{width:16px;height:16px;stroke:currentColor;stroke-width:2.5;fill:none;opacity:0}.grocery-item.purchased .check-button{background:var(--green);border-color:var(--green)}.grocery-item.purchased .check-button svg{opacity:1}.item-main{min-width:0}.item-title-line{display:flex;align-items:center;gap:8px;min-width:0}.item-name{font-size:14px;font-weight:600;overflow-wrap:anywhere}.quantity-label{font-size:10px;color:#7b857c;background:#f0f2eb;padding:2px 6px;border-radius:5px;white-space:nowrap}.item-category{display:flex;align-items:center;gap:5px;font-size:11px;color:#8b938a;margin-top:5px}.category-dot{width:5px;height:5px;border-radius:50%;background:var(--category-color,#87a17e)}.purchased .item-name{text-decoration:line-through;color:#929a91}.purchased .item-main{opacity:.72}.item-actions{display:flex;gap:4px;opacity:0;transition:opacity .15s}.grocery-item:hover .item-actions,.grocery-item:focus-within .item-actions{opacity:1}.icon-button{width:33px;height:33px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;border-radius:8px;color:#8c958c}.icon-button:hover{background:#f0f2eb;color:var(--green)}.icon-button.delete:hover{background:#fbefeb;color:#b25d46}.icon-button svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}.empty-state{text-align:center;padding:40px 20px 35px}.empty-illustration{width:70px;height:70px;margin:0 auto 18px;background:var(--sage);border-radius:50%;display:grid;place-items:center}.empty-illustration svg{width:44px;height:44px;fill:none;stroke:#75917c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.empty-state h3{font:600 17px 'Manrope',sans-serif;margin:0 0 8px}.empty-state p{color:var(--muted);font-size:13px;line-height:1.6;max-width:280px;margin:auto}.keyboard-hint{text-align:center;font-size:10px;color:#a0a69d;margin:23px 0 0}.keyboard-hint span{margin:0 5px}.keyboard-hint kbd{font:inherit;background:#f3f4ef;border:1px solid #e7e9e1;padding:1px 4px;border-radius:3px}footer{max-width:1240px;padding:0 32px 30px;margin:auto;display:flex;justify-content:space-between;font-size:10px;color:#949b92;letter-spacing:.2px}dialog{border:1px solid var(--line);border-radius:18px;padding:30px;width:min(460px,calc(100% - 32px));color:var(--ink);box-shadow:0 25px 100px rgba(25,44,31,.22)}dialog::backdrop{background:rgba(26,39,31,.45);backdrop-filter:blur(4px)}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:26px}.dialog-heading .eyebrow{margin-bottom:6px}.dialog-heading .icon-button{margin-top:-6px;margin-right:-8px}.dialog-fields{display:grid;grid-template-columns:1fr 1.4fr;gap:14px;margin-top:22px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:28px}.dialog-actions .add-button{margin:0}.cancel-button{border:1px solid var(--line);background:white;border-radius:9px;color:var(--ink);padding:0 16px;font-size:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes appear{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1100px){.shell{grid-template-columns:320px minmax(0,750px);justify-content:space-between}.intro:after{content:'';display:block;width:135px;height:120px;margin:47px 0 0 30px;background:radial-gradient(ellipse at center,transparent 55%,#dfe5d8 56%,#dfe5d8 59%,transparent 60%);opacity:.65;transform:rotate(-20deg)}}
@media(max-width:1050px){.shell{grid-template-columns:250px 1fr;gap:35px}.intro h1{font-size:36px}.list-panel{padding:28px 25px}.form-row{grid-template-columns:1fr 75px}.name-field{grid-column:1/-1}.category-field{grid-column:1}.add-button{grid-column:2}.field-error{position:static;margin-top:4px}.list-toolbar{margin-top:25px}}
@media(max-width:760px){.site-header{height:72px;padding:0 20px}.brand{font-size:24px}.brand svg{width:28px;height:28px}.local-note{font-size:11px}.shell{display:block;padding:34px 16px 30px}.intro{position:static;padding:0 5px 30px}.intro h1{font-size:37px;letter-spacing:-1.8px}.intro h1 br{display:none}.intro-copy{font-size:14px}.intro-copy br{display:none}.eyebrow{margin-bottom:10px}.progress-card{margin-top:24px;padding-top:19px}.progress-track{margin:10px 0}.list-panel{padding:25px 20px 19px;border-radius:16px}.panel-heading{margin-bottom:24px}.panel-heading h2{font-size:24px}.form-row{grid-template-columns:minmax(0,1fr) 80px}.name-field{grid-column:1/-1}.category-field{grid-column:1}.add-button{grid-column:2;padding:0 10px}.add-button svg{display:none}.list-toolbar{align-items:flex-end;flex-wrap:wrap;margin-top:28px}.filters{gap:0}.filter{padding:8px}.clear-button{font-size:10px}.grocery-item{grid-template-columns:32px minmax(0,1fr) auto;gap:9px}.item-actions{opacity:1}.icon-button{width:30px}.keyboard-hint{line-height:1.8;margin-top:20px}footer{padding:0 20px 24px;gap:10px;font-size:9px}.empty-state{padding:30px 10px}}
@media(max-width:390px){.local-note{font-size:0;gap:0}.status-dot{width:8px;height:8px}.intro h1{font-size:33px}.list-panel{padding:22px 15px}.filter{font-size:11px;padding:7px 6px}.filter span{margin-left:1px}.clear-button{padding-right:2px}.item-title-line{flex-wrap:wrap;gap:5px}.keyboard-hint{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
