*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#1a1a1a;--surface:#242424;--surface2:#2e2e2e;--border:#3a3a3a;--text:#f0f0f0;--muted:#888;--accent:#4caf50;--danger:#e57373;--checked-text:#555;--radius:8px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-tap-highlight-color:transparent;font-size:16px}#app{flex-direction:column;min-height:100dvh;display:flex}.view{flex-direction:column;height:100dvh;display:flex}header{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:8px;padding:14px 16px;display:flex;position:sticky;top:0}header h1{flex:1;font-size:1rem;font-weight:600}.btn{border-radius:var(--radius);font-size:.9rem;font-family:var(--font);cursor:pointer;background:var(--surface2);color:var(--text);-webkit-user-select:none;user-select:none;border:none;align-items:center;gap:6px;padding:8px 14px;transition:background .15s;display:inline-flex}.btn:active{background:var(--border)}.btn.primary{background:var(--accent);color:#fff}.btn.primary:active{background:#388e3c}.btn.danger{background:var(--danger);color:#fff}.btn.icon-btn{background:0 0;padding:8px}.btn.icon-btn:active{background:var(--surface2)}.auth-view{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:24px;padding:32px 24px;display:flex}.auth-view h1{font-size:1.4rem}.auth-form{flex-direction:column;gap:12px;width:100%;max-width:320px;display:flex}.auth-form input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1rem;font-family:var(--font);width:100%;padding:12px}.auth-form input:focus{border-color:var(--accent);outline:none}.auth-error{color:var(--danger);text-align:center;font-size:.85rem}.auth-hint{color:var(--muted);text-align:center;font-size:.8rem}.bottom-bar{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0}.tab-bar{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;display:flex}.tab-btn{color:var(--muted);font-size:.9rem;font-family:var(--font);cursor:pointer;background:0 0;border:none;border-top:2px solid #0000;flex:1;padding:13px 0;transition:color .15s,border-color .15s,background .15s}.tab-btn.active{background:var(--accent);color:#fff;border-top-color:#0000;font-weight:600}.add-area{padding:12px 16px;position:relative}.add-row{gap:8px;display:flex}.add-row input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2);color:var(--text);font-size:1rem;font-family:var(--font);flex:1;padding:10px 12px}.add-row input:focus{border-color:var(--accent);outline:none}.autocomplete-list{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;z-index:20;border-bottom:none;margin-bottom:-1px;position:absolute;bottom:100%;left:16px;right:72px;overflow:hidden}.autocomplete-list li{cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:.95rem;list-style:none;display:flex}.autocomplete-list li.active,.autocomplete-list li:hover{background:var(--border)}.ac-already{color:var(--muted);flex-shrink:0;font-size:.75rem}.in-list-badge{color:var(--accent);flex-shrink:0;font-size:.75rem}.item-row.in-list .item-name{color:var(--muted)}.purchases-day-header{justify-content:space-between;align-items:center;padding:8px 16px 4px;display:flex}.add-all-btn{padding:4px 10px;font-size:.8rem}.add-row input.duplicate-warn{border-color:var(--danger);transition:border-color .15s}.items-list{flex:1;padding:8px 0;scroll-padding-bottom:16px;overflow-y:auto}.item-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:9px 16px;transition:background .1s;display:flex}.item-row.shop:active{background:var(--border)}.drag-handle{cursor:grab;color:var(--muted);touch-action:none;text-align:center;flex-shrink:0;width:28px;font-size:1.2rem}.drag-handle:active{cursor:grabbing}.item-name{cursor:text;flex:1;font-size:1.05rem}.item-name-input{min-width:0;font-size:1.05rem;font-family:var(--font);background:var(--surface2);color:var(--text);border:none;border-radius:4px;outline:none;flex:1;padding:2px 6px}.item-row.checked .item-name{color:var(--checked-text)}.check-btn{border:2px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;transition:background .15s,border-color .15s;display:flex}.check-btn.done{background:var(--accent);border-color:var(--accent)}.del-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:4px;font-size:1.1rem}.del-btn:active{background:var(--surface2)}.item-spacer{flex-shrink:0;width:28px}.item-row.dragging{background:var(--surface2);opacity:.6}.item-row.drag-over{border-top:2px solid var(--accent)}.drop-sentinel{height:48px;list-style:none}.drop-sentinel.drag-over{border-top:2px solid var(--accent)}.sync-dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:8px;height:8px}.sync-dot.connected{background:var(--accent)}.sheet-backdrop{z-index:100;background:#00000080;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);width:100%;padding:8px 0 env(safe-area-inset-bottom,16px);border-radius:16px 16px 0 0;animation:.2s ease-out slide-up}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-item{text-align:left;width:100%;color:var(--text);font-size:1rem;font-family:var(--font);cursor:pointer;background:0 0;border:none;padding:16px 20px;display:block}.sheet-item:active:not(:disabled){background:var(--surface2)}.sheet-item.danger{color:var(--danger)}.sheet-item:disabled{color:var(--muted);cursor:default}.sheet-item.danger:disabled{color:var(--muted)}.sheet-divider{border:none;border-top:1px solid var(--border);margin:4px 0}@keyframes flash{0%{color:var(--accent)}to{color:var(--text)}}.flash{animation:.8s ease-out flash}.empty{color:var(--muted);text-align:center;flex:1;justify-content:center;align-items:center;padding:40px;font-size:.95rem;display:flex}@keyframes appear{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.item-row.appearing{animation:.25s ease-out appear}.item-row.leaving{opacity:0;pointer-events:none;transition:opacity .2s ease-out}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:8px 16px 4px;font-size:.75rem}
