:root{--bg: #f7f7fb;--card: rgba(255, 255, 255, .82);--border: rgba(20, 20, 43, .08);--text: #14142b;--muted: #6e7191;--accent: #6c5ce7;--accent-2: #00b894;--accent-soft: rgba(108, 92, 231, .1);--danger: #eb3b5a;--shadow: 0 8px 30px rgba(20, 20, 43, .08);--radius: 18px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-tap-highlight-color:transparent}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 85% -10%,rgba(108,92,231,.14),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(0,184,148,.12),transparent 60%),var(--bg);background-attachment:fixed;color:var(--text);min-height:100vh}::selection{background:var(--accent);color:#fff}.app{max-width:1160px;margin:0 auto;padding:20px clamp(14px,4vw,28px) 90px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 0 22px}.brand{display:flex;align-items:center;gap:10px;font-size:1.25rem;font-weight:800;letter-spacing:-.02em}.brand-badge{width:38px;height:38px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#a29bfe);border-radius:12px;font-size:1.15rem;box-shadow:0 6px 18px #6c5ce759}.topbar-right{display:flex;align-items:center;gap:12px}.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--accent-2),#55efc4);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.9rem}.card{background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.muted{color:var(--muted);font-size:.85rem}.error{background:#eb3b5a1a;color:var(--danger);border-radius:12px;padding:11px 16px;margin:10px 0;font-size:.9rem}button{border:none;cursor:pointer;border-radius:12px;font-size:.95rem;font-weight:600;transition:transform .12s ease,box-shadow .12s ease,background .15s ease,opacity .15s}button:active{transform:scale(.97)}.primary{background:linear-gradient(135deg,var(--accent),#8c7ae6);color:#fff;padding:12px 22px;box-shadow:0 6px 16px #6c5ce759}.primary:hover{box-shadow:0 8px 22px #6c5ce773}.ghost{background:transparent;color:var(--text);border:1px solid var(--border);padding:9px 16px}.ghost:hover{background:#14142b0a}.link{background:none;color:var(--accent);margin-top:10px;font-weight:500}.icon-btn{background:#14142b0d;opacity:.8;padding:7px;border-radius:10px;font-size:.85rem}.icon-btn:hover{opacity:1}input,select{width:100%;padding:12px 14px;margin-bottom:12px;border:1.5px solid var(--border);border-radius:12px;font-size:.95rem;background:#ffffffbf;transition:border-color .15s,box-shadow .15s;font-family:inherit}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:18px}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;animation:rise .45s ease both}.auth-card h1{font-size:1.65rem;letter-spacing:-.03em;margin-bottom:2px}.auth-card>.muted{margin-bottom:20px}.auth-logo{width:64px;height:64px;display:grid;place-items:center;font-size:1.9rem;background:linear-gradient(135deg,var(--accent),#a29bfe);border-radius:20px;margin-bottom:18px;box-shadow:0 10px 26px #6c5ce759}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.fade-in{animation:fadein .3s ease both}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-bottom:18px}.stat{display:flex;flex-direction:column;gap:5px;animation:rise .4s ease both}.stat:nth-child(2){animation-delay:.05s}.stat:nth-child(3){animation-delay:.1s}.stat:nth-child(4){animation-delay:.15s}.stat-label{color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.07em;font-weight:600}.stat-value{font-size:1.85rem;font-weight:800;letter-spacing:-.03em}.stat-sub{color:var(--muted);font-size:.8rem}.barchart{display:flex;align-items:flex-end;gap:10px;height:104px;margin-top:auto}.bar-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;height:100%;flex:1;cursor:default}.bar{width:100%;max-width:34px;min-height:3px;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,#a29bfe,var(--accent));transition:filter .15s}.bar-col:hover .bar{filter:brightness(1.15)}.bar-label{font-size:.66rem;color:var(--muted);font-weight:600}.catbars{display:flex;flex-direction:column;gap:9px;margin-top:8px}.catbar-row{display:flex;align-items:center;gap:9px}.catbar-name{width:88px;font-size:.78rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catbar-track{flex:1;height:9px;background:#14142b0f;border-radius:5px;overflow:hidden}.catbar-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--accent),#a29bfe);transition:width .5s cubic-bezier(.22,1,.36,1)}.catbar-amt{width:68px;text-align:right;font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}.budget-form{display:grid;grid-template-columns:1.4fr 1fr auto;gap:8px;margin-bottom:14px}.budget-form select,.budget-form input{margin-bottom:0}.budget-list{display:flex;flex-direction:column;gap:12px}.budget-top{display:flex;align-items:center;gap:8px;margin-bottom:5px}.budget-cat{font-weight:600;font-size:.88rem;flex:1}.budget-nums{font-size:.76rem;color:var(--muted);font-variant-numeric:tabular-nums}.budget-nums.over{color:var(--danger);font-weight:700}.budget-row .icon-btn{font-size:.7rem;padding:4px 7px}.catbar-track.over{background:#eb3b5a1f}.catbar-fill.over{background:linear-gradient(90deg,var(--danger),#ff7675)}.main-grid{display:grid;grid-template-columns:350px 1fr;gap:16px;align-items:start}@media (max-width: 860px){.main-grid{grid-template-columns:1fr}}.form-card h3,.list-card h3{margin-bottom:14px;letter-spacing:-.01em}.form-actions{display:flex;gap:8px}.expense-form input[type=date]{color:var(--text)}.list-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:6px}.filters{display:flex;gap:8px;flex:1;max-width:380px}.filters input,.filters select{margin-bottom:0;padding:9px 12px;font-size:.86rem}.exp-list{list-style:none}.exp-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 6px;border-bottom:1px solid var(--border);animation:fadein .25s ease both;transition:background .15s;border-radius:10px}.exp-list li:hover{background:#6c5ce70d}.exp-list li:last-child{border-bottom:none}.exp-main{display:flex;align-items:center;gap:13px;min-width:0}.exp-icon{width:42px;height:42px;display:grid;place-items:center;flex-shrink:0;font-size:1.2rem;border-radius:13px;background:var(--accent-soft)}.exp-text{display:flex;flex-direction:column;min-width:0}.exp-desc{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exp-meta{font-size:.74rem}.exp-side{display:flex;align-items:center;gap:5px;flex-shrink:0}.exp-amount{font-weight:700;margin-right:6px;font-variant-numeric:tabular-nums}.empty{justify-content:center!important;padding:30px 0!important}.appbar-spacer{height:76px}.tabbar{position:fixed;bottom:14px;left:50%;transform:translate(-50%);display:flex;gap:6px;z-index:50;background:#ffffffe6;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:22px;padding:8px;box-shadow:0 12px 40px #14142b2e}@media (min-width: 861px){.tabbar,.appbar-spacer{display:none}}.tab-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 18px;border-radius:15px;background:transparent;font-size:1.15rem;color:var(--muted)}.tab-btn span.lbl{font-size:.62rem;font-weight:700}.tab-btn.active{background:var(--accent-soft);color:var(--accent)}.fab{position:fixed;right:20px;bottom:96px;z-index:49;width:58px;height:58px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#8c7ae6);color:#fff;font-size:1.7rem;display:grid;place-items:center;box-shadow:0 10px 30px #6c5ce773}@media (min-width: 861px){.fab{display:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14142b66;z-index:60;display:grid;place-items:end center;padding:0;animation:fadein .2s ease both;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:100%;max-width:480px;background:#fff;border-radius:24px 24px 0 0;padding:24px 22px 30px;animation:slideup .28s cubic-bezier(.22,1,.36,1) both}@keyframes slideup{0%{transform:translateY(60%)}to{transform:none}}@media (min-width: 861px){.modal-overlay{place-items:center;padding:18px}.modal{border-radius:24px}@keyframes slideup{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}}.modal h3{margin-bottom:16px}
