:root{color-scheme:light;--bg: #f4f7fb;--bg-elevated: rgba(255, 255, 255, .82);--surface: rgba(255, 255, 255, .94);--surface-strong: #ffffff;--surface-soft: rgba(255, 255, 255, .6);--surface-muted: rgba(255, 255, 255, .42);--surface-chip: rgba(255, 255, 255, .55);--surface-control: rgba(255, 255, 255, .65);--text: #0f172a;--muted: #64748b;--border: rgba(148, 163, 184, .2);--shadow: 0 24px 70px rgba(15, 23, 42, .08);--shadow-soft: 0 16px 35px rgba(15, 23, 42, .07);--accent: #2563eb;--accent-2: #0f766e;--accent-contrast: #ffffff;--accent-hover: #1d4ed8;--button-text: #0f172a;--danger: #dc2626;--danger-soft: rgba(220, 38, 38, .1);--danger-hover: #b91c1c;--panel-gradient: linear-gradient( 135deg, rgba(79, 70, 229, .08), rgba(14, 165, 233, .06) );--page-glow-top: rgba(99, 102, 241, .16);--page-glow-right: rgba(14, 165, 233, .14);--radius-lg: 24px;--radius-md: 18px;--radius-sm: 12px;--container: 1440px;--font: "Manrope", "Segoe UI", sans-serif}.dark{color-scheme:dark;--bg: #07111f;--bg-elevated: rgba(10, 17, 31, .72);--surface: rgba(12, 20, 38, .96);--surface-strong: #0f172a;--surface-soft: rgba(15, 23, 42, .7);--surface-muted: rgba(15, 23, 42, .52);--surface-chip: rgba(15, 23, 42, .6);--surface-control: rgba(15, 23, 42, .8);--text: #e2e8f0;--muted: #94a3b8;--border: rgba(148, 163, 184, .14);--shadow: 0 24px 70px rgba(2, 6, 23, .34);--shadow-soft: 0 16px 35px rgba(2, 6, 23, .28);--accent: #60a5fa;--accent-contrast: #08101f;--accent-hover: #93c5fd;--button-text: #e2e8f0;--danger: #f87171;--danger-soft: rgba(248, 113, 113, .14);--danger-hover: #ef4444;--panel-gradient: linear-gradient( 135deg, rgba(79, 70, 229, .16), rgba(14, 165, 233, .1) );--page-glow-top: rgba(59, 130, 246, .1);--page-glow-right: rgba(16, 185, 129, .08)}*{box-sizing:border-box}html{min-height:100%;background:radial-gradient(circle at top left,var(--page-glow-top),transparent 28%),radial-gradient(circle at top right,var(--page-glow-right),transparent 24%),linear-gradient(180deg,var(--bg),var(--bg))}body{margin:0;min-height:100vh;font-family:var(--font);color:var(--text);background:radial-gradient(circle at 10% 0%,rgba(59,130,246,.12),transparent 18%),radial-gradient(circle at 90% 0%,rgba(16,185,129,.08),transparent 18%),linear-gradient(180deg,var(--bg),var(--bg))}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}#root{min-height:100vh}.app-shell{min-height:100vh;padding:24px;background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 12%),radial-gradient(circle at 20% 0%,var(--page-glow-top),transparent 26%),radial-gradient(circle at 80% 0%,var(--page-glow-right),transparent 26%)}.topbar,.tabs,.content-grid{max-width:var(--container);margin:0 auto}.topbar{position:sticky;top:16px;z-index:30;display:grid;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;align-items:center;gap:16px 22px;padding:18px 22px;border:1px solid var(--border);border-radius:28px;background:var(--bg-elevated);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:var(--shadow)}.brand-block{display:flex;align-items:center;gap:16px;min-width:0}.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;color:#fff;font-size:1.1rem;font-weight:800;background:linear-gradient(135deg,#0f172a,#2563eb);box-shadow:0 16px 30px #2563eb47}.brand-block h1{margin:0;font-size:1.2rem;letter-spacing:-.04em}.brand-block p{margin:4px 0 0;color:var(--muted);font-size:.92rem;max-width:42ch}.toolbar{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:10px}.toolbar>*{flex:0 0 auto}.language-selector{position:relative;display:inline-flex}.language-trigger{min-width:44px;padding:0}.language-flag{font-size:1rem;line-height:1}.language-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:40;display:grid;gap:6px;padding:8px;min-width:56px;border:1px solid var(--border);border-radius:16px;background:var(--surface-strong);box-shadow:var(--shadow)}.language-option{display:grid;place-items:center;width:40px;height:40px;border:1px solid transparent;border-radius:12px;background:transparent;color:var(--text);transition:background .18s ease,transform .18s ease,border-color .18s ease}.language-option:hover{background:var(--surface-soft);transform:translateY(-1px)}.language-option.active{background:var(--surface-muted);border-color:var(--border)}.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}.tabs{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 6px}.tabs-left,.tabs-actions{display:flex;align-items:center;gap:10px;min-width:0}.tabs-left{flex-wrap:wrap}.tabs-actions{flex-wrap:wrap;justify-content:flex-end}.tabs button{display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;background:transparent;color:var(--muted);padding:12px 16px;border-radius:999px;transition:all .2s ease}.tabs button:hover{color:var(--text);background:var(--surface-soft);border-color:var(--border)}.tabs .tab-active{background:var(--surface);border-color:var(--border);color:var(--text);box-shadow:var(--shadow-soft)}.content-grid{position:relative;display:grid;gap:22px;margin-top:22px}.card,.stat-card{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.card{padding:22px}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.stat-card{padding:18px;overflow:hidden;position:relative}.stat-card:after{content:"";position:absolute;inset:auto -20px -20px auto;width:110px;height:110px;border-radius:999px;opacity:.12;background:currentColor;pointer-events:none}.stat-card-title{margin:0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.stat-card-value{margin:12px 0 0;font-size:1.5rem;font-weight:800;letter-spacing:-.05em}.stat-card-hint{margin:6px 0 0;color:var(--muted);font-size:.9rem}.stat-card-emerald{color:#059669}.stat-card-blue{color:#2563eb}.stat-card-amber{color:#d97706}.stat-card-rose{color:#e11d48}.stat-card-slate{color:#334155}.stat-card-indigo{color:#4f46e5}.chart-card,.analysis-panel,.sidebar-card,.group-card,.insight-card{position:relative}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.section-heading h2,.insight-card h2{margin:0;font-size:1.1rem;letter-spacing:-.04em}.section-heading p,.insight-card p,.group-header p{margin:6px 0 0;color:var(--muted);font-size:.92rem}.section-heading.compact{margin-bottom:14px}.section-heading.small-gap{margin-bottom:8px}.month-pill-row,.inline-actions,.sidebar-actions,.split-actions,.empty-actions,.toolbar,.form-grid{display:flex;flex-wrap:wrap;gap:10px}.analysis-panel .form-grid{margin-bottom:10px}.month-pill,.primary-button,.secondary-button,.icon-button,.link-button,.month-pill-row button{border:1px solid var(--border);border-radius:14px;background:var(--surface-soft);color:var(--button-text);transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.month-pill,.secondary-button,.icon-button,.link-button{min-height:44px;padding:10px 14px}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:12px 16px;background:linear-gradient(135deg,var(--accent-hover),var(--accent));color:var(--accent-contrast);border-color:transparent;box-shadow:0 18px 36px #2563eb38}.primary-button:hover,.secondary-button:hover,.icon-button:hover,.link-button:hover,.month-pill:hover{transform:translateY(-1px)}.secondary-button{display:inline-flex;align-items:center;gap:8px;background:var(--surface-muted)}.secondary-button.danger{color:var(--danger);background:var(--danger-soft)}.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:auto;min-width:44px;min-height:42px}.icon-button.tiny{min-width:32px;min-height:32px;padding:0 10px;border-radius:10px}.icon-button.danger{color:var(--danger)}.month-pill.active{background:linear-gradient(135deg,var(--accent-hover),var(--accent));color:var(--accent-contrast);border-color:transparent}.control{display:flex;flex-direction:column;gap:6px}.control-inline{min-width:126px}.control-compact{gap:0}.control-compact select{min-height:44px}.control span{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.control input,.control select,.control textarea,.inline-edit input,.budget-row-actions input{width:100%;border:1px solid var(--border);border-radius:14px;background:var(--surface-control);color:var(--text);padding:12px 14px;outline:none;transition:border .18s ease,box-shadow .18s ease,background .18s ease}.control select,.control input{min-height:44px}.control textarea{resize:vertical;min-height:110px}.control input:focus,.control select:focus,.control textarea:focus,.inline-edit input:focus,.budget-row-actions input:focus{border-color:#2563eb99;box-shadow:0 0 0 4px #2563eb1f;background:var(--surface-strong)}.dark .control input,.dark .control select,.dark .control textarea,.dark .inline-edit input,.dark .budget-row-actions input{background:var(--surface-control)}.dark .control input::placeholder,.dark .control textarea::placeholder,.dark .inline-edit input::placeholder,.dark .budget-row-actions input::placeholder{color:color-mix(in srgb,var(--muted) 80%,transparent)}.year-control select{min-width:132px}.content-grid .toast{display:inline-flex;align-items:center;gap:10px;position:fixed;right:24px;bottom:24px;z-index:60;padding:14px 18px;border-radius:18px;color:#fff;box-shadow:var(--shadow)}.toast.success{background:linear-gradient(135deg,#0f172a,#0f766e)}.toast.error{background:linear-gradient(135deg,#7f1d1d,#dc2626)}.empty-state{max-width:760px;margin:28px auto 0;text-align:center;padding:42px}.empty-badge{width:72px;height:72px;margin:0 auto 18px;border-radius:24px;display:grid;place-items:center;color:#2563eb;background:var(--surface-muted)}.empty-state h2{margin:0;font-size:1.5rem}.empty-state p{margin:12px auto 0;max-width:560px;color:var(--muted)}.empty-actions{justify-content:center;margin-top:24px}.auth-shell{max-width:520px;margin:28px auto 0;display:grid;gap:22px;padding:28px}.auth-hero{display:grid;gap:10px;text-align:center}.auth-hero h2{margin:0;font-size:1.5rem;letter-spacing:-.05em}.auth-hero p{margin:0;color:var(--muted)}.auth-badge{width:64px;height:64px;margin:0 auto;border-radius:20px;display:grid;place-items:center;color:var(--accent);background:var(--surface-muted)}.auth-form{display:grid;gap:16px}.auth-input-wrap{display:flex;align-items:center;gap:10px;padding:0 14px;border:1px solid var(--border);border-radius:14px;background:var(--surface-control)}.auth-input-wrap input{border:0;background:transparent;padding:12px 0;box-shadow:none}.auth-input-wrap:focus-within{border-color:#2563eb99;box-shadow:0 0 0 4px #2563eb1f;background:var(--surface-strong)}.auth-input-wrap svg{color:var(--muted);flex-shrink:0}.auth-error{margin:0;color:var(--danger);font-size:.92rem}.auth-toggle{justify-self:center}.budget-layout,.analysis-two-col{display:grid;gap:22px;grid-template-columns:minmax(0,1.7fr) minmax(320px,.9fr);align-items:start}.analysis-grid{display:grid;gap:22px;align-content:start}.budget-sections,.budget-sidebar{display:grid;gap:18px}.group-card{padding:18px}.group-header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:14px}.group-header h3{margin:0;font-size:1rem}.group-total{padding:8px 12px;border-radius:999px;font-size:.9rem;font-weight:800;background:var(--surface-chip)}.group-items{display:grid;gap:10px}.budget-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,auto);gap:12px;align-items:center}.budget-row-label{min-width:0}.budget-name-button{border:0;background:transparent;padding:0;color:var(--text);text-align:left;font-weight:700;word-break:break-word}.budget-row-actions{display:inline-flex;align-items:center;gap:10px;justify-self:end}.budget-row-actions input{width:170px;text-align:right}.unit{color:var(--muted);font-size:.82rem;font-weight:700}.inline-edit{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px}.empty-line{margin:0;color:var(--muted);font-size:.92rem}.sidebar-card .stack,.modal-content.stack{display:grid;gap:14px}.full-width{width:100%}.privacy-note{display:flex;gap:12px;align-items:flex-start;padding:16px;border-radius:18px;background:var(--surface-muted);color:var(--muted)}.privacy-note svg{color:#0f766e;flex-shrink:0}.file-dropzone{display:grid;gap:8px;place-items:center;padding:24px;border:1.5px dashed color-mix(in srgb,var(--accent) 28%,transparent);border-radius:20px;background:var(--surface-muted);text-align:center;cursor:pointer}.file-dropzone input{display:none}.file-dropzone span{font-weight:700}.file-dropzone small{color:var(--muted)}.mini-chart-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;align-items:end;min-height:260px}.mini-chart-column{display:flex;flex-direction:column;gap:12px;align-items:center;padding:8px 4px;border:1px solid transparent;background:transparent;border-radius:16px}.mini-chart-column.active{background:var(--surface-muted);border-color:color-mix(in srgb,var(--accent) 24%,transparent)}.mini-chart-bars{display:flex;align-items:end;gap:4px;width:100%;height:180px}.bar{flex:1;min-height:6px;border-radius:999px 999px 8px 8px;display:block}.bar.income{background:linear-gradient(180deg,#34d399,#059669)}.bar.expense{background:linear-gradient(180deg,#fb7185,#e11d48)}.bar.savings{background:linear-gradient(180deg,#60a5fa,#2563eb)}.mini-chart-label{font-size:.76rem;font-weight:700;color:var(--muted)}.year-trend-list,.analysis-bars{display:grid;gap:12px}.year-trend-modern{display:grid;gap:14px}.year-trend-legend{display:flex;flex-wrap:wrap;gap:8px}.legend-item{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border-radius:999px;font-size:.82rem;font-weight:700;color:var(--muted);background:var(--surface-muted)}.legend-dot{width:9px;height:9px;border-radius:999px}.legend-dot.income{background:#059669}.legend-dot.expense{background:#e11d48}.legend-dot.savings{background:#2563eb}.year-trend-canvas{position:relative;border:1px solid var(--border);border-radius:20px;background:radial-gradient(circle at 100% 0%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 36%),var(--surface-muted);padding:8px;touch-action:manipulation}.year-trend-svg{width:100%;height:auto;display:block}.trend-grid-line{stroke:color-mix(in srgb,var(--border) 70%,transparent);stroke-width:1}.trend-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.trend-line.income{stroke:#059669}.trend-line.expense{stroke:#e11d48}.trend-line.savings{stroke:#2563eb}.trend-point{stroke:var(--surface-strong);stroke-width:2;transform-box:fill-box;transform-origin:center;transition:transform .14s ease,filter .14s ease}.trend-year-group{cursor:pointer}.trend-hover-target{fill:transparent;pointer-events:all}.trend-year-group:focus-visible{outline:none}.trend-year-group:hover .trend-point{transform:scale(1.1);filter:drop-shadow(0 0 6px color-mix(in srgb,var(--accent) 34%,transparent))}.trend-year-group:focus-visible .trend-point,.trend-year-group.pinned .trend-point{transform:scale(1.12);filter:drop-shadow(0 0 7px color-mix(in srgb,var(--accent) 36%,transparent))}.trend-point.income{fill:#10b981}.trend-point.expense{fill:#f43f5e}.trend-point.savings{fill:#3b82f6}.trend-year-label{text-anchor:middle;font-size:.8rem;font-weight:700;fill:var(--muted)}.year-trend-tooltip-card{width:100%;height:100%;box-sizing:border-box;padding:12px 12px 10px;border-radius:14px;border:1px solid var(--border);background:color-mix(in srgb,var(--surface-strong) 92%,transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none}.year-trend-tooltip-fo{overflow:visible}.year-trend-tooltip-card p{margin:0;display:flex;align-items:center;gap:8px;font-size:.82rem;line-height:1.35}.year-trend-tooltip-card p+p{margin-top:6px}.year-trend-tooltip-card .tooltip-year{margin-bottom:2px;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:800}.year-trend-tooltip-card .tooltip-net{margin-top:8px;padding-top:8px;border-top:1px dashed color-mix(in srgb,var(--border) 70%,transparent);font-weight:800}.year-trend-tooltip-card .tooltip-hint{margin-top:8px;font-size:.72rem;color:var(--muted)}.year-trend-net-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.year-trend-net-item{padding:10px 12px;border-radius:14px;background:var(--surface-muted);border:1px solid var(--border);display:grid;gap:4px}.year-trend-net-item span{color:var(--muted);font-size:.78rem;font-weight:700}.year-trend-net-item strong{font-size:.98rem}.year-trend-row,.analysis-bar-row{display:grid;grid-template-columns:72px minmax(0,1fr) 120px;gap:12px;align-items:center}.year-trend-label,.analysis-year,.analysis-value{font-size:.92rem}.year-trend-label,.analysis-year{font-weight:700;color:var(--muted)}.year-trend-bars,.analysis-bar-track{display:flex;overflow:hidden;height:16px;border-radius:999px;background:var(--surface-muted)}.analysis-bar-track{height:14px}.analysis-bar-fill{display:block;background:linear-gradient(90deg,#4f46e5,#2563eb);border-radius:inherit}.analysis-bar-fill.accent-rose{background:linear-gradient(90deg,#fb7185,#e11d48)}.insight-card{display:flex;gap:16px;align-items:flex-start;padding:22px;background:var(--panel-gradient)}.insight-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent-hover));flex-shrink:0}.link-button{display:inline-flex;align-items:center;gap:8px;background:transparent;border-color:transparent;color:var(--accent);padding-left:0}.link-button:hover{color:var(--accent-hover);background:transparent;box-shadow:none}.modal-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:24px;background:#02061780;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.modal-card{width:min(760px,100%);max-height:min(92vh,880px);overflow:auto;padding:24px;border-radius:28px;background:var(--surface-strong);border:1px solid var(--border);box-shadow:var(--shadow)}.modal-header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.modal-header h2{margin:0;font-size:1.2rem}.modal-header p{margin:6px 0 0;color:var(--muted)}.modal-content{display:grid;gap:16px}.split-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.confirm-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.danger-note{display:inline-flex;align-items:flex-start;gap:10px;padding:14px 16px;border-radius:16px;background:color-mix(in srgb,var(--danger-soft) 70%,transparent);border:1px solid color-mix(in srgb,var(--danger) 22%,transparent);color:var(--text)}.danger-note svg{color:var(--danger);flex-shrink:0;margin-top:1px}.danger-note span{line-height:1.45}.split-actions .secondary-button{justify-content:center}.dark .tabs button:hover,.dark .month-pill,.dark .secondary-button,.dark .icon-button,.dark .link-button,.dark .file-dropzone,.dark .privacy-note,.dark .group-total,.dark .mini-chart-column.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 55%,transparent)}.icon-button.tiny svg,.secondary-button svg,.primary-button svg,.link-button svg{flex-shrink:0}@media(max-width:1200px){.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-layout,.analysis-two-col{grid-template-columns:1fr}}@media(max-width:820px){.app-shell{padding:14px}.topbar{position:static;grid-template-columns:1fr;align-items:stretch;border-radius:24px}.toolbar,.tabs,.section-heading,.group-header,.budget-row,.year-trend-row,.analysis-bar-row{flex-direction:column;align-items:stretch}.toolbar{justify-content:stretch}.toolbar>*{width:100%}.toolbar .control-inline,.toolbar .icon-button,.toolbar .primary-button,.toolbar .secondary-button,.toolbar .control select{width:100%}.tabs{padding:0}.tabs-left,.tabs-actions{width:100%;justify-content:stretch}.tabs-actions>*{width:100%}.tabs-actions .control-inline,.tabs-actions .primary-button,.tabs-actions .secondary-button{width:100%}.summary-grid,.split-actions,.mini-chart-grid{grid-template-columns:1fr}.budget-row,.year-trend-row,.analysis-bar-row{display:grid}.budget-row-actions{justify-self:stretch}.budget-row-actions input{width:100%}.mini-chart-grid{min-height:0}}
