:root{--color-primary:#16a34a;--color-primary-dark:#15803d;--color-bg:#f8faf8;--color-surface:#fff;--color-text:#1f2937;--color-text-muted:#6b7280;--color-border:#e5e7eb;--color-danger:#dc2626;--radius:14px;--radius-sm:8px;--shadow:0 1px 3px #00000014, 0 1px 2px #0000000a;--app-header-h:52px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--color-primary:#22c55e;--color-primary-dark:#16a34a;--color-bg:#0f1511;--color-surface:#1a211c;--color-text:#e5e7eb;--color-text-muted:#9ca3af;--color-border:#2c352f;--color-danger:#f87171;--shadow:0 1px 3px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}#root{max-width:560px;min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);background:var(--color-bg);flex-direction:column;margin:0 auto;display:flex}button,input{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}h1,h2,h3,p{margin:0}.screen{flex-direction:column;flex:1;gap:16px;padding:16px;display:flex}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.btn{border-radius:var(--radius-sm);border:none;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:12px 18px;font-size:16px;font-weight:600;transition:background-color .15s,opacity .15s;display:inline-flex}.btn:active{opacity:.75}.btn-primary{background:var(--color-primary);color:#fff}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-danger{color:var(--color-danger);background:0 0}.btn-block{width:100%}.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;min-height:44px;color:var(--color-text);padding:12px 14px;font-size:16px}.input:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.pin-input{letter-spacing:8px;text-align:center;font-variant-numeric:tabular-nums;font-size:24px}.muted{color:var(--color-text-muted);font-size:14px}.center-screen{flex-direction:column;flex:1;justify-content:center;align-items:stretch;gap:20px;padding:24px;display:flex}.logo-mark{border-radius:18px;width:64px;height:64px;margin:0 auto}.avatar{color:#fff;border:2px solid var(--color-surface);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:700;display:flex;position:relative}.live-dot{border:2px solid var(--color-surface);background:#22c55e;border-radius:50%;width:10px;height:10px;animation:2s ease-in-out infinite live-pulse;position:absolute;bottom:-1px;right:-1px}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.45}}.avatar-row{display:flex}.avatar-row .avatar:not(:first-child){margin-left:-10px}.avatar-picker{flex-wrap:wrap;gap:12px;display:flex}.avatar-picker button{border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;padding:6px;display:flex}.avatar-picker button.selected{background:var(--color-border)}.avatar-lg{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-size:20px;font-weight:700;display:flex}.top-bar{top:calc(env(safe-area-inset-top) + var(--app-header-h));z-index:10;background:var(--color-bg);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;position:sticky}.top-bar h1{font-size:18px;font-weight:700}.icon-btn{min-width:44px;min-height:44px;color:var(--color-text);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:8px;display:flex}.icon-btn:active{background:var(--color-border)}.list-card{cursor:pointer;flex-direction:column;gap:8px;padding:14px 16px;display:flex}.list-card-header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.list-card-header h3{font-size:16px;font-weight:600}.progress-bar{background:var(--color-border);border-radius:3px;height:6px;overflow:hidden}.progress-bar-fill{background:var(--color-primary);height:100%;transition:width .25s}.household-switch-trigger{color:var(--color-text-muted);background:0 0;border:none;padding:0;font-size:14px}.household-switch-option{text-align:left;border:none;border-bottom:1px solid var(--color-border);width:100%;color:var(--color-primary-dark);background:0 0;justify-content:space-between;align-items:center;padding:12px 10px;font-size:15px;display:flex}.household-switch-option:last-child{color:var(--color-primary);border-bottom:none;font-weight:600}.section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);padding:4px;font-size:13px;font-weight:700}.tab-bar{background:var(--color-border);border-radius:10px;gap:4px;margin:12px 16px 0;padding:4px;display:flex}.tab-btn{color:var(--color-text-muted);background:0 0;border:none;border-radius:7px;flex:1;padding:9px 12px;font-size:14px;font-weight:600}.tab-btn.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow)}.store-chip{background:var(--color-border);color:var(--color-text-muted);white-space:nowrap;border:none;border-radius:20px;flex-shrink:0;padding:9px 16px;font-size:14px;font-weight:600}.store-chip.active{background:var(--color-primary);color:#fff}.category-group{margin-bottom:4px}.category-heading{color:var(--color-primary-dark);text-transform:uppercase;letter-spacing:.03em;padding:10px 4px 6px;font-size:13px;font-weight:700}.item-row{border-bottom:1px solid var(--color-border);align-items:center;gap:12px;padding:10px 4px;display:flex}.checkbox{border:2px solid var(--color-border);background:var(--color-surface);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.checkbox.checked{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.item-main{flex:1;min-width:0}.item-name{word-break:break-word;font-size:16px;line-height:1.3}.item-name.checked{color:var(--color-text-muted);text-decoration:line-through}.item-meta,.item-price{color:var(--color-text-muted);margin-top:2px;font-size:13px}.add-bar{bottom:env(safe-area-inset-bottom);background:var(--color-bg);border-top:1px solid var(--color-border);padding:10px 16px 16px;position:sticky}.add-bar-row{gap:8px;display:flex;position:relative}.suggestions{background:var(--color-surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);max-height:240px;margin-bottom:6px;position:absolute;bottom:100%;left:0;right:0;overflow:hidden auto}.suggestion-item{border-bottom:1px solid var(--color-border);padding:12px 14px}.suggestion-item:last-child{border-bottom:none}.suggestion-item:active{background:var(--color-bg)}.fab{bottom:calc(24px + env(safe-area-inset-bottom));background:var(--color-primary);color:#fff;width:56px;height:56px;box-shadow:var(--shadow);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:28px;display:flex;position:fixed;right:calc(50% - 236px)}@media (width<=559px){.fab{right:24px}}.empty-state{text-align:center;color:var(--color-text-muted);padding:40px 20px}.error-text{color:var(--color-danger);font-size:14px}.reorder-item{background:var(--color-surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);align-items:center;gap:10px;margin-bottom:8px;padding:12px;display:flex}.drag-handle{color:var(--color-text-muted);cursor:grab;padding:4px;font-size:20px}.presence-note{color:var(--color-text-muted);align-items:center;gap:6px;font-size:13px;display:flex}.dialog-overlay{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:300px;padding:20px}.dialog-label{color:var(--color-text-muted);text-align:center;margin-bottom:8px;font-size:14px}.dialog-display{text-align:center;font-variant-numeric:tabular-nums;padding:8px 0 16px;font-size:32px;font-weight:700}.keypad{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px;display:grid}.keypad-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);min-height:52px;font-size:20px;font-weight:600}.keypad-btn:active{background:var(--color-border)}.dialog-actions{gap:10px;display:flex}.badge{background:var(--color-border);color:var(--color-text-muted);border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.app-header{top:env(safe-area-inset-top);z-index:20;height:var(--app-header-h);background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:0 8px 0 16px;display:flex;position:sticky}.app-header-brand{background:0 0;border:none;align-items:center;gap:8px;padding:0;font-size:17px;font-weight:700;display:flex}.menu-icon,.menu-icon:before,.menu-icon:after{background:currentColor;border-radius:1px;width:20px;height:2px;display:block}.menu-icon{position:relative}.menu-icon:before,.menu-icon:after{content:"";position:absolute;left:0}.menu-icon:before{top:-6px}.menu-icon:after{top:6px}.menu-backdrop{z-index:199;background:#00000073;position:fixed;inset:0}.menu-panel{z-index:200;width:min(320px,85vw);height:100dvh;padding:env(safe-area-inset-top) 16px calc(16px + env(safe-area-inset-bottom));background:var(--color-surface);visibility:hidden;flex-direction:column;transition:transform .2s,visibility .2s;display:flex;position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-4px 0 16px #0003}.menu-panel.open{visibility:visible;transform:translate(0)}.menu-header{min-height:var(--app-header-h);justify-content:space-between;align-items:center;display:flex}.menu-title{font-size:17px;font-weight:700}.menu-block-title{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);margin:14px 0 4px;font-size:12px}.menu-link{text-align:left;width:100%;min-height:44px;color:var(--color-text);background:0 0;border:none;padding:10px 0;font-size:16px;text-decoration:none;display:block}.menu-link.active{color:var(--color-primary);font-weight:700}.menu-link-row{justify-content:space-between;align-items:center;display:flex}.menu-divider{border:none;border-top:1px solid var(--color-border);width:100%;margin:10px 0}.menu-bottom{margin-top:auto}.menu-version{color:var(--color-text-muted);margin-top:8px;font-size:13px}.app-toast.text-bg-success{color:#fff;background:#198754}.app-toast.text-bg-info{color:#000;background:#0dcaf0}.app-toast.text-bg-warning{color:#000;background:#ffc107}.app-toast.text-bg-danger{background:var(--color-danger);color:#fff}.toast-stack{z-index:1090;pointer-events:none;flex-direction:column;gap:.5rem;width:min(24rem,100vw - 2rem);display:flex;position:fixed;bottom:1rem;right:1rem}.app-toast{border-radius:var(--radius-sm);pointer-events:auto;align-items:flex-start;gap:.75rem;padding:.75rem 1rem .9rem;transition:opacity .2s,transform .2s;animation:.2s ease-out app-toast-in;display:flex;position:relative;overflow:hidden;box-shadow:0 .5rem 1rem #00000026}.app-toast.is-hiding{opacity:0;transform:translateY(.5rem)}.app-toast-close{color:inherit;opacity:.7;cursor:pointer;background:0 0;border:0;flex-shrink:0;margin:-.35rem -.4rem 0 0;padding:0 .4rem;font-size:1.5rem;line-height:1}.app-toast-close:hover,.app-toast-close:focus-visible{opacity:1}.app-toast-body{overflow-wrap:anywhere;flex:1;min-width:0}.app-toast-progress{opacity:.45;transform-origin:0;background:currentColor;width:100%;height:3px;animation-name:app-toast-countdown;animation-timing-function:linear;animation-fill-mode:forwards;position:absolute;bottom:0;left:0}.app-toast:hover .app-toast-progress,.app-toast:focus-within .app-toast-progress{animation-play-state:paused}@keyframes app-toast-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes app-toast-in{0%{opacity:0;transform:translateY(.5rem)}}@media (prefers-reduced-motion:reduce){.app-toast{transition:none;animation:none}}
