@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";.toast-host[data-v-0a92946e]{position:fixed;right:var(--space-5);bottom:var(--space-5);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast[data-v-0a92946e]{pointer-events:auto;display:flex;align-items:center;gap:var(--space-3);min-width:260px;max-width:380px;padding:10px 10px 10px 12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--text-sm);color:var(--color-text-strong)}.toast-icon[data-v-0a92946e]{width:22px;height:22px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;flex-shrink:0}.toast-icon svg[data-v-0a92946e]{width:13px;height:13px}.toast--success .toast-icon[data-v-0a92946e]{background:var(--color-success-soft);color:var(--color-success)}.toast--error .toast-icon[data-v-0a92946e]{background:var(--color-danger-soft);color:var(--color-danger)}.toast--info .toast-icon[data-v-0a92946e]{background:var(--color-info-soft);color:var(--color-info)}.toast-msg[data-v-0a92946e]{flex:1;line-height:1.4}.toast-close[data-v-0a92946e]{width:24px;height:24px;border:none;background:transparent;color:var(--color-text-subtle);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center}.toast-close[data-v-0a92946e]:hover{background:var(--color-surface-muted);color:var(--color-text-strong)}.toast-close svg[data-v-0a92946e]{width:14px;height:14px}.toast-enter-active[data-v-0a92946e],.toast-leave-active[data-v-0a92946e]{transition:opacity .18s ease,transform .18s ease}.toast-enter-from[data-v-0a92946e],.toast-leave-to[data-v-0a92946e]{opacity:0;transform:translateY(8px)}@media (max-width: 640px){.toast-host[data-v-0a92946e]{left:var(--space-4);right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}.toast[data-v-0a92946e]{max-width:none}}:root{--brand-50: #ecfdf5;--brand-100: #d1fae5;--brand-200: #b8ebd3;--brand-500: #0a7a5b;--brand-600: #075e46;--brand-700: #054a37;--color-primary: var(--brand-600);--color-primary-hover: var(--brand-700);--color-primary-rgb: 7, 94, 70;--color-on-primary: #ffffff;--color-primary-text: var(--brand-600);--color-primary-soft: #f1f3f5;--color-primary-soft-border: #e2e5e9;--color-selected: #eff1f4;--color-selected-text: var(--color-text-strong);--color-bg: #ffffff;--color-surface: #ffffff;--color-surface-2: #f5f6f8;--color-surface-muted: #f1f5f9;--color-surface-hover: #f7f8fa;--color-surface-raised: #ffffff;--color-border: #e8eaed;--color-border-subtle: #f0f1f3;--color-border-strong: #d1d5db;--color-text-strong: #0f172a;--color-text: #1e293b;--color-text-secondary: #475569;--color-text-muted: #64748b;--color-text-subtle: #94a3b8;--color-success: #15803d;--color-success-soft: #eaf4ee;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-soft: #fef2f2;--color-danger-border: #fecaca;--color-warning: #d97706;--color-warning-soft: #fffbeb;--color-warning-border: #fde68a;--color-info: #2563eb;--color-info-soft: #eff6ff;--color-income: #15803d;--color-expense: #dc2626;--color-transfer: #2563eb;--font-sans: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--text-3xl: 2.25rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--tracking-tight: -.02em;--tracking-caps: .06em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 999px;--shadow-xs: none;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 3px rgba(15, 23, 42, .04);--shadow-md: 0 4px 12px -2px rgba(15, 23, 42, .08), 0 2px 4px -2px rgba(15, 23, 42, .04);--shadow-lg: 0 16px 40px -12px rgba(15, 23, 42, .18), 0 4px 12px -4px rgba(15, 23, 42, .06);--page-max: 1200px;--page-max-narrow: 760px;--control-h: 36px;--control-h-sm: 30px;--z-header: 100;--z-drawer: 120;--z-modal: 1100;--z-popover: 1200;--z-menu: 3000;--z-toast: 5000;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1);--focus-ring: 0 0 0 3px rgba(var(--color-primary-rgb), .18);--color-bg-card: var(--color-surface);--color-card-bg: var(--color-surface);--color-bg-muted: var(--color-surface-muted);--color-bg-input: var(--color-surface);--text-secondary: var(--color-text-secondary);--color-header-bg: var(--color-surface);--color-header-border: var(--color-border);--color-logo: var(--color-text-strong);--color-link: var(--color-text-muted);--color-link-hover: var(--color-primary-text);--color-input-bg: var(--color-surface);--color-input-border: var(--color-border-strong);--color-btn-secondary-bg: var(--color-surface);--color-btn-secondary-border: var(--color-border);--color-btn-secondary-hover: var(--color-surface-muted);--color-table-header-bg: var(--color-surface-2);--color-table-row-hover: var(--color-surface-hover);--color-empty-state: var(--color-text-muted);--color-error: var(--color-danger);--color-type-income-bg: var(--color-success-soft);--color-type-income-text: #15803d;--color-type-expense-bg: var(--color-danger-soft);--color-type-expense-text: #b91c1c;--color-modal-overlay: rgba(15, 23, 42, .45);--app-radius-sm: var(--radius-sm);--app-radius-md: var(--radius-md);--app-radius-lg: var(--radius-lg);--app-shadow-card: var(--shadow-sm);--app-shadow-card-hover: var(--shadow-md);--app-shadow-dropdown: var(--shadow-lg);--app-shadow-sm: var(--shadow-xs);--app-brand-tab: var(--color-primary-text);--app-brand-tab-hover: var(--color-primary-hover);--app-content-max: var(--page-max);--color-sidebar-bg: var(--color-surface);--color-sidebar-text: var(--color-text-secondary);--color-sidebar-border: var(--color-border);--color-sidebar-hover: var(--color-surface-muted);--color-sidebar-active: var(--color-selected);--color-sidebar-edge-shadow: none;--color-top-header-shadow: none;--color-top-header-focus-ring: rgba(var(--color-primary-rgb), .18);--scrollbar-thumb: #cbd5e1;--scrollbar-track: transparent}html.dark{--color-primary: #15803d;--color-primary-hover: #166534;--color-primary-rgb: 74, 222, 128;--color-on-primary: #ffffff;--color-primary-text: #4ade80;--color-primary-soft: #222222;--color-primary-soft-border: #333333;--color-selected: #262626;--color-selected-text: var(--color-text-strong);--color-bg: #0a0a0a;--color-surface: #161616;--color-surface-2: #1b1b1b;--color-surface-muted: #222222;--color-surface-hover: #1f1f1f;--color-surface-raised: #2c2c2c;--color-border: #2a2a2a;--color-border-subtle: #222222;--color-border-strong: #3a3a3a;--color-text-strong: #fafafa;--color-text: #ededed;--color-text-secondary: #c4c4c4;--color-text-muted: #a3a3a3;--color-text-subtle: #737373;--color-success: #4ade80;--color-success-soft: rgba(74, 222, 128, .1);--color-danger: #f87171;--color-danger-hover: #fca5a5;--color-danger-soft: rgba(248, 113, 113, .12);--color-danger-border: rgba(248, 113, 113, .3);--color-warning: #fbbf24;--color-warning-soft: rgba(251, 191, 36, .12);--color-warning-border: rgba(251, 191, 36, .3);--color-info: #60a5fa;--color-info-soft: rgba(96, 165, 250, .12);--color-income: #4ade80;--color-expense: #f87171;--color-transfer: #60a5fa;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3), 0 1px 3px rgba(0, 0, 0, .2);--shadow-md: 0 6px 16px -4px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 48px -8px rgba(0, 0, 0, .6), 0 4px 16px rgba(0, 0, 0, .35);--focus-ring: 0 0 0 3px rgba(74, 222, 128, .22);--color-type-income-text: #86efac;--color-type-expense-text: #fca5a5;--color-modal-overlay: rgba(0, 0, 0, .7);--color-sidebar-bg: #121212;--color-sidebar-text: #c4c4c4;--color-sidebar-border: #222222;--color-sidebar-hover: #1f1f1f;--color-sidebar-active: var(--color-selected);--color-header-bg: #121212;--color-header-border: #222222;--scrollbar-thumb: #3a3a3a}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased}#app{min-height:100vh}table,[class*=amount],[class*=value],[class*=balance],[class*=total],[class*=-pct],[class*=kpi]{font-variant-numeric:tabular-nums}html{scroll-behavior:smooth}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::selection{background:#0f172a1f;color:inherit}html.dark ::selection{background:#ffffff2e}:focus-visible{outline:none;box-shadow:var(--focus-ring)}input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:none;outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #075e461f}html.dark input:focus-visible,html.dark select:focus-visible,html.dark textarea:focus-visible{border-color:var(--color-primary-text);box-shadow:0 0 0 3px #4ade8026}body,.sidebar,.top-header,.main-content{transition:background var(--transition-slow),color var(--transition-slow),border-color var(--transition-slow)}input,select,textarea{font-family:inherit;color:var(--color-text)}input::placeholder,textarea::placeholder{color:var(--color-text-subtle)}html.dark input,html.dark select,html.dark textarea{color-scheme:dark}html.dark input:-webkit-autofill,html.dark input:-webkit-autofill:hover,html.dark input:-webkit-autofill:focus,html.dark input:-webkit-autofill:active,html.dark textarea:-webkit-autofill,html.dark select:-webkit-autofill{-webkit-text-fill-color:var(--color-text)!important;-webkit-box-shadow:0 0 0 1000px var(--color-input-bg) inset!important;box-shadow:0 0 0 1000px var(--color-input-bg) inset!important;caret-color:var(--color-text);transition:background-color 9999s ease-out 0s}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shell-icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--control-h);height:var(--control-h);padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:pointer;flex-shrink:0;transition:background var(--transition-fast),color var(--transition-fast)}.shell-icon-btn:hover,.shell-icon-btn.is-open{background:var(--color-surface-muted);color:var(--color-text-strong)}.shell-icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.shell-icon-btn svg{width:18px;height:18px}.shell-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:200;padding:4px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text)}.shell-menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:34px;padding:0 10px;border:none;border-radius:6px;background:transparent;color:var(--color-text);font-family:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);text-align:left;text-decoration:none;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.shell-menu-item>svg{width:16px;height:16px;flex-shrink:0;color:var(--color-text-muted);transition:color var(--transition-fast)}.shell-menu-item:hover,.shell-menu-item.is-highlighted{background:var(--color-surface-muted)}.shell-menu-item:hover>svg,.shell-menu-item.is-highlighted>svg{color:var(--color-text-strong)}.shell-menu-item:focus-visible{outline:none;background:var(--color-surface-muted)}.shell-menu-item.active,.shell-menu-item.active>svg{color:var(--color-primary-text);font-weight:var(--weight-semibold)}.shell-menu-item--danger:hover{background:var(--color-danger-soft);color:var(--color-danger)}.shell-menu-item--danger:hover>svg{color:var(--color-danger)}.shell-menu-label{display:block;padding:var(--space-2) 10px var(--space-1);font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-text-muted);-webkit-user-select:none;user-select:none}.shell-menu-divider{height:1px;margin:4px 6px;background:var(--color-border-subtle)}.dropdown-enter-active,.dropdown-leave-active{transition:opacity .12s ease,transform .12s ease}.dropdown-enter-from,.dropdown-leave-to{opacity:0;transform:translateY(-4px)}.app-layout main.main-content .spinner{border-color:var(--color-border);border-top-color:var(--color-primary-text)}.app-layout main.main-content .link{color:var(--color-primary-text);text-decoration:none;font-weight:var(--weight-medium);transition:opacity var(--transition-fast)}.app-layout main.main-content .link:hover{opacity:.85;text-decoration:underline}html:not(.dark) .sidebar{background:linear-gradient(180deg,#dcebe3,#eef5f1 160px,#fff 420px)}html:not(.dark) .sidebar-link.active .sidebar-icon{color:inherit}html:not(.dark) .sidebar-plan-badge{border-color:var(--brand-600);background:transparent;color:var(--brand-600)}.ui-label{font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-text-muted)}.ui-amount{font-variant-numeric:tabular-nums;font-weight:var(--weight-semibold);color:var(--color-text-strong);white-space:nowrap}.ui-amount--pos{color:var(--color-income)}.ui-amount--neg{color:var(--color-expense)}.ui-badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:var(--radius-full);font-size:var(--text-2xs);font-weight:var(--weight-semibold);white-space:nowrap;background:var(--color-surface-muted);color:var(--color-text-secondary)}.ui-badge--success{background:var(--color-success-soft);color:var(--color-success)}.ui-badge--danger{background:var(--color-danger-soft);color:var(--color-danger)}.ui-badge--warning{background:var(--color-warning-soft);color:var(--color-warning)}.ui-badge--info{background:var(--color-info-soft);color:var(--color-info)}.ui-badge--brand{background:var(--color-primary-soft);color:var(--color-primary-text)}.ui-table-wrap{overflow-x:auto}.ui-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.ui-table th{text-align:left;padding:10px var(--space-4);font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-text-muted);background:transparent;border-bottom:1px solid var(--color-border);white-space:nowrap}.ui-table td{padding:12px var(--space-4);color:var(--color-text);border-bottom:1px solid var(--color-border-subtle);vertical-align:middle}.ui-table tbody tr:last-child td{border-bottom:none}.ui-table tbody tr{transition:background var(--transition-fast)}.ui-table tbody tr:hover{background:var(--color-surface-hover)}.ui-table .num{text-align:right}.ui-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.ui-toolbar-group{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.ui-stack{display:flex;flex-direction:column;gap:var(--space-6)}.ui-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}.ui-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}@media (max-width: 1024px){.ui-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.ui-grid-2,.ui-grid-3{grid-template-columns:minmax(0,1fr)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.auth-page{min-height:100vh;display:flex;align-items:stretch;background:var(--color-surface)}.auth-left{flex:1 1 50%;display:flex;flex-direction:column;align-items:center;padding:var(--space-4) var(--space-6) var(--space-10);background:var(--color-surface);overflow-y:auto}.auth-left-inner{width:100%;max-width:380px;margin:clamp(4rem,18vh,11rem) 0 auto;animation:auth-fade-up .4s cubic-bezier(.4,0,.2,1)}.auth-intro{text-align:left;margin-bottom:0}.auth-intro-title{margin:0 0 var(--space-2);font-size:1.625rem;font-weight:800;color:var(--color-text-strong);letter-spacing:-.04em;line-height:1.15}.auth-intro-welcome{margin:0 0 var(--space-10);font-size:.9375rem;font-weight:var(--weight-regular);color:var(--color-text-muted);line-height:1.4}.auth-brand{flex-shrink:0;text-align:center;margin-top:3.25rem}.auth-brand-img{display:inline-flex;margin:0 auto}@keyframes auth-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.auth-field{margin-bottom:var(--space-5)}.auth-field label{display:block;margin-bottom:6px;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-strong)}.auth-field input,.auth-field select{width:100%;height:44px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:.9375rem;background:var(--color-surface);color:var(--color-text-strong);font-family:inherit;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.auth-field input::placeholder{color:var(--color-text-subtle)}.auth-field input:hover,.auth-field select:hover{border-color:var(--color-text-subtle)}.auth-field input:focus,.auth-field select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.auth-error{margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-danger-soft);color:var(--color-danger);border:1px solid var(--color-danger-border);font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1.45}.auth-error a{color:inherit;font-weight:var(--weight-semibold)}.auth-notice{font-size:var(--text-sm);color:var(--color-primary-text)}.auth-link-btn{background:none;border:none;padding:0;font-family:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary-text);cursor:pointer;border-radius:4px;transition:color var(--transition-fast)}.auth-link-btn:hover:not(:disabled){text-decoration:underline;text-underline-offset:2px}.auth-link-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.auth-link-btn:disabled{opacity:.6;cursor:not-allowed}.pw-rules{list-style:none;padding:0;margin:var(--space-2) 0 0;display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted)}.pw-rules li{display:inline-flex;align-items:center;gap:6px;transition:color var(--transition-fast)}.pw-rules li:before{content:"";flex-shrink:0;width:14px;height:14px;box-sizing:border-box;border-radius:50%;border:1.5px solid var(--color-border-strong);background:transparent center / 10px 10px no-repeat;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.pw-rules li.ok{color:var(--color-success)}.pw-rules li.ok:before{border-color:var(--color-primary);background-color:var(--color-primary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")}.pw-mismatch{margin:6px 0 0;font-size:var(--text-xs);color:var(--color-danger)}.auth-state{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:var(--space-5)}.auth-state-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:var(--space-4);border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary-text)}.auth-state-icon--err{background:var(--color-danger-soft);color:var(--color-danger)}.auth-state-title{margin:0 0 6px;font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-text-strong)}.auth-state-text{margin:0;font-size:var(--text-base);line-height:1.5;color:var(--color-text-muted)}.auth-state-text strong{color:var(--color-text-strong)}.auth-btn{width:100%;height:44px;margin-top:var(--space-3);padding:0 var(--space-4);background:var(--color-primary);color:var(--color-on-primary);border:none;border-radius:var(--radius-sm);font-size:.9375rem;font-weight:var(--weight-semibold);font-family:inherit;cursor:pointer;box-shadow:var(--shadow-xs);transition:background var(--transition-fast),box-shadow var(--transition-fast)}.auth-btn:hover:not(:disabled){background:var(--color-primary-hover)}.auth-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.auth-btn:disabled{opacity:.55;cursor:not-allowed}.auth-footer{margin-top:var(--space-8);text-align:center;font-size:var(--text-sm);color:var(--color-text-secondary)}.auth-footer a{color:var(--color-primary-text);font-weight:var(--weight-semibold);text-decoration:none}.auth-footer a:hover{text-decoration:underline;text-underline-offset:2px}
