*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;touch-action:manipulation}*{scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{display:none}:root{--bg: #0f172a;--bg2: #1e293b;--bg3: #334155;--border: #334155;--border-soft: rgba(255,255,255,.06);--text: #f1f5f9;--text2: #94a3b8;--text3: #64748b;--green: #22c55e;--green-dim: #16a34a;--red: #ef4444;--red-dim: #dc2626;--accent: #6366f1;--accent-dim: #4f46e5;--accent-glow: rgba(99,102,241,.25);--radius: 16px;--radius-sm: 12px;--radius-xs: 8px;--shadow-sm: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--shadow-md: 0 4px 12px rgba(0,0,0,.35), 0 2px 4px rgba(0,0,0,.2);--shadow-accent: 0 4px 16px rgba(99,102,241,.4)}html{height:-webkit-fill-available;background:var(--bg)}body,#root{min-height:100vh;min-height:-webkit-fill-available;min-height:100dvh;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}.app{max-width:480px;margin:0 auto;min-height:100vh;min-height:-webkit-fill-available;min-height:100dvh;display:flex;flex-direction:column;position:relative}.page{flex:1;overflow-y:auto;padding:calc(20px + env(safe-area-inset-top)) 16px calc(88px + env(safe-area-inset-bottom))}.page-header{display:flex;align-items:center;gap:12px;margin-bottom:24px}.page-title{font-size:26px;font-weight:800;letter-spacing:-.5px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;background:#1e293be0;backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);border-top:1px solid var(--border-soft);display:flex;padding-bottom:env(safe-area-inset-bottom);z-index:100}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 0;color:var(--text3);font-size:9px;font-weight:600;letter-spacing:.02em;background:none;border:none;text-decoration:none;transition:color .2s}.nav-item svg{width:22px;height:22px;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.nav-item.active{color:var(--accent)}.nav-item.active svg{transform:scale(1.1)}.card{background:var(--bg2);border-radius:var(--radius);padding:18px;border:1px solid var(--border-soft);box-shadow:var(--shadow-sm)}.card+.card{margin-top:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:13px 20px;border-radius:var(--radius-sm);border:none;font-size:15px;font-weight:700;letter-spacing:.01em;transition:transform .15s cubic-bezier(.34,1.56,.64,1),box-shadow .15s,opacity .15s}.btn:active{transform:scale(.96)!important}.btn:disabled{opacity:.45;pointer-events:none}.btn-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-accent)}.btn-primary:active{box-shadow:0 2px 8px #6366f14d}.btn-green{background:var(--green);color:#fff;box-shadow:0 4px 14px #22c55e59}.btn-red{background:var(--red);color:#fff;box-shadow:0 4px 14px #ef444459}.btn-ghost{background:transparent;color:var(--text2);border:1px solid var(--border);box-shadow:none}.btn-ghost:active{background:var(--bg3)}.btn-full{width:100%}.btn-icon{width:38px;height:38px;padding:0;border-radius:var(--radius-xs);background:var(--bg3);border:none;color:var(--text2);display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}.btn-icon:active{transform:scale(.92)}.quick-fab{position:fixed;bottom:calc(74px + env(safe-area-inset-bottom));right:max(16px,calc(50% - 224px));width:54px;height:54px;border-radius:50%;background:var(--accent);color:#fff;border:none;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-accent),0 0 0 0 var(--accent-glow);z-index:90;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s}.quick-fab:active{transform:scale(.9);box-shadow:0 2px 10px #6366f14d}.quick-panel{max-height:88vh}.quick-amount{font-size:36px;font-weight:800;text-align:center;height:68px;letter-spacing:-1px;color:var(--text)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.form-label{font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.07em}.form-input{background:var(--bg3);border:1.5px solid transparent;border-radius:var(--radius-sm);padding:13px 14px;color:var(--text);font-size:15px;width:100%;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}.form-input:focus{border-color:var(--accent);background:var(--bg2);box-shadow:0 0 0 3px var(--accent-glow)}select.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.type-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px}.type-btn{padding:11px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--bg3);color:var(--text3);font-size:14px;font-weight:700;transition:all .18s cubic-bezier(.4,0,.2,1)}.type-btn.income.active{border-color:var(--green);color:var(--green);background:#22c55e1f;box-shadow:0 0 0 3px #22c55e1a}.type-btn.expense.active{border-color:var(--red);color:var(--red);background:#ef44441f;box-shadow:0 0 0 3px #ef44441a}.tx-item{display:flex;align-items:center;gap:13px;padding:13px 0;border-bottom:1px solid var(--border-soft)}.tx-item:last-child{border-bottom:none}.tx-icon{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.tx-info{flex:1;min-width:0}.tx-name{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.tx-meta{font-size:12px;color:var(--text3);margin-top:3px;font-weight:500}.tx-amount{font-size:15px;font-weight:700;flex-shrink:0}.tx-amount.income{color:var(--green)}.tx-amount.expense{color:var(--red)}.summary-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.summary-card{background:var(--bg2);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm)}.summary-label{font-size:11px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.summary-value{font-size:20px;font-weight:800;margin-top:5px;letter-spacing:-.3px}.balance-card{background:var(--bg2);border:1px solid var(--border-soft);border-radius:var(--radius);padding:18px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-sm)}.month-selector{display:flex;align-items:center;gap:8px;margin-bottom:20px}.month-label{flex:1;text-align:center;font-size:17px;font-weight:700;letter-spacing:-.2px}.empty{text-align:center;padding:48px 16px;color:var(--text3)}.empty-icon{margin-bottom:14px;display:flex;justify-content:center}.empty-text{font-size:15px;font-weight:500}.toast-wrap{position:fixed;bottom:calc(96px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:200;width:calc(100% - 32px);max-width:420px}.toast{padding:14px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;animation:slideUp .3s cubic-bezier(.34,1.56,.64,1);box-shadow:var(--shadow-md);display:flex;align-items:center;gap:8px}.toast.success{background:var(--green);color:#fff}.toast.error{background:var(--red);color:#fff}@keyframes slideUp{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:150;display:flex;align-items:flex-end;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.panel{background:var(--bg2);border-radius:24px 24px 0 0;padding:20px 18px calc(24px + env(safe-area-inset-bottom));width:100%;max-width:480px;margin:0 auto;max-height:92vh;overflow-y:auto;animation:slideUpPanel .32s cubic-bezier(.34,1.2,.64,1);box-shadow:0 -8px 40px #0006}@keyframes slideUpPanel{0%{transform:translateY(100%)}to{transform:translateY(0)}}.panel-handle{width:36px;height:4px;background:var(--bg3);border-radius:2px;margin:0 auto 22px}.panel-title{font-size:19px;font-weight:800;margin-bottom:22px;letter-spacing:-.3px}.spinner{width:32px;height:32px;border:2.5px solid var(--bg3);border-top-color:var(--accent);border-radius:50%;animation:spin .65s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.section-title{font-size:11px;font-weight:800;color:var(--text3);text-transform:uppercase;letter-spacing:.09em;margin-bottom:14px}.color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:700}.chip.income{background:#22c55e26;color:var(--green)}.chip.expense{background:#ef444426;color:var(--red)}.back-btn{background:none;border:none;color:var(--text3);display:flex;align-items:center;gap:4px;font-size:15px;padding:0}.swipe-row-content{background:var(--bg2);transition:transform .22s cubic-bezier(.4,0,.2,1);will-change:transform}.search-bar{display:flex;align-items:center;gap:8px;background:var(--bg2);border:1.5px solid transparent;border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:14px;transition:border-color .2s,box-shadow .2s}.search-bar:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.search-bar input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:15px;font-weight:500}.search-bar input::placeholder{color:var(--text3)}html[data-theme=light]{--bg: #f1f5f9;--bg2: #ffffff;--bg3: #e2e8f0;--border: #cbd5e1;--border-soft: rgba(0,0,0,.07);--text: #0f172a;--text2: #334155;--text3: #64748b;--shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 12px rgba(0,0,0,.12), 0 2px 4px rgba(0,0,0,.06)}html[data-theme=light],html[data-theme=light] body,html[data-theme=light] #root{background:var(--bg);color:var(--text)}html[data-theme=light] .real-balance-card{background:linear-gradient(135deg,#dbeafe,#dcfce7)!important}html[data-theme=light] .form-input{background:var(--bg3);color:var(--text)}html[data-theme=light] .panel,html[data-theme=light] .bottom-nav{background:#ffffffeb}html[data-theme=light] .card,html[data-theme=light] .summary-card,html[data-theme=light] .balance-card,html[data-theme=light] .swipe-row-content,html[data-theme=light] .search-bar{background:var(--bg2)}html[data-theme=light] .quick-amount{color:var(--text)}
