:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6fb;--panel:#fff;--text:#1a2233;--text-muted:#667085;--border:#e4e8f0;--grid:#edf0f6;--hover:#f0f3fa;--series-blue:#3e7fdb;--series-coral:#d9694f;--series-teal:#1a9c7a;--series-violet:#8577d6;--series-amber:#c2820e;--series-magenta:#c9679a;--status-good:var(--series-teal);--status-bad:var(--series-coral);--accent:var(--series-blue);--accent-hover:#1c5cab;--accent-ink:#fff;--accent-shadow:#3e7fdb26;--chart-primary:var(--series-blue);--login-glow:#eef2ff;--shadow:0 1px 2px #1018280a, 0 1px 3px #1018280f;--radius:14px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0d0d;--panel:#1a1a19;--text:#fff;--text-muted:#c3c2b7;--border:#ffffff1f;--grid:#2c2c2a;--hover:#242422;--accent:#a3e635;--accent-hover:#b8f04a;--accent-ink:#0d0d0d;--accent-shadow:#a3e6352e;--login-glow:#a3e6351a;--shadow:0 1px 2px #0006, 0 6px 20px #00000073}.print-mode,.print-mode *{transition:none!important}:root.print-mode{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-print-color-adjust:exact;print-color-adjust:exact;--bg:#fff;--panel:#fff;--text:#1a2233;--text-muted:#52525b;--border:#d8dce5;--grid:#e4e8f0;--hover:transparent;--shadow:none;--accent:var(--series-blue);--accent-ink:#fff}@media print{:root[data-theme=dark]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--panel:#fff;--text:#1a2233;--text-muted:#52525b;--border:#d8dce5;--grid:#e4e8f0;--hover:transparent;--shadow:none;--accent:var(--series-blue);--accent-ink:#fff}}.print-mode .no-export,.print-mode .period-presets,.print-mode .theme-toggle,.print-mode .refresh-btn,.print-mode .icon-btn,.print-mode .period-range select{display:none!important}.print-mode .print-only-value{display:block!important}.print-mode .dashboard{max-width:720px;padding:0}.print-mode .panel,.print-mode .kpi-card,.print-mode .period-filter{box-shadow:none;border:1px solid var(--border);break-inside:avoid;page-break-inside:avoid}.print-mode .panel-row{grid-template-columns:1fr}.print-mode .table-scroll{overflow-x:visible}.print-mode .data-table{white-space:normal;font-size:10.5px}.print-mode .data-table th,.print-mode .data-table td{padding:5px 6px}.print-mode .report-panel{break-inside:auto;page-break-inside:auto}.print-mode .report-panel .panel-caption{display:none}.print-mode .breakdown-table{font-size:11px}.print-mode .breakdown-table tr{break-inside:avoid;page-break-inside:avoid}.print-mode .bt-row td,.print-mode .bt-section-total td,.print-mode .bt-balance-row td,.print-mode .bt-section-header td{padding:5px 8px}.print-mode .kpi-card{padding:12px 14px 8px}.print-mode .kpi-value{font-size:20px}@page{margin:12mm}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Segoe UI,Inter,system-ui,-apple-system,sans-serif;transition:background-color .25s,color .25s}.panel,.kpi-card,.period-filter,.login-card,.refresh-btn,.period-presets button,.period-range select{transition:background-color .25s,border-color .25s,color .25s,box-shadow .25s}.login-screen{background:radial-gradient(circle at 20% 20%, var(--login-glow), var(--bg) 60%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative}.login-theme-toggle{position:absolute;top:20px;right:20px}.login-card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);text-align:center;width:100%;max-width:360px;padding:40px 32px}.login-card.shake{animation:.4s shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}.login-logo{justify-content:center;align-items:center;gap:10px;margin:0 auto 20px;display:flex}.login-logo-badge{background:var(--accent);width:40px;height:40px;color:var(--accent-ink);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.login-logo-badge svg{width:22px;height:22px}.login-logo-text{letter-spacing:-.02em;color:var(--text);font-size:22px;font-weight:800}.login-card h1{margin:0 0 6px;font-size:20px}.login-sub{color:var(--text-muted);margin:0 0 24px;font-size:14px}.password-field{position:relative}.login-card input{border:1px solid var(--border);background:var(--panel);width:100%;color:var(--text);border-radius:10px;outline:none;margin-bottom:8px;padding:12px 44px 12px 14px;font-size:15px}.password-field .password-toggle{width:36px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:0;display:flex;position:absolute;inset:0 4px 8px auto}.password-field .password-toggle svg{flex-shrink:0;width:19px;height:19px}.password-field .password-toggle:hover{color:var(--accent);background:0 0}.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-shadow)}.login-card input.input-error{border-color:var(--status-bad)}.login-error{color:var(--status-bad);text-align:left;margin-bottom:12px;font-size:13px}.login-card button{background:var(--accent);width:100%;color:var(--accent-ink);cursor:pointer;border:none;border-radius:10px;margin-top:8px;padding:12px;font-size:15px;font-weight:600;transition:background-color .2s}.login-card button:hover{background:var(--accent-hover)}.dashboard{max-width:1180px;margin:0 auto;padding:24px 20px 60px}.dashboard-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.dashboard-header h1{margin:0;font-size:24px}.dashboard-title-row{align-items:center;gap:10px;margin:0 0 4px;display:flex}.dashboard-title-row h1{min-width:0}.dashboard-logo-badge{background:var(--accent);width:32px;height:32px;color:var(--accent-ink);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.dashboard-logo-badge svg{width:18px;height:18px}.data-status{color:var(--text-muted);font-size:13px}.report-subtitle{color:var(--text-muted);margin:0 0 6px;font-size:13px}.status-loading{color:var(--accent)}.status-error{color:var(--status-bad)}.dashboard-header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.icon-btn{border:1px solid var(--border);background:var(--panel);width:40px;height:40px;color:var(--text-muted);cursor:pointer;box-shadow:var(--shadow);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .2s,border-color .2s;display:flex}.icon-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.icon-btn:disabled{opacity:.6;cursor:default}.icon-btn svg{width:18px;height:18px}.refresh-btn{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;box-shadow:var(--shadow);white-space:nowrap;border-radius:10px;padding:10px 18px;font-size:14px;font-weight:600}.refresh-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.refresh-btn:disabled{opacity:.6;cursor:default}.empty-state{color:var(--text-muted);text-align:center;padding:32px;font-size:14px}.period-filter{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px;padding:14px 18px;display:flex}.period-presets{flex-wrap:wrap;gap:8px;display:flex}.period-presets button{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:8px;padding:7px 12px;font-size:13px}.period-presets button:hover{border-color:var(--accent);color:var(--accent)}.period-range{gap:14px;display:flex}.period-range label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.period-range select{border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:8px;min-width:150px;padding:7px 8px;font-size:13px}.print-only-value{color:var(--text);padding:7px 0;font-size:13px;font-weight:600;display:none}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:20px;display:grid}.kpi-card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);border-top:3px solid var(--chart-primary);flex-direction:column;padding:18px 20px 12px;display:flex}.kpi-card.accent-blue{border-top-color:var(--chart-primary)}.kpi-card.accent-good{border-top-color:var(--status-good)}.kpi-card.accent-bad{border-top-color:var(--status-bad)}.kpi-card.accent-teal{border-top-color:var(--series-teal)}.kpi-card.accent-coral{border-top-color:var(--series-coral)}.kpi-card.accent-violet{border-top-color:var(--series-violet)}.kpi-card.accent-amber{border-top-color:var(--series-amber)}.kpi-title{color:var(--text-muted);margin-bottom:8px;font-size:13px}.kpi-note{opacity:.85;margin-top:2px;font-size:11.5px;display:block}@media (width>=700px){.kpi-title{min-height:34px}}.kpi-value{letter-spacing:-.02em;cursor:default;font-size:24px;font-weight:700}.kpi-delta{align-items:baseline;gap:5px;margin-top:6px;font-size:13px;font-weight:600;display:flex}.kpi-delta-good{color:var(--status-good)}.kpi-delta-bad{color:var(--status-bad)}.kpi-delta-flat{color:var(--text-muted)}.kpi-delta-arrow{font-size:10px}.kpi-delta-hint,.kpi-delta-na{color:var(--text-muted);font-size:12px;font-weight:400}.sparkline{margin-top:8px;margin-left:-4px;margin-right:-4px}.sparkline-empty{height:40px}.panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:20px;padding:20px}.panel h2{margin:0 0 14px;font-size:16px}.panel-caption{color:var(--text-muted);margin:-8px 0 14px;font-size:13px}.panel-row{grid-template-columns:1.3fr 1fr;gap:20px;display:grid}@media (width<=760px){.panel-row{grid-template-columns:1fr}}.panel-row .panel{margin-bottom:0}.chart-tooltip{color:#fff;box-shadow:var(--shadow);background:#1a2233;border-radius:8px;max-width:240px;padding:10px 12px;font-size:12px}.chart-tooltip-title{margin-bottom:4px;font-weight:700}.chart-tooltip-row{align-items:center;gap:6px;display:flex}.chart-tooltip .dot{border-radius:50%;width:8px;height:8px;display:inline-block}.donut-wrap{flex-direction:column;align-items:center;display:flex}.donut-chart-area{width:100%;position:relative}.donut-center{text-align:center;pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.donut-total{font-size:20px;font-weight:700}.donut-total-label{color:var(--text-muted);font-size:12px}.donut-legend{width:100%;margin:12px 0 0;padding:0;list-style:none}.donut-legend li{border-bottom:1px solid var(--grid);align-items:center;gap:8px;padding:6px 0;font-size:13px;display:flex}.donut-legend .dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.donut-legend .legend-name{color:var(--text);flex:1}.donut-legend .legend-value{white-space:nowrap;font-weight:600}.theme-toggle{cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0;line-height:0}.theme-toggle-track{background:var(--bg);border:1px solid var(--border);border-radius:999px;align-items:center;width:52px;height:28px;transition:background-color .25s,border-color .25s;display:flex;position:relative;box-shadow:inset 0 1px 2px #0000000f}.theme-toggle-icon{justify-content:center;align-items:center;width:14px;height:14px;transition:color .25s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.theme-toggle-icon-sun{color:#d97706;left:7px}.theme-toggle-icon-moon{color:var(--text-muted);right:7px}:root[data-theme=dark] .theme-toggle-icon-sun{color:var(--text-muted)}:root[data-theme=dark] .theme-toggle-icon-moon{color:var(--accent)}.theme-toggle-knob{background:var(--accent);border-radius:50%;width:22px;height:22px;transition:transform .25s cubic-bezier(.4,0,.2,1),background-color .25s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}.theme-toggle[aria-checked=true] .theme-toggle-knob{transform:translate(24px)}.theme-toggle:hover .theme-toggle-track{border-color:var(--accent)}.theme-toggle:focus-visible .theme-toggle-track{outline:2px solid var(--accent);outline-offset:2px}.table-scroll{margin:0 -4px;overflow-x:auto}.data-table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:13px}.data-table th{text-align:center;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);padding:0 12px 10px;font-size:11px;font-weight:600}.data-table td{border-bottom:1px solid var(--grid);text-align:center;cursor:default;padding:10px 12px}.data-table td.num{font-variant-numeric:tabular-nums}.data-table tbody tr:hover{background:var(--hover)}.data-table tbody tr:last-child td{border-bottom:none}.data-table .month-cell{text-align:center;color:var(--series-blue);font-weight:700}.data-table .text-muted{color:var(--text-muted)}.report-nav{gap:8px;margin-bottom:20px;display:flex}.report-nav-tab{background:var(--panel);color:var(--text-muted);border:1px solid var(--border);cursor:pointer;border-radius:10px;padding:9px 16px;font-size:14px;font-weight:600;transition:color .15s,border-color .15s,background .15s}.report-nav-tab:hover{color:var(--text)}.report-nav-tab.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.breakdown-table{border-collapse:collapse;width:100%;font-size:13.5px}.breakdown-table th{text-align:left;letter-spacing:.04em;color:var(--text-muted);text-transform:uppercase;border-bottom:1px solid var(--border);padding:8px 12px;font-size:11px}.breakdown-table th:not(:first-child),.breakdown-table td:not(:first-child){text-align:right}.bt-section-header td{background:var(--hover);color:var(--text);border-left:3px solid var(--accent);padding:9px 12px;font-size:13px;font-weight:700}.bt-row td{border-bottom:1px solid var(--grid);padding:8px 12px}.bt-row td.bt-label{padding-left:calc(14px + var(--bt-depth,0) * 22px)}@media (width<=480px){:root:not(.print-mode) .report-panel{padding:14px 8px}:root:not(.print-mode) .breakdown-table{font-size:12px}:root:not(.print-mode) .breakdown-table th:nth-child(3),:root:not(.print-mode) .breakdown-table td:nth-child(3):not([colspan]){display:none}:root:not(.print-mode) .breakdown-table th,:root:not(.print-mode) .bt-row td,:root:not(.print-mode) .bt-section-total td,:root:not(.print-mode) .bt-balance-row td,:root:not(.print-mode) .bt-section-header td{padding-left:6px;padding-right:6px}:root:not(.print-mode) .bt-row td.bt-label{padding-left:calc(6px + var(--bt-depth,0) * 12px)}:root:not(.print-mode) .bt-arrow{width:10px;margin-right:2px}:root:not(.print-mode) .bt-grand-total td{padding:10px 6px;font-size:13px}}.bt-row.bt-expandable{cursor:pointer}.bt-row.bt-expandable:hover td{background:var(--hover)}.bt-arrow{width:14px;color:var(--text-muted);margin-right:4px;transition:transform .15s;display:inline-block}.bt-arrow.open{transform:rotate(90deg)}.bt-tone-income .bt-label{color:var(--status-good);font-weight:600}.bt-tone-expense .bt-label{color:var(--status-bad);font-weight:600}.bt-leaf td{color:var(--text-muted);font-size:12.5px}.bt-leaf-date{font-variant-numeric:tabular-nums;color:var(--text)}.bt-amount{font-variant-numeric:tabular-nums;white-space:nowrap}.bt-pos{color:var(--status-good)}.bt-neg{color:var(--status-bad)}.bt-count{color:var(--text-muted);white-space:nowrap;font-size:12px}.bt-section-total td{border-bottom:1px solid var(--border);border-top:1px solid var(--border);padding:8px 12px;font-weight:600}.kpi-value.kpi-value-good{color:var(--status-good)}.kpi-value.kpi-value-bad{color:var(--status-bad)}.kpi-sub{color:var(--text-muted);margin-top:6px;font-size:13px}.kpi-avg{color:var(--text-muted);border-top:1px solid var(--border);margin-top:10px;padding-top:10px;font-size:12px}.bt-balance-row td{background:var(--hover);border-bottom:1px solid var(--border);padding:11px 12px;font-weight:700}.bt-grand-total td{border-top:2px solid var(--text);padding:12px;font-size:15px;font-weight:700}@media (width<=480px){.dashboard{padding:16px 12px 40px}.dashboard-header{flex-direction:column;align-items:stretch}.dashboard-header h1{font-size:20px}.dashboard-header-actions{width:100%}.refresh-btn{flex:1}.kpi-grid,.panel-row{grid-template-columns:1fr}.period-filter{flex-direction:column;align-items:stretch}.period-range{flex-direction:column;gap:8px}.period-range select{width:100%}.kpi-value{font-size:21px}.data-table{font-size:12px}.data-table th,.data-table td{padding:8px}}
