:root{--bg:#0b0b0f;--surface-1:#131319;--surface-2:#1a1a22;--surface-3:#22222c;--border:#ffffff12;--border-strong:#ffffff21;--text:#ececf1;--text-2:#a2a2b2;--text-3:#6a6a79;--pos:#4ade80;--neg:#f87171;--neg-dim:#3a1a1d;--warn:#fbbf24;--accent:#4ade80;--on-accent:#04120a;--r-sm:10px;--r-md:14px;--r-lg:18px;--r-pill:999px;--sh-2:0 8px 24px #00000073;--sh-modal:0 24px 60px #0009;--glow:0 0 24px #4ade8047;--e-out:cubic-bezier(.16, 1, .3, 1);--t-fast:.14s;--t-mid:.22s}*{box-sizing:border-box}html,body,#root{width:100%;margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}input,select,textarea{font-size:16px}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:8px}::-webkit-scrollbar-track{background:0 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}.app{max-width:480px;min-height:100dvh;margin:0 auto;position:relative}.eyebrow{letter-spacing:2.5px;color:var(--text-3);text-transform:uppercase;font-size:11px;font-weight:600}.field{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);width:100%;color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);outline:none;padding:13px 14px;font-family:inherit;font-size:16px}.field::placeholder{color:var(--text-3)}.field:focus{border-color:var(--accent);background:var(--surface-3);box-shadow:0 0 0 3px #4ade8026}select.field{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236a6a79' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:40px}.btn{border-radius:var(--r-md);cursor:pointer;min-height:46px;transition:transform var(--t-fast) var(--e-out), background var(--t-fast), box-shadow var(--t-fast), opacity var(--t-fast), border-color var(--t-fast);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 18px;font-family:inherit;font-size:15px;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{cursor:not-allowed}.btn-accent{background:var(--accent);color:var(--on-accent)}.btn-accent:hover:not(:disabled){box-shadow:var(--glow)}.btn-accent:disabled{background:var(--surface-2);color:var(--text-3)}.btn-neg{background:var(--neg);color:#1a0a0b}.btn-neg:hover:not(:disabled){box-shadow:0 0 24px #f8717147}.btn-neg:disabled{background:var(--surface-2);color:var(--text-3)}.btn-ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-3)}.btn-danger{background:var(--neg-dim);color:var(--neg);border:1px solid #f8717166}.btn-danger:hover:not(:disabled){background:#f8717129}.icon-btn{cursor:pointer;width:40px;height:40px;color:var(--text-2);transition:color var(--t-fast), background var(--t-fast);-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;margin:-8px;padding:0;display:inline-flex}.icon-btn:hover{color:var(--text);background:var(--surface-2)}.demo-bar{background:#4ade8017;border-bottom:1px solid #4ade802e;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;display:flex}.demo-bar b{color:var(--accent);font-weight:600}.link{cursor:pointer;color:var(--text-2);transition:color var(--t-fast), filter var(--t-fast);background:0 0;border:none;align-items:center;gap:5px;padding:6px 4px;font-family:inherit;font-size:12px;font-weight:600;display:inline-flex}.link:hover{color:var(--text)}.link-accent{color:var(--accent)}.link-accent:hover{color:var(--accent);filter:brightness(1.15)}.header{z-index:20;-webkit-backdrop-filter:saturate(140%)blur(14px);border-bottom:1px solid var(--border);background:#0b0b0fb8;padding:18px 16px 15px;position:sticky;top:0}.header-top{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.balance{letter-spacing:-.02em;transition:color var(--t-mid);font-size:34px;font-weight:800;line-height:1}.progress{background:var(--surface-2);border-radius:var(--r-pill);height:5px;margin-top:13px;overflow:hidden}.progress>span{border-radius:var(--r-pill);height:100%;transition:width .6s var(--e-out), background var(--t-mid);display:block;box-shadow:0 0 12px}.chip{border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);cursor:pointer;transition:transform var(--t-fast) var(--e-out), border-color var(--t-fast), background var(--t-fast), color var(--t-fast);-webkit-tap-highlight-color:transparent;padding:7px 12px;font-family:inherit;font-size:13px}.chip:active{transform:scale(.95)}.chip.on{border-color:var(--accent);color:var(--accent);background:#4ade801f}.cat-grid{grid-template-columns:repeat(3,1fr);gap:9px;display:grid}.cat{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;min-height:96px;transition:transform var(--t-fast) var(--e-out), border-color var(--t-fast), box-shadow var(--t-fast);animation:rise .38s var(--e-out) backwards;flex-direction:column;gap:7px;padding:12px;display:flex}.cat:hover{border-color:var(--border-strong);box-shadow:var(--sh-2);transform:translateY(-2px)}.cat:active{transform:translateY(0)scale(.98)}.cat.over{border-color:#f8717159}.cat-name{color:var(--text-2);min-height:28px;font-size:11.5px;line-height:1.25}.cat-val{letter-spacing:-.01em;font-size:16px;font-weight:700}.cat-sub{color:var(--text-3);font-size:9.5px}.cat-bar{background:var(--bg);border-radius:var(--r-pill);height:3px;overflow:hidden}.cat-bar>span{border-radius:var(--r-pill);height:100%;transition:width .6s var(--e-out);display:block}.row{border-bottom:1px solid var(--surface-1);cursor:pointer;transition:background var(--t-fast);animation:fade .3s var(--e-out) backwards;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:12px 4px;font-size:13px;display:flex}.row:hover{background:var(--surface-1)}.row-meta{color:var(--text-3);font-size:11px}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px}.overlay{z-index:100;animation:fade var(--t-mid) var(--e-out);background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-lg);width:100%;max-width:360px;box-shadow:var(--sh-modal);animation:pop .3s var(--e-out);max-height:calc(100dvh - 40px);padding:22px;overflow-y:auto}.modal-title{color:var(--text-2);margin-bottom:14px;font-size:13px;font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.8s linear infinite spin}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
