:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6f8;--card:#fff;--text:#1a1d21;--muted:#6b7280;--border:#e5e7eb;--primary:#16a34a;--primary-dark:#15803d;--secondary:#e8f5ec;--danger:#dc2626;--danger-bg:#fef2f2;--warn:#ea580c;--radius:14px;--shadow:0 1px 3px #10182814;--maxw:620px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg) url(/app-bg.jpg) center top / cover no-repeat;color:var(--text);-webkit-font-smoothing:antialiased;background-attachment:scroll;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}button{font:inherit}.app{max-width:var(--maxw);min-height:100dvh;margin:0 auto}.screen{padding:16px 16px 32px}.screen.has-tabbar{padding-bottom:96px}.muted{color:var(--muted)}.small{font-size:13px}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar{justify-content:space-between;align-items:center;gap:12px;padding:8px 0 16px;display:flex;position:relative}.topbar .app-title{text-align:center;max-width:58%;color:var(--warn);font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.app-title{text-align:left;flex:1;margin:0;font-size:20px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:16px}.card-title{margin:0 0 12px;font-size:15px}.form{flex-direction:column;gap:12px;display:flex}.field{color:var(--muted);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-actions{justify-content:space-between;gap:8px;margin-top:4px;display:flex}.inline-form{gap:8px;display:flex}.inline-form .input{flex:1;min-width:0}.profile-view{align-items:center}.profile-name{min-width:0;color:var(--text);text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:16px;font-weight:600;overflow:hidden}.stat-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stat-tile{background:var(--bg);border:1px solid var(--border);text-align:center;font:inherit;color:inherit;cursor:pointer;border-radius:12px;padding:12px 8px}.stat-num{color:var(--text);font-size:22px;font-weight:700;display:block}.stat-label{color:var(--muted);font-size:12px}.input{width:100%;color:var(--text);border:1px solid var(--border);background:#fff;border-radius:10px;padding:12px;font-size:16px;font-weight:400}.input:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:var(--primary)}.code-input{text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:not(:disabled):active{background:var(--primary-dark)}.btn-secondary{background:var(--secondary);color:var(--primary-dark)}.btn-ghost{color:var(--muted);background:0 0;padding:8px 10px}.btn-danger{background:var(--danger);color:#fff}.btn-warn{background:var(--warn);color:#fff}.btn-block{width:100%}.icon-btn{cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px;font-size:17px;line-height:1}.icon-btn:active{background:var(--bg)}.error-box{background:var(--danger-bg);color:var(--danger);border:1px solid #fecaca;border-radius:10px;margin-bottom:16px;padding:10px 12px;font-size:14px}.notice-box{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:10px 12px;font-size:14px}.copy-feedback{color:var(--primary-dark);margin:8px 0 0;font-size:13px;font-weight:600}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:32px;height:32px;margin:40px auto 12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-wrap{flex-direction:column;align-items:center;min-height:100dvh;padding:24px 16px;display:flex}.password-wrap{position:relative}.password-wrap .input{padding-right:46px}.password-toggle{cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px;font-size:18px;line-height:1;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.password-toggle:active{background:var(--bg)}.link-btn{color:var(--primary);cursor:pointer;background:0 0;border:none;align-self:center;margin-top:4px;padding:8px;font-size:14px;text-decoration:underline}.link-btn:hover{color:var(--primary-dark)}.auth-card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:18px;width:100%;max-width:400px;margin-top:auto;padding:28px 22px}.auth-logo{font-size:44px}.auth-title{color:var(--warn);margin:8px 0 4px;font-size:22px}.auth-sub{color:var(--muted);margin:0 0 20px;font-size:14px}.auth-tabs{background:var(--bg);border-radius:12px;margin-bottom:20px;padding:4px;display:flex}.auth-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:10px;font-weight:600}.auth-tabs button.active{color:var(--text);box-shadow:var(--shadow);background:#fff}.auth-card .form{text-align:left}.tile-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin:0;padding:0;list-style:none;display:grid}.tile-grid>li{min-width:0}.tile-grid.duo{grid-template-columns:1fr 1fr;gap:8px}.tile-grid.duo .tile{gap:3px;padding:6px 4px}.tile-grid.duo .tile-badge{border-radius:10px;width:32px;height:32px;font-size:20px}.tile-grid.duo .tile-name{font-size:12px}.tile-grid.duo .tile-code{padding:1px 6px;font-size:10px}.tile{aspect-ratio:1;border:1px solid var(--border);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px;display:flex}button.tile{cursor:pointer;font:inherit;color:inherit;width:100%}button.tile:active{transform:scale(.97)}.tile-badge{border-radius:12px;flex:none;justify-content:center;align-items:center;width:44px;height:44px;font-size:24px;display:flex}.tile-name{text-align:center;overflow-wrap:anywhere;margin:0;font-size:15px;font-weight:700}.tile-main{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;max-width:100%;margin:0;padding:0;display:flex}.tile-main:active{transform:scale(.97)}.tile-code{color:var(--muted);border:1px solid var(--border);background:#ffffffa6;border-radius:6px;padding:3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.tile-actions{gap:2px;display:flex}.tile-edit{aspect-ratio:auto;grid-column:1/-1;justify-content:flex-start;min-height:0}.tile-edit .input{width:100%}.tile-edit .row-actions{flex-direction:column;width:100%;margin-top:0}.qty-row{gap:8px;display:flex}.qty-row .qty-num,.qty-row .qty-unit{flex-direction:column;gap:4px;min-width:0;display:flex}.qty-row .qty-num{flex:1.2}.qty-row .qty-unit{flex:1}.qty-row .input{min-width:0}.list-toolbar{align-items:center;gap:8px;margin-bottom:16px;display:flex}.list-toolbar .clear-purchased{margin-left:auto}.purchased-pill{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:14px;font-weight:600;display:flex}.list-toolbar .input{flex:none;width:auto;min-width:0;max-width:170px}.item-list{margin:0;padding:0;list-style:none}.item-row{border-top:1px solid var(--border);align-items:flex-start;gap:10px;padding:12px 4px;display:flex}.item-row:first-child{border-top:none}.toggle{cursor:pointer;background:#cbd5e1;border:none;border-radius:999px;flex-shrink:0;align-items:center;width:44px;height:26px;margin-top:1px;padding:3px;transition:background .2s;display:flex}.toggle .knob{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s;box-shadow:0 1px 3px #00000040}.toggle.on{background:var(--primary)}.toggle.on .knob{transform:translate(18px)}.item-main{flex:1;min-width:0}.item-name{font-size:16px;font-weight:600}.qty,.brand{color:var(--muted);font-weight:400}.item-note{color:var(--muted);margin-top:2px;font-size:13px}.added-by{color:var(--muted);align-items:center;gap:5px;margin-top:4px;font-size:12px;display:inline-flex}.dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.chip-row{-webkit-overflow-scrolling:touch;gap:8px;padding:6px 2px;display:flex;overflow-x:auto}.chip{border:1px solid var(--border);color:var(--text);font:inherit;white-space:nowrap;cursor:pointer;background:#fff;border-radius:999px;flex-shrink:0;align-items:center;gap:7px;padding:10px 14px;font-size:14px;display:inline-flex}.chip.selected{border-color:var(--primary);background:#e9f8ef;font-weight:600}.item-row.purchased .item-name{color:var(--muted);text-decoration:line-through}.item-row.purchased .item-note{text-decoration:line-through}.fab{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:50%;width:60px;height:60px;font-size:30px;line-height:1;position:fixed;bottom:96px;right:20px;box-shadow:0 4px 14px #16a34a66}.fab:active{background:var(--primary-dark)}.tabbar{width:min(var(--maxw), 100%);background:var(--card);border-top:1px solid var(--border);padding:6px 4px calc(8px + env(safe-area-inset-bottom));z-index:20;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0;display:flex}.tab.active{color:var(--primary-dark)}.tab-icon{font-size:21px}.tab-label{font-size:11px;font-weight:600}.backdrop{z-index:40;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--card);width:min(var(--maxw), 100%);max-height:92dvh;padding:20px 18px calc(20px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:.22s ease-out slide-up;overflow-y:auto}@keyframes slide-up{0%{opacity:.6;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.sheet-title{margin:0 0 16px;font-size:18px}@media (width>=640px){.backdrop{align-items:center;padding:24px}.sheet{border-radius:20px;max-height:88dvh}.tile-grid{grid-template-columns:repeat(3,1fr)}}.plain-list{margin:0;padding:0;list-style:none}.plain-row{border-top:1px solid var(--border);align-items:center;gap:10px;padding:10px 0;display:flex}.plain-row:first-child{border-top:none}.row-name{flex:1;font-size:15px;font-weight:600}.avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-weight:700;display:flex}.store-icon{font-size:22px}.edit-row{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding:12px 0;display:flex}.edit-row:first-child{border-top:none}.row-actions{justify-content:flex-end;gap:8px;display:flex}.swatches{flex-wrap:wrap;gap:10px;padding:2px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:34px;height:34px;padding:0}.swatch.selected{border-color:var(--text);box-shadow:inset 0 0 0 2px #fff}.invite-code{letter-spacing:.12em;text-align:center;background:var(--bg);border:1px dashed var(--border);border-radius:12px;margin-top:12px;padding:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:30px;font-weight:700}.danger-zone{border-color:#fecaca}.danger-zone .card-title{color:var(--danger)}.duo-row{grid-template-columns:1fr 1fr;align-items:stretch;gap:12px;margin-bottom:16px;display:grid}.duo-row .card{flex-direction:column;margin-bottom:0;display:flex}.duo-row .card .muted{margin-bottom:12px}.duo-row .card .btn{width:100%;margin-top:auto}.dash-duo .avatar-img{width:40px;height:40px}.dash-duo .tile-grid.duo{grid-template-columns:1fr}.dash-duo .tile-grid.duo .tile{aspect-ratio:auto;text-align:left;flex-direction:row;justify-content:flex-start;gap:10px;padding:14px 12px}.dash-duo .tile-grid.duo .tile-badge{border-radius:10px;width:36px;height:36px;font-size:20px}.dash-duo .tile-grid.duo .tile-name{text-align:left;overflow-wrap:break-word;font-size:12px;font-weight:600}.trio-row .invite-code{letter-spacing:.08em;white-space:nowrap;margin-top:0;padding:8px 6px;font-size:15px}.trio-row .invite-box{gap:6px}.trio-row .invite-box .btn{border-radius:8px;padding:7px 10px;font-size:13px}.invite-box{flex-direction:column;align-items:center;gap:8px;display:flex}.invite-box .invite-code{text-align:center;width:100%}.invite-box .copy-feedback{margin:0;font-size:12px}.dash-banner{border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(135deg,#fb923c,#ea580c);margin-bottom:16px;position:relative;overflow:hidden}.dash-banner.has-image{background:#fdf3e3 url(/groceries-bg.jpg) bottom/cover no-repeat}.dash-banner-scrim{background:linear-gradient(#fffbf5bf 0%,#fffbf500 55%);position:absolute;inset:0}.dash-banner-top{z-index:1;text-align:center;justify-content:center;align-items:center;gap:12px;padding:28px 64px 84px;display:flex;position:relative}.dash-banner .app-title{color:#431407;letter-spacing:.01em;text-shadow:0 2px #ffffff73;flex:none;font-family:Fredoka,Trebuchet MS,system-ui,sans-serif;font-size:34px;font-weight:700}.dash-banner .signout-icon{color:var(--warn);position:absolute;top:22px;right:12px}.profile-name-dash{text-align:center;margin:0;font-size:13px;font-weight:600}.compact-card{padding:10px}.compact-card .card-title{margin-bottom:6px;font-size:13px}.compact-card .muted.small{font-size:11.5px;line-height:1.45}.compact-card .btn{width:100%;padding:9px 8px;font-size:13.5px}.signout-icon{color:var(--warn);align-self:center;padding:4px 12px;font-size:30px}.signout-icon:active{transform:scale(.9)}.topbar .topbar-signout{padding:4px 0 4px 12px;font-size:24px}.tint-blue{background:#eff6ff;border-color:#bfdbfe}.tint-blue .stat-num,.tint-blue .tile-name{color:#1d4ed8}.tint-blue .tile-badge{background:#bfdbfe}.tint-green{background:#f0fdf4;border-color:#bbf7d0}.tint-green .stat-num,.tint-green .tile-name{color:#15803d}.tint-green .tile-badge{background:#bbf7d0}.tint-purple{background:#faf5ff;border-color:#ddd6fe}.tint-purple .stat-num,.tint-purple .tile-name{color:#7c3aed}.tint-purple .tile-badge{background:#ddd6fe}.tint-orange{background:#fff7ed;border-color:#fed7aa}.tint-orange .stat-num,.tint-orange .tile-name{color:#c2410c}.tint-orange .tile-badge{background:#fed7aa}.profile-box{flex-direction:column;align-items:center;gap:4px;padding:0;display:flex}.avatar-circle{background:var(--warn);color:#fff;width:48px;height:48px;box-shadow:var(--shadow);border-radius:50%;justify-content:center;align-items:center;font-size:21px;font-weight:700;display:flex}.profile-nudge{align-items:center;gap:12px;display:flex}.profile-nudge-text{flex:1;margin:0;font-size:14px;font-weight:600}.profile-nudge .btn{flex:none}.quad-grid{grid-template-columns:1fr 1fr;align-items:stretch;gap:12px;margin-bottom:16px;display:grid}.quad-grid .card{margin-bottom:0}.square-card{text-align:center;flex-direction:column;justify-content:flex-start;gap:10px;min-height:148px;padding:16px 14px;display:flex}.square-card .card-title{text-align:center;margin-bottom:0;font-size:14px}.square-card .card-title .card-icon{margin-right:6px}.square-card.compact{gap:8px;min-height:0;padding:12px}.profile-view-row{text-align:left;align-items:center;gap:8px;width:100%;display:flex}.profile-view-row .avatar-img.sm,.profile-view-row .avatar-circle.sm{flex:none;width:36px;height:36px;font-size:15px}.pv-name{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;margin:0;font-size:14px;font-weight:600;overflow:hidden}.pv-zip{text-align:center;min-width:0;color:var(--muted);font-variant-numeric:tabular-nums;flex:1 1 0;font-size:13px}.pv-text{flex:auto;min-width:0}.pv-sub{color:var(--muted);text-transform:capitalize;margin:1px 0 0;font-size:12px}.square-card .btn.btn-sm{flex:none;width:auto;padding:6px 14px;font-size:13px}.square-card .inline-form{flex-direction:column}.square-card .inline-form .input{flex:none;width:100%}.square-card .btn{width:100%;padding:8px;font-size:13.5px}.square-card .profile-name{text-align:center;flex:none;padding:0;font-size:15px}.avatar-circle.sm{width:40px;height:40px;font-size:17px}.avatar-img{object-fit:cover;border-radius:50%;width:48px;height:48px;display:block}.avatar-img.sm{width:40px;height:40px}.avatar-picker{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:2px;display:grid}.avatar-option{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:50%;padding:0;line-height:0}.avatar-option img{aspect-ratio:1;object-fit:cover;border-radius:50%;width:100%;display:block}.avatar-option.selected{border-color:var(--primary)}.avatar-picker.dash-picker{grid-template-columns:repeat(2,1fr);gap:6px;width:100%;margin-bottom:0}.avatar-picker.dash-picker .avatar-option:active{transform:scale(.94)}.avatar-picker.dash-picker .avatar-option:disabled{opacity:.6}.square-card .invite-code{letter-spacing:.1em;border-radius:10px;margin-top:0;padding:8px 4px;font-size:17px}.square-card .row-actions{flex-direction:column;margin-top:auto}.square-card .compact-form{flex-direction:column;flex:1;display:flex}.square-card .compact-form .inline-form{flex-direction:column;flex:1}.square-card .compact-form .inline-form .btn{margin-top:auto}.square-card .row-actions .btn{width:100%}.square-card .invite-desc,.square-card .compact-hide{display:none}.square-card .copy-feedback{text-align:center;margin:0}.square-card .muted.small{text-align:center}.square-card .error-box{margin-top:0;font-size:12px}.item-emoji{border:1px solid var(--border);cursor:pointer;background:#f8fafc;border-radius:12px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;margin-top:0;padding:0;font-size:22px;line-height:1;display:flex}.item-emoji:active{transform:scale(.92)}.item-row.purchased .item-emoji{opacity:.55;filter:grayscale(.4)}.emoji-grid{grid-template-columns:repeat(8,1fr);gap:4px;margin:12px 0 16px;display:grid}.emoji-pick{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;padding:6px 0;display:flex}.emoji-pick:active{transform:scale(.9)}.emoji-pick.selected{border-color:var(--warn);background:#fff7ed}.emoji-pick-glyph{font-size:26px;line-height:1.2}.emoji-pick.auto{border:1px dashed var(--border);border-radius:12px;gap:10px;width:100%;margin-bottom:4px;padding:10px}.emoji-pick.auto.selected{border-style:solid}.emoji-pick-label{font-size:14px;font-weight:600}.sheet-cancel{width:100%}.item-row{align-items:center}.group-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:13px}.group-card{padding:14px 14px 6px}.stat-tile{border-radius:12px;padding:14px 8px}.stat-tile:active{transform:scale(.97)}.icon-btn{border-radius:10px;min-width:34px;min-height:34px}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--warn);outline-offset:2px}.empty{text-align:center;padding:28px 16px}.empty-title{margin:0 0 6px;font-size:16px;font-weight:700}.card-title{letter-spacing:.01em}.footer{color:var(--muted);justify-content:center;align-items:center;gap:8px;padding:20px 0 8px;display:flex}.footer-icon{border-radius:6px;width:24px;height:24px}.footer-text{font-family:Fredoka,system-ui,sans-serif;font-size:15px;font-weight:600}.auth-wrap .footer{margin:16px 0 auto}.product-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:8px;display:grid}.product-tile{border:1px solid var(--border);cursor:pointer;color:inherit;background:#f9fafb;border-radius:12px;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:8px 4px 6px;display:flex}.product-tile:active{transform:scale(.96)}.product-emoji{font-size:26px;line-height:1}.product-name{text-align:center;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;font-size:10px;font-weight:600;display:-webkit-box;overflow:hidden}.price-input-wrap{position:relative}.price-input-wrap .currency{color:var(--muted);font-size:14px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.price-input-wrap .input{padding-left:28px}.item-price{color:var(--primary-dark);font-weight:700}
