:root{--canvas:#f5f7fa;--surface:#ffffff;--dark:#111827;--ink:#0f172a;--text-secondary:#475569;--muted:#64748b;--text-quiet:#94a3b8;--text-disabled:#cbd5e1;--line:#e2e8f0;--line-strong:#cbd5e1;--field-bg:#f1f5f9;--pill-bg:#f1f5f9;--pill-bg-strong:#e2e8f0;--chip-bg:#f1f5f9;--income:#10b981;--income-on-dark:#34d399;--income-dim:#ecfdf5;--income-chip-text:#047857;--expense:#f43f5e;--expense-on-dark:#fb7185;--expense-dim:#fff1f2;--expense-chip-text:#be123c;--gold:#f59e0b;--violet:#6366f1;--brand:#0d9488;--r-card:16px;--r-modal:20px;--r-menu:14px;--r-field:10px;--r-pill:10px;--r-btn:10px;--r-btn-lg:12px;--shadow-card:0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);--shadow-hero:0 4px 14px -4px rgba(15,23,42,.15), 0 14px 30px -14px rgba(15,23,42,.2);--shadow-modal:0 30px 60px -24px rgba(15,23,42,.35);--shadow-menu:0 14px 34px -14px rgba(15,23,42,.25), 0 0 0 1px rgba(15,23,42,.06)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0}body{overflow-x:hidden;width:100%}body{background:var(--canvas);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Helvetica Neue,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}.mono{font-variant-numeric:tabular-nums}@keyframes dcRise{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}.wrap{max-width:640px;margin:0 auto;padding:28px 16px 80px}.loading-screen{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted);font-size:13px}header{margin-bottom:24px}.title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;position:sticky;top:0;z-index:15;background:var(--canvas);padding:14px 0;margin:-14px 0 16px;border-bottom:1px solid var(--line)}.header-left{display:flex;align-items:center;gap:20px;flex-wrap:wrap;row-gap:12px}.brand-cluster{display:flex;align-items:center;gap:10px}.logo-box{width:36px;height:36px;border-radius:10px;background:var(--dark);flex:none;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 2px #0f172a2e}.brand-text{display:flex;flex-direction:column;gap:1px;min-width:0}.app-brand{display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.app-brand-mark{flex:none}.brand-dot{width:3px;height:3px;border-radius:2px;background:var(--text-quiet);flex:none}.month-pill{display:flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-btn-lg);padding:6px 8px;box-shadow:var(--shadow-card);flex:none}.month-pill-label{font-size:13.5px;font-weight:600;letter-spacing:-.01em;color:var(--ink);padding:0 2px;white-space:nowrap}.ios-standalone .title-row{position:fixed;top:0;left:0;right:0;margin:0;padding:16px 16px 12px;padding-top:calc(16px + env(safe-area-inset-top))}.ios-standalone .wrap{padding-top:calc(190px + env(safe-area-inset-top))}h1{font-size:19px;font-weight:700;letter-spacing:-.02em;margin:0;border:none;background:transparent;color:var(--ink);padding:0;outline:none;cursor:default;white-space:nowrap}.header-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.quick-add-budget{white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.month-arrow{width:26px;height:26px;border:none;border-radius:9px;background:transparent;color:var(--text-secondary);font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s}.month-arrow:hover{background:var(--pill-bg)}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}.month-state-tag{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:3px 9px 3px 7px;border-radius:999px;border:1px solid transparent;white-space:nowrap;margin-left:4px}.month-state-tag .state-dot{width:5px;height:5px;border-radius:3px;flex:none}.month-state-tag.open{background:var(--income-dim);color:var(--income-chip-text);border-color:#a7f3d0}.month-state-tag.open .state-dot{background:var(--income);animation:pulseDot 2s ease-in-out infinite}.month-state-tag.frozen{background:var(--expense-dim);color:var(--expense-chip-text);border-color:#fecdd3}.month-state-tag.frozen .state-dot{background:var(--expense)}.month-state-tag.small{font-size:9px;padding:2px 7px 2px 6px;margin-left:0}.lang-switch-wrap,.auth-lang-wrap{position:relative}.lang-switch-btn,.auth-lang-btn{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-btn-lg);background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:border-color .15s;box-shadow:var(--shadow-card)}.lang-switch-btn:hover,.auth-lang-btn:hover{border-color:var(--line-strong)}.lang-switch-menu,.auth-lang-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:41;min-width:184px;max-width:calc(100vw - 32px);background:var(--surface);border-radius:var(--r-menu);padding:6px;box-shadow:var(--shadow-menu);display:flex;flex-direction:column;gap:2px;animation:dcRise .16s cubic-bezier(.32,.72,0,1)}.auth-lang-menu{left:auto;right:0}.lang-switch-menu button,.auth-lang-menu button{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;padding:9px 11px;font-size:13.5px;background:none;border:none;cursor:pointer;border-radius:11px;color:var(--ink);font-weight:400}.lang-switch-menu button:hover,.auth-lang-menu button:hover{background:var(--chip-bg)}.lang-switch-menu button.active,.auth-lang-menu button.active{background:var(--chip-bg);color:var(--ink);font-weight:600}.lang-switch-menu button.active:after,.auth-lang-menu button.active:after{content:"✓";color:var(--income);font-size:11px}.currency-menu-wrap{position:relative}.currency-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:41;min-width:240px;max-width:calc(100vw - 32px);background:var(--surface);border-radius:var(--r-menu);padding:8px;box-shadow:var(--shadow-menu);display:flex;flex-direction:column;gap:2px;animation:dcRise .16s cubic-bezier(.32,.72,0,1)}.currency-menu-section-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-quiet);font-weight:600;padding:8px 9px 4px;display:block}.currency-menu-tabs{display:flex;padding:3px;margin:4px 2px 2px;background:var(--pill-bg);border-radius:11px;gap:2px}.currency-menu-tabs button{flex:1;border:none;border-radius:9px;padding:7px 8px;font-size:11.5px;font-weight:600;cursor:pointer;background:transparent;color:var(--muted);transition:all .15s}.currency-menu-tabs button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001f}.currency-menu-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:none;background:none;padding:9px;border-radius:11px;cursor:pointer;font-size:13px;color:var(--ink);text-align:left;width:100%}.currency-menu-toggle-row:hover{background:var(--chip-bg)}.switch{width:30px;height:18px;border-radius:9px;background:var(--pill-bg-strong);position:relative;flex:none;transition:background .18s}.switch:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:7px;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .18s}.switch.on{background:var(--brand)}.switch.on:after{transform:translate(12px)}.currency-menu-list{display:flex;flex-direction:column;gap:1px;max-height:180px;overflow-y:auto}.currency-menu-list button{display:flex;align-items:center;justify-content:space-between;gap:12px;border:none;background:transparent;border-radius:11px;padding:8px 9px;font-size:13.5px;cursor:pointer;color:var(--ink);text-align:left;width:100%}.currency-menu-list button:hover{background:var(--chip-bg)}.currency-menu-list button.active{background:var(--chip-bg);font-weight:600}.currency-menu-list button .check{font-size:11px;color:var(--brand);opacity:0}.currency-menu-list button.active .check{opacity:1}.currency-menu-rate{border-top:1px solid var(--line);margin-top:4px;padding-bottom:2px}.currency-menu-rate-row{display:flex;align-items:center;gap:8px;padding:0 9px}.currency-menu-rate-row input{flex:1;min-width:0;border:1px solid var(--line-strong);background:var(--field-bg);border-radius:11px;padding:9px 11px;font-size:13.5px;color:var(--ink);outline:none;text-align:right;font-variant-numeric:tabular-nums;transition:border-color .15s,background .15s}.currency-menu-rate-row input:focus{border-color:var(--brand);background:var(--surface)}.currency-menu-rate-suffix{font-size:12px;color:var(--muted);flex:none}.currency-menu-hint{font-size:10.5px;color:var(--text-quiet);padding:5px 9px 2px;display:block}.avatar-menu-wrap{position:relative}.avatar-btn{width:34px;height:34px;border-radius:17px;border:2px solid var(--line);background:var(--dark);color:#fff;font-size:12.5px;font-weight:600;letter-spacing:.02em;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;padding:0;flex:none;transition:transform .15s,box-shadow .15s}.avatar-btn img{width:100%;height:100%;object-fit:cover}.avatar-btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px -10px #0a0a0c99}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:transparent}.avatar-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:41;min-width:170px;max-width:calc(100vw - 32px);background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-menu);display:flex;flex-direction:column;padding:6px;animation:dcRise .16s cubic-bezier(.32,.72,0,1)}.avatar-menu button{text-align:left;padding:10px 11px;font-size:13px;background:none;border:none;cursor:pointer;color:var(--ink);border-radius:11px}.avatar-menu button:hover{background:var(--chip-bg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1212146b;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal-card{background:var(--surface);border-radius:var(--r-modal);padding:26px 28px 22px;width:100%;max-width:428px;max-height:calc(100vh - 40px);overflow-y:auto;box-shadow:var(--shadow-modal);animation:dcRise .2s cubic-bezier(.32,.72,0,1)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px;gap:12px}.modal-head h2{font-size:19px;font-weight:600;letter-spacing:-.02em;margin:0}.modal-close{width:30px;height:30px;border:none;border-radius:15px;background:var(--pill-bg);color:var(--text-secondary);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s}.modal-close:hover{background:var(--pill-bg-strong)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.confirm-card{max-width:380px}.confirm-title{font-size:18px;font-weight:600;letter-spacing:-.02em;margin:0}.confirm-message{font-size:13.5px;line-height:1.5;color:var(--text-secondary);margin:10px 0 0}.btn-danger{background:var(--expense)}.avatar-picker{display:flex;align-items:center;gap:16px;margin-bottom:20px;padding:14px;background:var(--field-bg);border-radius:20px}.avatar-circle{width:58px;height:58px;border-radius:29px;background:var(--dark);flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:600;color:#fff;cursor:pointer;overflow:hidden;padding:0;border:none}.avatar-circle img{width:100%;height:100%;object-fit:cover}.avatar-link{background:none;border:none;color:var(--brand);font-size:12.5px;font-weight:600;text-decoration:none;cursor:pointer;padding:0}.avatar-link.muted{color:var(--text-quiet);font-weight:400}.avatar-picker-links{display:flex;flex-direction:column;gap:5px;align-items:flex-start}.hidden-file-input{display:none}.profile-form{display:flex;flex-direction:column;gap:12px}.profile-form label{display:flex;flex-direction:column;gap:7px;font-size:10.5px;color:var(--muted);letter-spacing:.11em;text-transform:uppercase;font-weight:600}.profile-form input{border:1px solid var(--line-strong);background:var(--field-bg);border-radius:var(--r-field);padding:11px 13px;font-size:14px;color:var(--ink);outline:none;width:100%;min-width:0;transition:border-color .15s,background .15s}.profile-form input:focus{border-color:var(--brand);background:var(--surface)}.profile-form input:disabled{color:var(--muted);background:var(--field-bg)}.profile-form-row-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.profile-email-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.profile-email-row input{flex:1}.verified-badge{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:4px 8px;border-radius:7px;white-space:nowrap}.verified-badge.yes{background:var(--income-dim);color:var(--income-chip-text)}.verified-badge.no{background:var(--expense-dim);color:var(--expense-chip-text)}.modal-footer-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.modal-footer-row .modal-actions{margin-top:0}.danger-link{border:none;background:none;color:var(--expense);font-size:13px;font-weight:500;cursor:pointer;padding:8px 0}.close-month-row{display:flex;justify-content:flex-end;margin-top:-2px}.close-month-link{display:inline-flex;align-items:center;gap:6px;border:none;background:none;cursor:pointer;font-size:12.5px;font-weight:500;color:var(--muted);padding:2px 0;transition:color .15s}.close-month-link:hover{color:var(--ink)}.close-month-link:disabled{opacity:.5;cursor:default}.close-month-link svg{flex:none;color:var(--text-quiet)}.close-month-link:hover svg{color:var(--text-secondary)}.close-month-link.reopen{color:var(--expense-chip-text)}.close-month-link.reopen:hover{color:var(--expense)}.summary-grid{display:flex;flex-direction:column;gap:14px;margin-top:16px}.hero-card{background:var(--dark);border-radius:var(--r-card);padding:24px 26px;color:#fff;display:flex;flex-direction:column;justify-content:space-between;gap:16px;min-height:172px;box-shadow:var(--shadow-hero);position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.06)}.hero-card:before{content:"";position:absolute;top:-32px;right:-32px;width:144px;height:144px;border-radius:50%;background:#f43f5e1f;filter:blur(20px);pointer-events:none}.hero-top{display:flex;flex-direction:column;gap:10px;position:relative}.hero-label-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.hero-label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#ffffff80;font-weight:700}.hero-amount-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.hero-amount{font-size:clamp(26px,8vw,34px);font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;word-break:break-word}.hero-amount.neg{color:#fda4af}.hero-ratio-chip{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;letter-spacing:.01em;white-space:nowrap;background:#34d39929;color:#6ee7b7;border:1px solid rgba(110,231,183,.18)}.hero-ratio-chip.neg{background:#fb718529;color:#fda4af;border-color:#fda4af38}.hero-usd{font-size:12px;color:#ffffff6b;font-variant-numeric:tabular-nums}.hero-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;background:#ffffff1a;gap:2px;position:relative}.hero-bar-income{background:var(--income-on-dark);border-radius:3px}.hero-bar-expense{background:var(--expense-on-dark);border-radius:3px}.hero-legend{display:flex;gap:16px;font-size:11px;color:#ffffff80;position:relative}.hero-legend span{display:flex;align-items:center;gap:6px}.stat-card{background:var(--surface);border-radius:var(--r-card);padding:22px 24px;border:1px solid var(--line);display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow-card)}.stat-card-badge{font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}.stat-card-badge.income{background:var(--income-dim);color:var(--income-chip-text)}.stat-card-badge.expense{background:var(--expense-dim);color:var(--expense-chip-text)}.stat-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.stat-card-top-left{display:flex;align-items:center;gap:7px}.stat-card-label{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:600}.stat-card-figs{display:flex;flex-direction:column;gap:3px;margin-top:14px}.stat-card-amount{font-size:clamp(19px,6vw,27px);font-weight:600;letter-spacing:-.025em;font-variant-numeric:tabular-nums;word-break:break-word}.stat-card-usd{font-size:12px;color:var(--text-quiet);font-variant-numeric:tabular-nums}.stat-card-bottom{display:flex;flex-direction:column;gap:7px;margin-top:16px}.dot{width:8px;height:8px;border-radius:4px;display:inline-block;flex:none}.dot.income{background:var(--income)}.dot.expense{background:var(--expense)}.dot.savings{background:var(--gold)}.stat-progress{height:5px;border-radius:3px;background:#0000000e;overflow:hidden}.stat-progress-bar{height:100%;border-radius:3px;transition:width .35s cubic-bezier(.4,0,.2,1)}.stat-progress-bar.income{background:var(--income)}.stat-progress-bar.expense{background:var(--expense)}.stat-pending{font-size:11px;color:var(--text-quiet)}#budgets{display:flex;flex-direction:column;gap:16px;margin-top:24px}.budget{background:var(--surface);border-radius:var(--r-card);padding:20px 22px 14px;box-shadow:var(--shadow-card);border:1px solid var(--line);transition:box-shadow .15s;height:100%;display:flex;flex-direction:column}.budget:hover{box-shadow:0 4px 14px -6px #0f172a29}.budget-head{display:flex;align-items:center;gap:12px;flex-wrap:nowrap}.budget-name{font-size:12px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;display:flex;align-items:center;gap:8px;cursor:pointer;min-width:0;flex:1 1 0%}.budget-name span:not(.kind-chip):not(.dot):not(.drag-handle){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drag-handle{flex:none;cursor:grab;color:var(--text-disabled);font-size:15px;line-height:1;touch-action:none;padding:2px;margin:-2px;-webkit-user-select:none;user-select:none}.drag-handle:active{cursor:grabbing}.kind-chip{font-size:10px;font-weight:700;letter-spacing:.04em;padding:2px 6px;border-radius:6px;white-space:nowrap;text-transform:none;border:1px solid transparent}.kind-chip.income{background:var(--income-dim);color:var(--income-chip-text);border-color:#a7f3d0}.kind-chip.expense{background:var(--expense-dim);color:var(--expense-chip-text);border-color:#fecdd3}.budget-name .edit-hint{opacity:0;font-size:10px;color:var(--muted);transition:opacity .12s;text-transform:none}.budget-name:hover .edit-hint{opacity:1}.budget-edit-form{display:flex;flex-direction:column;gap:10px;width:100%;padding:4px 0}.budget-edit-form input[type=text]{width:100%}.form-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.form-row .go{display:flex;gap:6px;flex:none}.budget-totals-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.budget-totals{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap}.budget-totals-fx{font-size:11px;color:var(--text-quiet);font-variant-numeric:tabular-nums;white-space:nowrap}.budget-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.icon-btn{background:none;border:none;cursor:pointer;color:var(--text-disabled);font-size:14px;padding:2px;line-height:1;transition:color .15s}.icon-btn:hover{color:var(--text-secondary)}@media (max-width: 480px){.budget-name .kind-chip{display:none}}.budget-progress-row{display:flex;align-items:center;gap:10px;margin:14px 0 6px}.budget-progress-track{flex:1;height:4px;border-radius:2px;background:#0000000d;overflow:hidden}.budget-progress-bar{height:100%;border-radius:2px;transition:width .35s cubic-bezier(.4,0,.2,1)}.budget-progress-label{font-size:11px;color:var(--text-quiet);white-space:nowrap;font-variant-numeric:tabular-nums}.row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-top:1px solid var(--line)}.row.done .desc,.row.done .amt{color:var(--text-quiet)}.row-left{display:flex;align-items:center;gap:11px;min-width:0}.check-circle{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:9px;flex:none;cursor:pointer;margin:0;padding:0;border:1.5px solid var(--line-strong);background:transparent;color:#fff;font-size:10px;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .18s}.check-circle:disabled{cursor:default}.desc{flex:1;min-width:0;font-size:13.5px;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;color:var(--ink)}.row-right{display:flex;align-items:baseline;gap:6px;flex:none}.amt{font-size:13.5px;font-weight:600;cursor:pointer;color:var(--ink)}.amt-fx{font-size:10.5px;color:var(--text-quiet);text-align:right}.del-row{opacity:0;transition:opacity .12s,color .15s;background:none;border:none;color:var(--text-disabled);cursor:pointer;font-size:13px;padding:0 2px;line-height:1}.row:hover .del-row{opacity:1}.del-row:hover{color:var(--muted)}.add-row{display:flex;gap:8px;align-items:center;padding:12px 0 4px;border-top:1px solid var(--line);flex-wrap:wrap}.add-row input[type=text]{flex:1;min-width:120px}.add-row input[type=number]{width:120px}input[type=text],input[type=number],input[type=email],input[type=password],input[type=tel]{border:none;background:var(--chip-bg);border-radius:10px;font-size:13.5px;color:var(--ink);padding:9px 12px;outline:none}.add-row input[type=number]{text-align:right;font-variant-numeric:tabular-nums}input::placeholder{color:var(--text-quiet)}.add-row .go{display:flex;gap:6px;flex:none}.btn{font-size:12.5px;font-weight:600;letter-spacing:0;padding:9px 14px;border-radius:var(--r-btn);border:none;background:var(--dark);color:#fff;cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s}.btn:hover{transform:translateY(-1px)}.btn.ghost{background:transparent;color:var(--muted);padding:9px 6px}.btn.ghost:hover{transform:none;color:var(--ink)}.btn.btn-full{width:100%;padding:14px 18px;font-size:14.5px;border-radius:var(--r-btn-lg);margin-top:0;box-shadow:0 10px 24px -14px #0a0a0cb3}.btn.btn-full:hover{box-shadow:0 16px 30px -16px #0a0a0cbf}.add-trigger{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:auto;flex:none;padding:9px;font-size:12.5px;font-weight:600;letter-spacing:0;color:var(--text-secondary);background:none;border:1.5px dashed var(--line-strong);border-radius:var(--r-btn-lg);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.add-trigger:hover{color:var(--ink);border-color:var(--muted);background:var(--field-bg)}.new-budget{border:1.5px dashed var(--line-strong);border-radius:var(--r-card);padding:22px;min-height:220px;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}.new-budget:hover{border-color:var(--muted);background:var(--field-bg)}.new-budget-trigger{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;background:none;border:none;cursor:pointer;width:100%;padding:0}.new-budget-icon{width:44px;height:44px;border-radius:50%;background:var(--pill-bg);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:400;transition:all .18s}.new-budget:hover .new-budget-icon{background:var(--dark);color:#fff}.new-budget-trigger h4{margin:0;font-size:13.5px;font-weight:650;color:var(--text-secondary);transition:color .15s}.new-budget:hover .new-budget-trigger h4{color:var(--ink)}.new-budget-trigger p{margin:0;font-size:11.5px;color:var(--text-quiet);max-width:210px;line-height:1.45}.new-budget-form{display:flex;flex-direction:column;gap:12px;padding:2px 0;width:100%}.new-budget-form input[type=text]{width:100%}.type-toggle{display:flex;padding:3px;background:var(--pill-bg);border-radius:11px;gap:2px;flex:none}.type-toggle button{font-size:11.5px;font-weight:600;letter-spacing:.03em;padding:6px 11px;border:none;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer;transition:all .15s}.type-toggle button.active.expense{background:var(--surface);color:var(--expense-chip-text);box-shadow:0 1px 3px #0000001f}.type-toggle button.active.income{background:var(--surface);color:var(--income-chip-text);box-shadow:0 1px 3px #0000001f}.history{margin-top:24px;background:var(--surface);border-radius:var(--r-card);padding:24px 26px;box-shadow:var(--shadow-card);border:1px solid var(--line)}.history-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:16px;flex-wrap:wrap;gap:12px;border-bottom:1px solid var(--line)}.history-head-text{display:flex;flex-direction:column;gap:2px}.history-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--text-quiet)}.history-head h2{font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--ink);margin:0}.hist-legend{display:flex;align-items:center;gap:16px;font-size:12px}.hist-legend-item{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-weight:500}.hist-legend-swatch{width:9px;height:9px;border-radius:3px;flex:none}.hist-legend-swatch.income{background:var(--brand)}.hist-legend-swatch.expense{background:var(--expense-on-dark)}.hist-wrap{display:flex;flex-direction:column;gap:20px}.hist-chart-shell{background:var(--field-bg);border:1px solid var(--line);border-radius:var(--r-card);padding:18px;display:flex;flex-direction:column;align-items:center;gap:8px}.hist-chart{display:flex;align-items:flex-end;justify-content:center;gap:24px;height:130px;padding:0 2px 8px;width:100%;overflow-x:auto;border-bottom:1px solid var(--line)}.hist-chart-col{display:flex;flex-direction:column;align-items:center;gap:8px;flex:0 0 auto}.hist-chart-bars{display:flex;align-items:flex-end;gap:6px;height:104px}.hist-chart-bar{width:14px;border-radius:6px 6px 3px 3px;transition:opacity .15s}.hist-chart-bar.income{background:var(--brand)}.hist-chart-bar.expense{background:var(--expense-on-dark)}.hist-chart-label{font-size:10.5px;font-weight:700;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.hist-chart-caption{font-size:11px;color:var(--text-quiet);font-weight:500;margin:2px 0 0}@media (min-width: 1080px){.hist-wrap{flex-direction:row;align-items:stretch}.hist-chart-shell{flex:0 0 260px;justify-content:center}.hist-grid{flex:1;min-width:0}}.view-tabs{display:flex;align-items:center;gap:2px;padding:4px;background:var(--pill-bg);border-radius:var(--r-btn-lg);flex:none}.view-tabs button{border:none;background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;padding:7px 13px;border-radius:9px;transition:all .15s;white-space:nowrap}.view-tabs button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001a}.nav-history-btn{white-space:nowrap}.view-all-history-btn{white-space:nowrap;font-size:11.5px;padding:7px 12px}.history-cta{margin-top:20px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:14px}.history-cta-icon{width:36px;height:36px;border-radius:10px;background:var(--dark);color:#2dd4bf;flex:none;display:flex;align-items:center;justify-content:center}.history-cta-text{flex:1;min-width:200px}.history-cta-text h4{margin:0 0 2px;font-size:12.5px;font-weight:700;color:var(--ink)}.history-cta-text p{margin:0;font-size:11.5px;color:var(--text-quiet);line-height:1.4}.history-cta-btn{white-space:nowrap;font-size:12px;padding:9px 16px}.historial-view{display:flex;flex-direction:column;gap:20px}.historial-kpis{display:grid;grid-template-columns:1fr;gap:14px}@media (min-width: 640px){.historial-kpis{grid-template-columns:1fr 1fr}}@media (min-width: 1200px){.historial-kpis{grid-template-columns:repeat(4,1fr)}}.historial-kpi{min-height:0}.historial-kpi-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:12px;font-size:11.5px;color:var(--text-quiet)}.hero-card.historial-kpi .historial-kpi-foot{border-top:1px solid rgba(255,255,255,.1);color:#ffffff80}.stat-card.historial-kpi .historial-kpi-foot{border-top:1px solid var(--line)}.neg-text{color:var(--expense)!important}.year-list{display:flex;flex-direction:column;gap:14px}.year-section{border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;background:var(--surface)}.year-summary{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 18px;background:var(--field-bg);border:none;cursor:pointer;text-align:left}.year-summary-left{display:flex;align-items:center;gap:12px}.year-badge{width:28px;height:28px;border-radius:9px;background:var(--dark);color:#fff;font-weight:700;font-size:11.5px;display:flex;align-items:center;justify-content:center;flex:none}.year-summary-title{font-size:13px;font-weight:700;color:var(--ink)}.year-summary-sub{margin:1px 0 0;font-size:11px;color:var(--text-quiet)}.year-summary-figs{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.year-summary-figs>div{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.year-fig-label{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-quiet);font-weight:700}.year-fig-fx{font-size:10.5px;color:var(--text-quiet);font-weight:500}.year-summary-figs .mono{font-size:12.5px;font-weight:600;color:var(--ink)}.year-chevron{font-size:16px;color:var(--text-quiet);transition:transform .18s;transform:rotate(90deg);flex:none}.year-chevron.open{transform:rotate(-90deg)}.year-body{padding:18px}@media (max-width: 640px){.year-summary{position:relative;padding-right:36px}.year-summary-figs{width:100%;justify-content:space-between;gap:8px}.year-summary-figs>div{align-items:flex-start}.year-chevron{position:absolute;top:16px;right:14px}}.app-footer{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--text-quiet)}.app-footer-brand{display:flex;align-items:center;gap:8px}.app-footer-brand strong{color:var(--text-secondary);font-weight:700}.app-footer-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;text-align:center}@media (min-width: 640px){.app-footer{flex-direction:row}.app-footer-meta{justify-content:flex-end}}.hist-row-clickable{cursor:pointer;border-radius:12px}.hist-row-clickable:hover,.hist-row-clickable:hover .hist-cell-month{background:var(--field-bg)}.hist-grid{font-size:13.5px}.hist-grid-scroll{max-height:456px;overflow-y:auto;overflow-x:auto}.hist-row{display:grid;grid-template-columns:minmax(110px,1.2fr) minmax(128px,1fr) minmax(128px,1fr) minmax(128px,1fr) minmax(68px,auto);column-gap:12px;min-width:660px;align-items:center}.hist-cell{padding:11px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.hist-amt-wrap{display:inline-flex;flex-direction:column;align-items:flex-end;gap:2px}.hist-amt-fx{font-size:11px;color:var(--text-quiet);font-weight:500}.hist-cell:first-child,.hist-cell-month{text-align:left;font-weight:500;position:sticky;left:0;z-index:2;background:var(--surface)}.hist-row.hist-head{background:transparent}.hist-row.hist-head .hist-cell{font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--text-quiet);font-weight:600;padding-bottom:10px;padding-top:0}.hist-cell.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.hist-cell.sortable:hover{color:var(--ink)}.sort-arrow{font-size:9px;margin-left:2px}.sort-arrow.idle{opacity:.35}.sort-arrow.active{opacity:1;color:var(--ink)}.hist-grid-scroll>.hist-row:not(.hist-head){border-top:1px solid var(--line)}.savings-pos{color:var(--income);font-weight:600}.savings-neg{color:var(--expense);font-weight:600}.hist-empty{font-size:13px;color:var(--muted);padding:8px 0}.hist-cell-actions{display:flex;align-items:center;justify-content:center;gap:6px;overflow:visible;text-overflow:clip}.hist-months-count{font-size:11px;color:var(--text-quiet);font-weight:500}.hist-row.hist-foot{font-weight:650;border-top:1.5px solid rgba(0,0,0,.12);padding:2px 0;position:sticky;bottom:0;background:var(--surface)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--canvas)}.auth-wrap .auth-card{width:100%;max-width:360px;background:var(--surface);border-radius:var(--r-card);padding:28px;box-shadow:var(--shadow-card)}.auth-title{font-size:19px;font-weight:600;letter-spacing:-.02em;margin:0 0 4px}.auth-sub{font-size:13px;color:var(--muted);margin:0 0 20px;line-height:1.5}.auth-card form{display:flex;flex-direction:column;gap:16px}.auth-card label{display:flex;flex-direction:column;gap:7px;font-size:10.5px;color:var(--muted);letter-spacing:.11em;text-transform:uppercase;font-weight:600}.auth-card input{border:1px solid var(--line-strong);background:var(--field-bg);border-radius:var(--r-field);padding:12px 14px;font-size:14px;color:var(--ink);outline:none;width:100%;min-width:0;transition:border-color .15s,background .15s}.auth-card input:focus{border-color:var(--brand);background:var(--surface)}.auth-error{font-size:12.5px;color:var(--expense-chip-text);background:var(--expense-dim);padding:9px 12px;border-radius:12px}.auth-notice{font-size:13px;color:var(--income-chip-text);background:var(--income-dim);padding:11px 13px;border-radius:12px}.auth-notice.small{font-size:11.5px;margin-top:6px;padding:7px 11px}.auth-switch{margin-top:18px;font-size:12.5px;color:var(--muted);text-align:center}.auth-switch button{background:none;border:none;color:var(--ink);font-weight:600;cursor:pointer;text-decoration:none;padding:0}.auth-switch button:hover{color:var(--brand)}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr;font-family:inherit;background:var(--canvas)}.auth-side{display:none;background:var(--dark);color:#fff;padding:44px 46px;flex-direction:column;justify-content:space-between}.auth-brand{display:flex;align-items:center;gap:10px;font-size:14.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.auth-brand-mark{flex:0 0 auto}.auth-brand-light{font-weight:400;color:#ffffff8c}.auth-pitch{display:flex;flex-direction:column;gap:26px;max-width:420px}.auth-pitch h2{margin:0;font-size:clamp(26px,3vw + 18px,34px);line-height:1.14;font-weight:600;letter-spacing:-.028em}.auth-pitch p{margin:0;font-size:14.5px;line-height:1.55;color:#ffffff8c}.auth-preview-card{background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:20px 22px;display:flex;flex-direction:column;gap:14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.auth-preview-row{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#ffffff73;font-weight:600}.auth-preview-amount{font-size:29px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.auth-preview-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;gap:2px;background:#ffffff1a}.auth-preview-bar-income{background:var(--income-on-dark);border-radius:3px}.auth-preview-bar-expense{background:var(--expense-on-dark);border-radius:3px}.auth-preview-legend{display:flex;gap:16px;font-size:11px;color:#ffffff80}.auth-preview-legend span{display:flex;align-items:center;gap:6px}.auth-footer{font-size:11.5px;color:#ffffff52}.auth-main{padding:36px 20px 60px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.auth-lang-wrap{position:absolute;top:32px;right:24px}.auth-main .auth-card{width:100%;max-width:376px;display:flex;flex-direction:column;gap:22px;background:transparent;padding:0;box-shadow:none}.auth-tabs{display:flex;padding:3px;background:var(--pill-bg);border-radius:13px;gap:2px}.auth-tabs button{flex:1;border:none;border-radius:11px;padding:10px 12px;font-size:13.5px;font-weight:600;cursor:pointer;background:transparent;color:var(--muted);transition:all .18s}.auth-tabs button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #0000001a}.auth-row-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.auth-phone-row{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px}.auth-phone-row select{border:1px solid var(--line-strong);background:var(--field-bg);border-radius:var(--r-field);padding:12px 10px;font-size:13px;color:var(--ink);outline:none;cursor:pointer;transition:border-color .15s,background .15s}.auth-phone-row select:focus{border-color:var(--brand);background:var(--surface)}.auth-pw-label-row{display:flex;align-items:center;justify-content:space-between}.auth-reveal-btn{border:none;background:none;color:var(--muted);font-size:11.5px;font-weight:500;cursor:pointer;padding:0;text-transform:none;letter-spacing:0;transition:color .15s}.auth-reveal-btn:hover{color:var(--ink)}.auth-strength{display:flex;align-items:center;gap:10px;padding-top:6px}.auth-strength-bars{flex:1;display:flex;gap:4px}.auth-strength-bars span{flex:1;height:4px;border-radius:2px;background:#00000014;transition:background .25s}.auth-strength-bars span.on.s1{background:var(--expense)}.auth-strength-bars span.on.s2{background:var(--gold)}.auth-strength-bars span.on.s3{background:var(--income)}.auth-strength-label{font-size:11px;font-weight:600;min-width:44px;text-align:right;text-transform:none;letter-spacing:0}.auth-strength-label.s1{color:var(--expense)}.auth-strength-label.s2{color:var(--gold)}.auth-strength-label.s3{color:var(--income)}.auth-extras-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:-4px}.auth-remember{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);cursor:pointer;text-transform:none;letter-spacing:0;flex-direction:row!important;font-weight:400}.auth-remember input{width:14px;height:14px;margin:0;accent-color:var(--brand)}.auth-link-btn{border:none;background:none;color:var(--muted);font-size:13px;cursor:pointer;padding:0}.auth-link-btn:hover{color:var(--ink)}.auth-divider{display:flex;align-items:center;gap:12px;color:var(--text-disabled);font-size:11.5px}.auth-divider span{flex:1;height:1px;background:var(--line)}.google-btn-wrap{display:flex;justify-content:center;min-height:44px}.ghost-outline{background:var(--surface);color:var(--ink);border:1px solid rgba(0,0,0,.1);box-shadow:none}.ghost-outline:hover{border-color:#00000038;transform:translateY(-1px);box-shadow:none}@media (min-width: 860px){.auth-shell{grid-template-columns:1.02fr 1fr}.auth-side{display:flex}}@media (min-width: 720px){.wrap{max-width:760px}}@media (min-width: 860px){.summary-grid{flex-direction:row}.summary-grid>.hero-card{flex:1.3}.summary-grid>.stat-card{flex:1}}@media (min-width: 1080px){.wrap{max-width:1080px;padding-left:24px;padding-right:24px}header{margin-bottom:24px}#budgets{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch}}@media (min-width: 1440px){.wrap{max-width:1680px;padding-left:40px;padding-right:40px}.summary-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}#budgets{grid-template-columns:1fr 1fr 1fr}}@media (max-width: 380px){.wrap{padding-left:12px;padding-right:12px}.header-controls{gap:8px}}@media (max-width: 720px){.title-row{flex-direction:column;align-items:flex-start;gap:14px}.header-controls{width:100%}.header-controls .avatar-menu-wrap{margin-left:auto}}
