:root{--accent: #2F6FE0;--accent-soft: #EAF0FC;--accent-disabled: #B7C7E8;--page-bg: #F1F3F6;--card-bg: #ffffff;--tab-bg: #E8EAEE;--input-bg: #F1F3F6;--chip-bg: #E8EAEE;--divider: #F0F1F3;--text: #1a1a1a;--text-dim: #8a8a8a;--danger: #EA4335;--radius: 18px;--shadow: 0 2px 10px rgba(20, 30, 60, .06)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--page-bg);color:var(--text);font-family:Heebo,system-ui,sans-serif}button{font-family:inherit;border:none;cursor:pointer}input,select{font-family:inherit}.app{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:0 12px calc(90px + env(safe-area-inset-bottom))}.header{position:sticky;top:0;z-index:10;background:var(--page-bg);padding:calc(10px + env(safe-area-inset-top)) 0 10px;display:flex;flex-direction:column;gap:10px}.tabs{display:flex;background:var(--tab-bg);border-radius:14px;padding:4px;gap:4px}.tab{flex:1;padding:11px 0;border-radius:11px;background:transparent;color:var(--text-dim);font-size:16px;font-weight:600;transition:background .15s,color .15s}.tab.active{background:var(--card-bg);color:var(--accent);box-shadow:var(--shadow)}.toolbar{display:flex;gap:8px}.search{flex:1;background:var(--card-bg);border:none;border-radius:14px;padding:12px 16px;font-size:15px;box-shadow:var(--shadow);outline:none}.search::placeholder{color:var(--text-dim)}.icon-btn{width:46px;height:46px;border-radius:14px;background:var(--card-bg);color:var(--accent);font-size:18px;box-shadow:var(--shadow);display:grid;place-items:center;flex-shrink:0}.icon-btn.active{background:var(--accent);color:#fff}.remaining{font-size:14px;font-weight:600;color:var(--text-dim);text-align:center}.remaining b{color:var(--accent)}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px;overflow:hidden}.card.dragging{opacity:.75;box-shadow:0 8px 24px #141e3c2e;position:relative;z-index:5}.cat-head{display:flex;align-items:center;gap:8px;padding:13px 16px;font-size:16.5px;font-weight:700}.cat-head .emoji{font-size:19px}.cat-head .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.emoji-chip{background:var(--chip-bg);border-radius:10px;width:36px;height:36px;font-size:18px;display:grid;place-items:center}.move-btn{width:34px;height:34px;border-radius:10px;background:var(--accent-soft);color:var(--accent);font-size:15px;display:grid;place-items:center}.move-btn:disabled{color:var(--accent-disabled);cursor:default}.danger-btn{width:34px;height:34px;border-radius:10px;background:#fdecea;color:var(--danger);font-size:16px;display:grid;place-items:center}.danger-btn:disabled{opacity:.35;cursor:default}.drag-handle{width:34px;height:34px;border-radius:10px;background:var(--chip-bg);color:var(--text-dim);font-size:16px;display:grid;place-items:center;touch-action:none;cursor:grab}.rename-input{flex:1;min-width:0;background:var(--input-bg);border:none;border-radius:10px;padding:8px 12px;font-size:15px;font-weight:600;outline:2px solid var(--accent)}.emoji-picker{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 12px}.emoji-picker button{width:40px;height:40px;border-radius:10px;background:var(--chip-bg);font-size:19px}.emoji-picker button.sel{background:var(--accent-soft);outline:2px solid var(--accent)}.row{display:flex;align-items:center;gap:10px;padding:11px 16px;border-top:1px solid var(--divider);transition:opacity .15s}.row.faded{opacity:.45}.row .name{flex:1;min-width:0;font-size:15.5px;font-weight:500;word-break:break-word}.row.dragging{background:var(--accent-soft);border-radius:10px}.stepper{display:flex;align-items:center;gap:2px;background:var(--accent-soft);border-radius:12px;padding:3px;flex-shrink:0}.stepper button{width:34px;height:34px;border-radius:9px;background:transparent;color:var(--accent);font-size:19px;font-weight:700;display:grid;place-items:center}.stepper button:active{background:#2f6fe01f}.stepper .qty{min-width:30px;text-align:center;font-size:15.5px;font-weight:700;color:var(--accent);background:transparent;border:none;padding:0}.stepper input.qty{width:44px;background:#fff;border-radius:8px;outline:2px solid var(--accent);padding:5px 0}.item-edit-controls{display:flex;gap:6px;align-items:center;flex-shrink:0}.cat-select{max-width:110px;background:var(--input-bg);border:none;border-radius:10px;padding:8px;font-size:13px}.shop-row{position:relative;border-top:1px solid var(--divider);overflow:hidden}.shop-row .swipe-bg{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;padding-inline-start:20px;background:#e8f5ee;color:#2e9e5b;font-weight:700;font-size:15px;gap:8px}.shop-row .swipe-fg{position:relative;display:flex;align-items:center;gap:12px;padding:16px;background:var(--card-bg);touch-action:pan-y;transition:transform .26s ease}.shop-row .swipe-fg.drag{transition:none}.shop-row .name{flex:1;font-size:17px;font-weight:600}.shop-row .price{font-size:14.5px;font-weight:700;color:var(--text-dim)}.shop-row .badge{min-width:34px;height:34px;border-radius:11px;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:16px;display:grid;place-items:center;padding:0 8px}.empty{text-align:center;padding:60px 20px;color:var(--text-dim)}.empty .big{font-size:42px;margin-bottom:12px}.empty .title{font-size:17px;font-weight:700;color:var(--text);margin-bottom:6px}.fab{position:fixed;bottom:calc(22px + env(safe-area-inset-bottom));inset-inline-start:50%;transform:translate(50%);width:60px;height:60px;border-radius:20px;background:var(--accent);color:#fff;font-size:28px;box-shadow:0 8px 20px #2f6fe066;display:grid;place-items:center}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14192866;display:flex;align-items:flex-end;justify-content:center;z-index:1000}.sheet{background:var(--card-bg);border-radius:22px 22px 0 0;width:100%;max-width:560px;padding:20px 18px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;animation:sheetUp .22s ease}@keyframes sheetUp{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}.sheet h3{margin:0;font-size:18px}.sheet input[type=text],.sheet select{background:var(--input-bg);border:none;border-radius:12px;padding:13px 14px;font-size:16px;width:100%;outline:none}.sheet input:focus{outline:2px solid var(--accent)}.cat-grid{display:flex;flex-wrap:wrap;gap:8px}.cat-grid button{background:var(--chip-bg);border-radius:12px;padding:9px 13px;font-size:14px;font-weight:600}.cat-grid button.sel{background:var(--accent-soft);outline:2px solid var(--accent);color:var(--accent)}.primary{background:var(--accent);color:#fff;border-radius:14px;padding:14px;font-size:16.5px;font-weight:700}.primary:disabled{background:var(--accent-disabled)}.link-btn{background:none;color:var(--accent);font-size:14px;font-weight:600;padding:8px}.link-btn.danger-text{color:var(--danger)}.cat-grid input[type=text]{flex-basis:100%}.add-cat-btn{width:100%;background:var(--card-bg);color:var(--accent);border:2px dashed var(--accent-disabled);border-radius:var(--radius);padding:14px;font-size:15px;font-weight:700;margin-bottom:12px}.signin{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;text-align:center}.signin .logo{font-size:62px}.signin h1{margin:0;font-size:24px;font-weight:800}.signin p{margin:0;color:var(--text-dim);font-size:15px}.signin .err{color:var(--danger);font-weight:600}.offline-bar{position:fixed;top:0;left:0;right:0;background:#fbbc05;color:#1a1a1a;font-size:13px;font-weight:600;text-align:center;padding:6px;z-index:100}@keyframes grabFlash{0%{transform:scale(1)}50%{transform:scale(.97)}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
