:root{color:#202a23;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;--color-ink:#202a23;--color-muted:#788078;--color-line:#e8ebe4;--color-paper:#fff;--color-canvas:#f5f6f1;--color-green:#315d43;--color-green-dark:#244a34;--color-green-soft:#edf4ed;--color-danger:#a1483e;--radius-card:22px;background:#f5f6f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--color-canvas);min-width:320px;min-height:100%}body{background:radial-gradient(ellipse at 50% 0, #e2ebdb9e, transparent 34rem), var(--color-canvas);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.48}#root{min-height:100vh}.app-shell{width:min(100% - 32px,560px);padding:max(28px, env(safe-area-inset-top)) 0 max(36px, env(safe-area-inset-bottom));margin:0 auto}.topbar{justify-content:space-between;align-items:center;gap:16px;padding:8px 2px 28px;display:flex}.topbar__identity{align-items:center;gap:13px;min-width:0;display:flex}.brand-mark{background:var(--color-green);color:#fff;border-radius:17px;flex:none;place-items:center;width:48px;height:48px;display:grid}.brand-mark svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:25px;height:25px}.eyebrow{color:var(--color-muted);letter-spacing:.11em;text-transform:uppercase;margin:0 0 5px;font-size:.7rem;font-weight:700;line-height:1.2}h1,h2,p{overflow-wrap:anywhere}h1{color:var(--color-ink);letter-spacing:-.055em;margin:0;font-size:clamp(1.65rem,8vw,2rem);font-weight:750;line-height:1.05}h2{color:var(--color-ink);letter-spacing:-.035em;margin:0;font-size:1.15rem;font-weight:700}.connection-badge{border:1px solid var(--color-line);color:#59645b;white-space:nowrap;background:#ffffffb8;border-radius:999px;flex:none;align-items:center;gap:7px;padding:8px 11px;font-size:.72rem;font-weight:650;display:inline-flex}.connection-badge__dot{background:#5a9a69;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #5a9a6921}.connection-badge--offline .connection-badge__dot{background:#c36c57;box-shadow:0 0 0 3px #c36c5721}.app-layout{gap:14px;display:grid}.panel{border-radius:var(--radius-card);background:var(--color-paper);border:1px solid #e2e6dde6;min-width:0;padding:21px;box-shadow:0 8px 28px #2b3a2a0b}.section-heading{margin-bottom:16px}.section-heading .eyebrow,.list-heading .eyebrow{color:#7a8b76}.add-form{gap:9px;display:grid}.add-form__controls{gap:9px;display:flex}.add-form input{width:100%;min-width:0;min-height:52px;color:var(--color-ink);background:#f8f9f6;border:1px solid #e6e9e2;border-radius:15px;outline:none;padding:0 15px;font-size:.95rem;transition:border-color .16s,box-shadow .16s,background .16s}.add-form input::placeholder{color:#a0a69e}.add-form input:focus{background:#fff;border-color:#8eaa91;box-shadow:0 0 0 4px #5b83621c}.button,.add-form button,.shopping-item__delete{border:0;border-radius:14px;justify-content:center;align-items:center;min-height:48px;font-size:.88rem;font-weight:700;transition:transform .16s,background .16s,color .16s,box-shadow .16s;display:inline-flex}.add-form button{background:var(--color-green);color:#fff;min-width:94px;padding:0 18px}.add-form button:hover{background:var(--color-green-dark);box-shadow:0 5px 13px #315d432e}.button:focus-visible,.add-form button:focus-visible,.shopping-item__delete:focus-visible,.shopping-item input:focus-visible,.add-form input:focus-visible{outline-offset:3px;outline:3px solid #43754e57}.button:hover:not(:disabled),.add-form button:hover,.shopping-item__delete:hover{transform:translateY(-1px)}.form-message{margin:2px 1px 0;font-size:.84rem;line-height:1.45}.form-message--error{color:var(--color-danger)}.form-message--success{color:var(--color-green)}.shopping-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.shopping-summary__item{background:#f8f9f6;border:1px solid #edf0ea;border-radius:15px;justify-content:space-between;align-items:center;min-height:58px;padding:10px 13px;display:flex}.shopping-summary__label{color:#717a70;font-size:.79rem;font-weight:600}.shopping-summary__item strong{color:var(--color-ink);letter-spacing:-.04em;font-size:1.25rem;font-weight:750}.shopping-summary__item--checked{background:#f4f8f2;border-color:#e8efe7}.shopping-summary__item--checked strong{color:var(--color-green)}.panel--secondary{padding-top:20px}.list-heading{justify-content:space-between;align-items:flex-end;gap:12px;margin:0 1px 14px;display:flex}.list-heading__count{color:#687267;white-space:nowrap;background:#f2f4ef;border-radius:999px;padding:6px 10px;font-size:.74rem;font-weight:650}.shopping-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.shopping-item{background:#fff;border:1px solid #edf0ea;border-radius:16px;align-items:center;gap:10px;min-height:59px;padding:8px 9px 8px 13px;transition:border-color .16s,background .16s;display:flex}.shopping-item:hover{background:#fcfdfb;border-color:#dce5da}.shopping-item--checked{background:#f8faf7}.shopping-item__label{cursor:pointer;flex:1;align-items:center;gap:12px;min-width:0;min-height:42px;display:flex}.shopping-item input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-green);cursor:pointer;border-radius:7px;flex:none;margin:0}.shopping-item__name{overflow-wrap:anywhere;color:#2c352e;font-size:.95rem;font-weight:550;line-height:1.35}.shopping-item--checked .shopping-item__name{color:#9aa198;text-decoration:line-through;text-decoration-thickness:1px}.shopping-item__delete{color:#929990;background:0 0;border-radius:12px;min-width:42px;min-height:42px;padding:0 10px;font-size:.77rem;font-weight:600}.shopping-item__delete:hover{color:var(--color-danger);background:#fbefed}.empty-state{text-align:center;background:#fbfcfa;border:1px dashed #e2e8de;border-radius:17px;padding:32px 16px 27px}.empty-state h2{letter-spacing:-.02em;margin:0 0 5px;font-size:.98rem}.empty-state p{max-width:250px;color:var(--color-muted);margin:0 auto;font-size:.83rem;line-height:1.5}.backup-section{border-top:1px solid #edf0ea;margin-top:20px;padding-top:16px}.backup-section__label{color:#8a9289;letter-spacing:.1em;text-transform:uppercase;margin:0 0 10px;font-size:.68rem;font-weight:700}.toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.toolbar .button{color:#536052;background:#f8f9f6;border:1px solid #e9ede6;border-radius:13px;min-width:0;min-height:43px;padding:8px 10px;font-size:.75rem;line-height:1.25}.toolbar .button:hover:not(:disabled){background:#f0f4ee;border-color:#dce5da}.toolbar .button--danger{color:var(--color-danger);background:#fcf5f3;border-color:#f0e2df}.toolbar .button--danger:hover:not(:disabled){background:#f9ece9;border-color:#ead0cb}.confirm-dialog{z-index:10;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#1d271f6b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.confirm-dialog__panel{background:var(--color-paper);border:1px solid #ffffffb3;border-radius:22px;width:min(100%,400px);padding:24px;box-shadow:0 24px 70px #1a271d33}.confirm-dialog__panel h2{margin:0 0 9px}.confirm-dialog__panel p{color:var(--color-muted);margin:0 0 20px;font-size:.9rem;line-height:1.5}.confirm-dialog__actions{justify-content:flex-end;gap:9px;display:flex}.confirm-dialog__actions .button{min-height:44px;padding:0 15px}.confirm-dialog__actions .button--secondary{color:#586157;background:#f1f3ef}.confirm-dialog__actions .button--danger{background:var(--color-danger);color:#fff}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}@media (width>=700px){.app-shell{padding-top:50px}.topbar{padding-bottom:24px}.panel{padding:24px}.panel--secondary{padding-top:22px}}@media (width<=380px){.app-shell{width:min(100% - 24px,560px)}.panel{border-radius:19px;padding:17px}.brand-mark{border-radius:15px;width:43px;height:43px}.connection-badge{padding:7px 9px;font-size:.67rem}.add-form__controls{gap:7px}.add-form button{min-width:78px;padding:0 13px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
