:root{--bg: #f4f6f3;--surface: #ffffff;--surface-2: #f0f3ee;--text: #1c2420;--muted: #5f6b65;--border: #dde3dd;--accent: #1b7f5a;--accent-hover: #166a4b;--accent-soft: #e2f3ea;--danger: #c0392b;--danger-soft: #fdecea;--focus: #2d6cdf;--shadow: 0 1px 2px rgba(20, 30, 25, .06), 0 8px 24px -12px rgba(20, 30, 25, .18);--radius: 14px;--radius-sm: 9px;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #101513;--surface: #182019;--surface-2: #1f2a22;--text: #e8ede9;--muted: #9aa69f;--border: #2a3630;--accent: #3fbf86;--accent-hover: #5ccf98;--accent-soft: #1d3a2d;--danger: #ef6b5e;--danger-soft: #3a211e;--focus: #7aa7ff;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 28px -12px rgba(0, 0, 0, .6)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:16px;line-height:1.45;color:var(--text);background:radial-gradient(1200px 500px at 50% -200px,var(--accent-soft),transparent 70%),var(--bg);min-height:100dvh}h1,h2,p{margin:0}button,input,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:12px;top:-60px;background:var(--accent);color:#fff;padding:8px 14px;border-radius:var(--radius-sm);z-index:100;text-decoration:none;font-weight:600;transition:top .15s}.skip-link:focus{top:12px}.app{max-width:1040px;margin:0 auto;padding:20px 16px 48px}.app-header{padding:12px 0 20px}.brand{display:flex;align-items:center;gap:12px;color:var(--accent)}.brand h1{font-size:1.6rem;letter-spacing:-.02em;color:var(--text)}.tagline{color:var(--muted);font-size:.95rem}.layout{display:grid;gap:20px;grid-template-columns:1fr}@media(min-width:880px){.layout{grid-template-columns:340px 1fr;align-items:start}.panel-add{position:sticky;top:20px}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.panel h2{font-size:1.05rem;font-weight:650}.add-form{display:grid;gap:14px;margin-top:14px;grid-template-columns:1fr 1fr}.field-name,.field-cat,.field-submit,.field-qty{grid-column:1 / -1}@media(min-width:560px)and (max-width:879px){.add-form{grid-template-columns:2fr 1fr 1.4fr auto;align-items:end}.field-name,.field-qty,.field-cat,.field-submit{grid-column:auto}}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.85rem;font-weight:600;color:var(--muted)}input[type=text],input[type=number],select{width:100%;padding:11px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);transition:border-color .15s,background .15s;min-height:44px}input:focus-visible,select:focus-visible{border-color:var(--accent);background:var(--surface);outline-offset:0}input.invalid,input[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);font-size:.82rem;min-height:0}.field-error:empty{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 18px;border-radius:var(--radius-sm);border:1.5px solid transparent;font-weight:600;cursor:pointer;min-height:44px;transition:background .15s,color .15s,border-color .15s,transform .05s}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:#fff;width:100%}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn-ghost:hover{background:var(--surface-2)}.btn-danger-text{color:var(--danger)}.btn-danger-text:hover{background:var(--danger-soft);border-color:transparent}.btn-sm{padding:8px 14px;min-height:38px;width:auto}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn:disabled:hover{background:transparent}.link-btn{background:none;border:0;padding:4px 0;color:var(--accent);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:0;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.delete-btn:hover{background:var(--danger-soft);color:var(--danger)}.list-header{display:flex;flex-direction:column;gap:16px}.progress-block{display:flex;flex-direction:column;gap:10px}.progress-text{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px}.progress-label{color:var(--muted);font-size:.92rem}.progress-bar{height:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;overflow:hidden}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--accent),#58c892);border-radius:999px;transition:width .35s ease}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding-top:14px;border-top:1px solid var(--border)}.filters{display:inline-flex;padding:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;gap:2px}.filter-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:0;background:transparent;border-radius:999px;font-weight:600;font-size:.9rem;color:var(--muted);cursor:pointer;min-height:36px;transition:background .15s,color .15s}.filter-btn[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}.filter-btn .count{font-size:.75rem;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--border);color:var(--text)}.filter-btn[aria-pressed=true] .count{background:var(--accent-soft);color:var(--accent)}@media(max-width:420px){.filters{width:100%;justify-content:space-between}.filter-btn{flex:1;justify-content:center;padding-inline:6px;font-size:.85rem}#clear-purchased{width:100%}}.item-list{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:10px 10px 10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);transition:background .2s,opacity .2s;animation:item-in .18s ease-out}@keyframes item-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.item{animation:none}.progress-fill{transition:none}}.item:hover{background:var(--surface-2)}.item.purchased{background:var(--surface-2);opacity:.78}.check-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;cursor:pointer}.item-check{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;width:100%;height:100%}.check-visual{width:24px;height:24px;border:2px solid var(--muted);border-radius:7px;background:var(--surface);display:grid;place-items:center;transition:background .15s,border-color .15s}.check-visual:after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) scale(0);margin-top:-3px;transition:transform .15s}.item-check:checked+.check-visual{background:var(--accent);border-color:var(--accent)}.item-check:checked+.check-visual:after{transform:rotate(45deg) scale(1)}.item-check:focus-visible+.check-visual{outline:3px solid var(--focus);outline-offset:2px}.item-body{min-width:0;display:flex;flex-direction:column;gap:3px}.item-main{display:flex;align-items:baseline;gap:8px;min-width:0}.item-name{font-weight:600;overflow-wrap:anywhere}.item-qty{color:var(--muted);font-size:.9rem;white-space:nowrap}.purchased .item-name{text-decoration:line-through;color:var(--muted)}.item-category{align-self:flex-start;font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.item-category[data-category=Produce]{background:#e2f3ea;color:#1b7f5a}.item-category[data-category="Dairy & Eggs"]{background:#fff4d6;color:#8a6400}.item-category[data-category="Meat & Seafood"]{background:#fde6e3;color:#a63a2c}.item-category[data-category=Bakery]{background:#f6e9d9;color:#8a5a1e}.item-category[data-category=Pantry]{background:#ece8f8;color:#5a3fa6}.item-category[data-category=Frozen]{background:#e0f0fb;color:#1e5f8a}.item-category[data-category=Beverages]{background:#e0f5f5;color:#1a6b6b}.item-category[data-category=Household]{background:#eceff1;color:#455a64}.item-category[data-category=Other]{background:#ededed;color:#555}@media(prefers-color-scheme:dark){.item-category[data-category]{background:var(--surface-2);color:var(--accent);filter:none}}.item-actions{display:flex;gap:2px}.item-editing{grid-template-columns:1fr;background:var(--surface-2)}.edit-form{display:grid;gap:10px;grid-template-columns:1fr}.edit-form label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:600;color:var(--muted)}.edit-actions{display:flex;gap:8px}@media(min-width:640px){.edit-form{grid-template-columns:2fr .8fr 1.4fr auto;align-items:start}.edit-actions{align-self:end;margin-bottom:2px}}.empty-state{text-align:center;padding:44px 16px;margin-top:16px;border:1.5px dashed var(--border);border-radius:var(--radius-sm);color:var(--muted)}.empty-icon{font-size:2.2rem;margin-bottom:8px}.empty-title{font-weight:650;color:var(--text);font-size:1.05rem}.empty-hint{font-size:.92rem;margin-top:4px}.app-footer{margin-top:28px;text-align:center;color:var(--muted);font-size:.85rem;display:flex;flex-direction:column;gap:6px;align-items:center}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%,20px);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:.9rem;font-weight:500;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:calc(100% - 32px);z-index:50}.toast.show{opacity:1;transform:translate(-50%)}
