:root{--surface: #0d0f18;--surface-container-lowest: #0a0c14;--surface-container-low: #121520;--surface-container: #161926;--surface-container-high: #1e2235;--surface-container-highest: #262a3e;--surface-bright: #2e3250;--bg: var(--surface);--bg-card: var(--surface-container);--bg-hover: var(--surface-container-high);--bg-elevated: var(--surface-container-high);--border: #252840;--border-subtle: #1c1f30;--text: #e8e9ed;--text-muted: #9294a0;--on-surface-white: #ffffff;--primary: #5bb5cf;--primary-hover: #4a9fb8;--primary-container: rgba(91, 181, 207, .15);--on-primary-container: #5bb5cf;--danger: #ef4444;--danger-container: rgba(239, 68, 68, .12);--success: #2ba88c;--success-container: rgba(43, 168, 140, .15);--success-border: rgba(43, 168, 140, .3);--danger-border: rgba(239, 68, 68, .3);--expense: #c0405a;--expense-muted: rgba(192, 64, 90, .12);--income-muted: rgba(43, 168, 140, .12);--scrim: rgba(0, 0, 0, .4);--sidebar-border: rgba(255, 255, 255, .06);--sidebar-text: rgba(255, 255, 255, .5);--sidebar-text-hover: rgba(255, 255, 255, .85);--sidebar-text-dim: rgba(255, 255, 255, .35);--sidebar-text-faint: rgba(255, 255, 255, .4);--sidebar-hover-bg: rgba(255, 255, 255, .08);--sidebar-active-bg: rgba(255, 255, 255, .12);--sidebar-btn-bg: rgba(255, 255, 255, .07);--sidebar-btn-border: rgba(255, 255, 255, .12);--sidebar-btn-text: rgba(255, 255, 255, .6);--sidebar-w: 220px;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 28px;--radius-full: 9999px;--radius-circle: 50%;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .2);--shadow-card: 0 2px 8px rgba(0, 0, 0, .35);--shadow-sidebar: 2px 0 12px rgba(0, 0, 0, .3);--shadow-elevated: 0 4px 16px rgba(0, 0, 0, .4);--chip-1-bg: hsl(174 40% 25%);--chip-1-text: hsl(174 40% 88%);--chip-2-bg: hsl(220 40% 25%);--chip-2-text: hsl(220 40% 88%);--chip-3-bg: hsl(340 40% 25%);--chip-3-text: hsl(340 40% 88%);--chip-4-bg: hsl(45 40% 25%);--chip-4-text: hsl(45 40% 88%);--chart-grid: #252840;--chart-tooltip-bg: #161926;--chart-tooltip-border: #252840;--type-display: 2.5rem;--type-headline-lg: 2rem;--type-headline-md: 1.75rem;--type-headline-sm: 1.5rem;--type-title-lg: 1.375rem;--type-title-md: 1rem;--type-title-sm: .875rem;--type-body-lg: 1rem;--type-body-md: .875rem;--type-body-sm: .75rem;--type-label-lg: .875rem;--type-label-md: .75rem;--type-label-sm: .6875rem;--type-caption: .8rem;--type-caption-sm: .72rem;--type-micro: .65rem;--space-0: 0px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--motion-short: .1s;--motion-medium: .25s;--motion-long: .4s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-decelerate: cubic-bezier(0, 0, 0, 1);--ease-accelerate: cubic-bezier(.3, 0, 1, 1)}[data-theme=light]{--surface: #EEEAE0;--surface-container-lowest: #E6E2D8;--surface-container-low: #F0ECE3;--surface-container: #F8F5EE;--surface-container-high: #ffffff;--surface-container-highest: #ffffff;--surface-bright: #ffffff;--border: #D8D3C8;--border-subtle: #E5E1D8;--text: #2C2925;--text-muted: #7A7060;--primary: #3a97b2;--primary-hover: #2e849c;--primary-container: rgba(58, 151, 178, .12);--on-primary-container: #2e849c;--danger: #dc2626;--danger-container: rgba(220, 38, 38, .1);--danger-border: rgba(220, 38, 38, .3);--success: #1a9b72;--success-container: rgba(26, 155, 114, .15);--success-border: rgba(26, 155, 114, .3);--expense: #8B2252;--expense-muted: rgba(139, 34, 82, .1);--income-muted: rgba(26, 155, 114, .1);--shadow-sm: 0 1px 2px rgba(44, 41, 37, .08);--shadow-card: 0 1px 4px rgba(44, 41, 37, .1), 0 0 0 1px rgba(44, 41, 37, .04);--shadow-elevated: 0 4px 12px rgba(44, 41, 37, .12);--chip-1-bg: hsl(174 40% 88%);--chip-1-text: hsl(174 50% 25%);--chip-2-bg: hsl(220 40% 88%);--chip-2-text: hsl(220 50% 25%);--chip-3-bg: hsl(340 40% 88%);--chip-3-text: hsl(340 50% 25%);--chip-4-bg: hsl(45 50% 88%);--chip-4-text: hsl(45 50% 25%);--chart-grid: #DDD9CF;--chart-tooltip-bg: #F8F5EE;--chart-tooltip-border: #D8D3C8}*{margin:0;padding:0;box-sizing:border-box}.inline-actions{display:flex;gap:var(--space-2);justify-content:flex-end}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;font-size:15px;font-feature-settings:"kern" 1}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:#0d0f18;border-right:none;padding:var(--space-0);display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;box-shadow:var(--shadow-sidebar)}.sidebar-brand{padding:var(--space-6) var(--space-5) var(--space-5);border-bottom:1px solid var(--sidebar-border)}.sidebar-brand h1{font-size:var(--type-title-md);font-weight:700;color:var(--on-surface-white);letter-spacing:.01em;margin:0}.sidebar-brand-sub{font-size:var(--type-caption-sm);color:var(--sidebar-text-dim);margin-top:var(--space-1)}.sidebar nav{display:flex;flex-direction:column;gap:1px;padding:var(--space-3) 0;flex:1;overflow-y:auto}.sidebar a{color:var(--sidebar-text);text-decoration:none;padding:var(--space-2) var(--space-4);font-size:var(--type-body-md);font-weight:500;transition:background var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard);display:flex;align-items:center;gap:var(--space-3);margin:2px var(--space-2);border-radius:var(--radius-xl);min-height:44px;position:relative}.sidebar a .nav-icon{width:20px;height:20px;text-align:center;flex-shrink:0}.sidebar a:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-hover)}.sidebar a:active{background:var(--sidebar-active-bg)}.sidebar a.active{background:#5bb5cf2e;color:var(--primary);font-weight:600}.main{margin-left:var(--sidebar-w);flex:1;padding:var(--space-8) var(--space-10);max-width:1400px;min-width:0}.page-header{margin-bottom:var(--space-8);display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.page-header h2{font-size:var(--type-headline-lg);font-weight:700;letter-spacing:-.01em}.page-header p{color:var(--text-muted);font-size:var(--type-body-md);margin-top:var(--space-1)}.card{background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-6)}[data-theme=light] .card{border:none;box-shadow:var(--shadow-card)}.card-elevated{background:var(--surface-container-low);border:none;box-shadow:var(--shadow-elevated)}.card-outlined{background:var(--surface);border:1px solid var(--border);box-shadow:none}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.stat-card{text-align:center}.stat-card .label{font-size:var(--type-label-md);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.stat-card .value{font-size:var(--type-headline-md);font-weight:700;margin-top:var(--space-1);font-variant-numeric:tabular-nums}.stat-card .value.income{color:var(--success)}.stat-card .value.expense{color:var(--expense)}.stat-card .value.net-positive{color:var(--success)}.stat-card .value.net-negative{color:var(--expense)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);min-height:36px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-container);color:var(--text);font-size:var(--type-body-md);font-weight:500;cursor:pointer;transition:background var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard),box-shadow var(--motion-short) var(--ease-standard)}.btn:hover{background:color-mix(in srgb,var(--text) 8%,var(--surface-container))}.btn:active{background:color-mix(in srgb,var(--text) 12%,var(--surface-container))}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-surface-white);letter-spacing:.01em}.btn-primary:hover{background:var(--primary-hover);box-shadow:var(--shadow-sm)}.btn-primary:active{background:color-mix(in srgb,white 12%,var(--primary));box-shadow:none}.btn-tonal{background:var(--primary-container);border-color:transparent;color:var(--on-primary-container)}.btn-tonal:hover{background:color-mix(in srgb,var(--primary) 22%,transparent)}.btn-tonal:active{background:color-mix(in srgb,var(--primary) 28%,transparent)}.btn-ghost-danger{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost-danger:hover{background:var(--danger-container);border-color:var(--danger-border);color:var(--danger)}.btn-ghost-danger:active{background:color-mix(in srgb,var(--danger) 20%,transparent)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:var(--on-surface-white)}.btn-text{background:transparent;border-color:transparent;color:var(--primary);padding:var(--space-2) var(--space-3)}.btn-text:hover{background:var(--primary-container)}.btn-text:active{background:color-mix(in srgb,var(--primary) 20%,transparent)}.btn-sm{padding:var(--space-1) var(--space-2);font-size:var(--type-body-sm);min-height:30px}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.btn-outline:hover{background:color-mix(in srgb,var(--text) 6%,transparent);color:var(--text)}.btn-outline:active{background:color-mix(in srgb,var(--text) 10%,transparent)}.balance-tag-row{font-size:var(--type-body-sm);opacity:.75}.table-wrapper{overflow-x:auto}.card-flush{padding:0}.card-flush>h3{padding:var(--space-4) var(--space-6) var(--space-2);font-size:var(--type-title-md);font-weight:600}.table-sticky-col{border-collapse:separate;border-spacing:0}.table-sticky-col th:first-child,.table-sticky-col td:first-child{position:sticky;left:0;z-index:1;background:var(--surface-container);box-shadow:2px 0 4px -1px #00000026}table{width:100%;border-collapse:collapse;font-size:var(--type-body-md)}th{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);color:var(--text-muted);font-weight:500;font-size:var(--type-label-md);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}th.th-right{text-align:right}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--motion-short) var(--ease-standard)}th.sortable:hover{color:var(--text)}th .sort-arrow{display:inline-block;margin-left:.3em;font-size:var(--type-micro);opacity:.4}th.sorted .sort-arrow{opacity:1;color:var(--primary)}td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);vertical-align:middle}tr:hover{background:color-mix(in srgb,var(--text) 4%,transparent);transition:background var(--motion-short) var(--ease-standard)}input,select,textarea{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-xs);padding:var(--space-2) var(--space-3);color:var(--text);font-size:var(--type-body-md);width:100%;transition:border-color var(--motion-short) var(--ease-standard)}input[type=date]{cursor:pointer}select{appearance:none;padding-right:calc(var(--space-3) + 16px);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-2) center;background-size:16px;cursor:pointer}[data-theme=light] input,[data-theme=light] select,[data-theme=light] textarea,[data-theme=light] .cat-select-trigger,[data-theme=light] .tag-select-trigger,[data-theme=light] .simple-select-trigger,[data-theme=light] .tag-select-inline-trigger,[data-theme=light] .color-input-wrap{background:var(--bg-elevated)}input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);border-width:2px;padding:calc(var(--space-2) - 1px) calc(var(--space-3) - 1px)}.tab-bar{display:flex;gap:0;margin-bottom:var(--space-4);border-bottom:2px solid var(--border)}.tab-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-muted);font-weight:500;cursor:pointer;font-size:var(--type-body-md);transition:color var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard)}.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.tab-btn:hover:not(.active){color:var(--text);background:color-mix(in srgb,var(--text) 5%,transparent)}.create-form{padding:var(--space-4);margin-bottom:var(--space-4)}.create-form .form-row{margin-bottom:0}.form-row{display:flex;gap:var(--space-3);margin-bottom:var(--space-3);align-items:flex-end}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-group label{font-size:var(--type-caption);color:var(--text-muted)}.input-icon-name{width:160px}.cat-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--type-label-md);font-weight:500;white-space:nowrap;background:var(--surface-container-high);border:1px solid var(--border);min-height:24px}.cat-dot{width:8px;height:8px;border-radius:var(--radius-circle);display:inline-block;flex-shrink:0}.tag-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);white-space:nowrap;font-size:var(--type-label-md);font-weight:600;line-height:1.4;min-height:24px;transition:background var(--motion-short) var(--ease-standard)}.tag-badge:before{content:"#"}.tag-dot{width:6px;height:6px;border-radius:var(--radius-circle);flex-shrink:0}.tag-badge-remove{background:none;border:none;cursor:pointer;padding:0;font-size:var(--type-label-lg);line-height:1;display:inline-flex;align-items:center;justify-content:center;opacity:.6;color:inherit;transition:opacity var(--motion-short) var(--ease-standard)}.tag-badge-remove:hover{opacity:1}.tag-select-wrap{position:relative;display:inline-block}.tag-select-trigger{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);cursor:pointer;font-size:var(--type-body-md);color:var(--text);transition:border-color var(--motion-short) var(--ease-standard)}.tag-select-trigger:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}.tag-select-compact{padding:var(--space-1) var(--space-2);background:transparent;border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:var(--type-caption);color:var(--text-muted);opacity:.6;min-width:0;min-height:30px;gap:2px;transition:opacity var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard)}.tag-select-compact:hover{opacity:1;border-color:var(--primary);color:var(--primary)}.tag-select-pills{display:flex;flex-wrap:wrap;gap:var(--space-1)}.tag-select-placeholder{color:var(--text-muted)}.tag-select-arrow{font-size:var(--type-micro);opacity:.5;margin-left:var(--space-1)}.tag-select-dropdown{min-width:220px;max-height:260px;display:flex;flex-direction:column;background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);margin-top:var(--space-1);overflow:hidden}.tag-select-search{padding:var(--space-2) var(--space-3);border:none;border-bottom:1px solid var(--border);background:transparent;font-size:var(--type-caption);outline:none;color:var(--text);width:100%;box-sizing:border-box}.tag-select-options{overflow-y:auto;max-height:200px}.tag-select-option{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--type-label-lg)}.tag-select-option:hover,.tag-select-option.focused{background:color-mix(in srgb,var(--text) 8%,transparent)}.tag-select-option.active{opacity:.45}.tag-select-option.active:hover{opacity:.7}.tag-select-create{border-top:1px solid var(--border);color:var(--primary);font-weight:500}.tag-select-empty{padding:var(--space-2) var(--space-3);font-size:var(--type-caption);color:var(--text-muted)}.tag-select-inline-wrap{display:block}.tag-select-inline-trigger:focus-visible{outline:none}.tag-select-inline-trigger{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--space-1);padding:0 var(--space-3);height:38px;border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--bg);cursor:text;font-size:var(--type-body-md);color:var(--text);overflow:hidden;transition:border-color var(--motion-short) var(--ease-standard)}.tag-select-inline-trigger:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}.tag-select-inline-trigger.focused{border-color:var(--primary)}.tag-select-inline-trigger .tag-badge{min-height:0;padding:0 var(--space-1);font-size:var(--type-caption);line-height:1.6}.tag-select-inline-trigger .tag-badge-remove{padding:0;font-size:var(--type-caption-sm)}.tag-select-inline-input,[data-theme=light] .tag-select-inline-input,.tag-select-inline-input:hover,.tag-select-inline-input:focus{flex:1;min-width:60px;border:none;border-width:0;outline:none;background:transparent;font-size:inherit;color:inherit;padding:0;width:auto}.tag-select-inline-input::placeholder{color:var(--text-muted)}select.select-inline,input.input-inline{font-size:var(--type-body-md);padding:var(--space-1) var(--space-2)}input.input-inline{width:100%}.select-inline .simple-select-trigger,.select-inline .cat-select-trigger,.select-inline .tag-select-trigger{font-size:var(--type-body-md);padding:var(--space-1) var(--space-2)}.filter-select{min-width:160px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-xl);padding:var(--space-16) var(--space-8);text-align:center;cursor:pointer;transition:border-color var(--motion-medium) var(--ease-standard),background var(--motion-medium) var(--ease-standard);background:var(--surface-container)}.dropzone:hover,.dropzone.dragover{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 5%,transparent)}.dropzone-icon{font-size:var(--type-display);color:var(--text-muted);margin-bottom:var(--space-3);display:block;transition:color var(--motion-medium)}.dropzone:hover .dropzone-icon,.dropzone.dragover .dropzone-icon{color:var(--primary)}.dropzone-title{font-size:var(--type-title-md);font-weight:600;color:var(--text);margin-bottom:var(--space-1)}.dropzone-hint{font-size:var(--type-caption);color:var(--text-muted)}.dropzone p{color:var(--text-muted);margin-top:var(--space-2)}.overview-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin:var(--space-4) 0}.overview-tab{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-muted);text-decoration:none;font-weight:500;cursor:pointer;font-size:var(--type-body-md);transition:color var(--motion-short),border-color var(--motion-short)}.overview-tab:hover{color:var(--text)}.overview-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.period-bar-compact{position:relative;display:inline-flex;align-items:center;min-height:36px;margin-bottom:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-container);overflow:visible}.period-nav{display:flex;align-items:center;min-width:0}.period-arrow{display:flex;align-items:center;justify-content:center;width:36px;height:34px;border:none;background:transparent;color:var(--text-muted);font-size:1.1rem;line-height:1;cursor:pointer;flex-shrink:0;transition:background var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard)}.period-arrow:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.period-arrow:disabled{opacity:.3;cursor:default}.period-label-btn{display:flex;align-items:center;gap:var(--space-1);padding:0 var(--space-3);height:34px;border:none;background:transparent;color:var(--text);font-size:var(--type-body-md);font-weight:600;cursor:pointer;white-space:nowrap;transition:color var(--motion-short) var(--ease-standard),background var(--motion-short) var(--ease-standard)}.period-label-btn:hover:not(:disabled){color:var(--primary);background:var(--bg-hover)}.period-label-btn.open{color:var(--primary);background:var(--bg-hover)}.period-label-btn:disabled{cursor:default;opacity:.8}.period-label-caret{font-size:var(--type-micro);color:var(--text-muted);margin-left:2px}.period-custom-inline{display:flex;align-items:center;gap:var(--space-2)}.period-custom-inline .date-picker-wrap{width:auto}.period-custom-inline .date-picker-trigger{height:32px;min-height:32px;padding:0 var(--space-2);font-size:var(--type-body-sm)}.period-custom-sep{color:var(--text-muted);font-size:var(--type-body-sm)}.period-chips{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap;padding:2px var(--space-2)}.period-chip{display:inline-flex;align-items:center;gap:var(--space-1);height:28px;padding:0 var(--space-2) 0 var(--space-3);border:none;border-radius:var(--radius-sm);background:var(--primary-container);color:var(--on-primary-container);font-size:var(--type-caption);font-weight:500;white-space:nowrap}.period-chip:nth-child(4n+1){background:var(--chip-1-bg);color:var(--chip-1-text)}.period-chip:nth-child(4n+2){background:var(--chip-2-bg);color:var(--chip-2-text)}.period-chip:nth-child(4n+3){background:var(--chip-3-bg);color:var(--chip-3-text)}.period-chip:nth-child(4n+4){background:var(--chip-4-bg);color:var(--chip-4-text)}.period-chip-remove{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;background:transparent;color:currentColor;font-size:var(--type-body-md);line-height:1;cursor:pointer;border-radius:var(--radius-xs);padding:0;opacity:.5;transition:opacity var(--motion-short) var(--ease-standard)}.period-chip-remove:hover{opacity:1}.period-add-btn{height:28px;padding:0 var(--space-3);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:var(--type-caption);cursor:pointer;transition:color var(--motion-short) var(--ease-standard),background var(--motion-short) var(--ease-standard)}.period-add-btn:hover{color:var(--primary);background:var(--bg-hover)}.period-divider{width:1px;align-self:stretch;margin:6px 0;background:var(--border);flex-shrink:0}.period-type-select{height:34px;width:auto;padding:0 var(--space-6) 0 var(--space-3);border:none;border-radius:0 var(--radius-md) var(--radius-md) 0;background:transparent;color:var(--text);font-size:var(--type-body-md);cursor:pointer;flex-shrink:0}.period-type-select:hover{background:var(--bg-hover)}.period-type-select:focus{outline:none}@media(max-width:480px){.period-bar-compact{display:flex;width:100%}.period-nav{flex:1;min-width:0}.period-label-btn{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.period-picker{position:absolute;top:calc(100% + 6px);left:0;z-index:200;background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);max-height:320px;overflow-y:auto;padding:var(--space-3);min-width:260px}.picker-year-group{margin-bottom:var(--space-3)}.picker-year-group:last-child{margin-bottom:0}.picker-year-header{font-size:var(--type-body-sm);font-weight:600;color:var(--text-muted);margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.06em}.picker-month-row,.picker-quarter-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-1)}.picker-year-list{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-1)}.picker-cell{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-muted);font-size:var(--type-body-sm);cursor:pointer;text-align:center;transition:background var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard)}.picker-cell:hover{background:var(--bg-hover);color:var(--text)}.picker-cell.active{background:var(--primary-container);border-color:var(--primary);color:var(--primary);font-weight:600}.picker-year-cell{padding:var(--space-2) var(--space-2)}.tx-controls{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-3)}.tx-filters{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}[data-theme=light] .tx-filters{border:none;box-shadow:var(--shadow-card)}.input-icon-wrap{position:relative;display:inline-flex;align-items:center}.input-icon-wrap .input-icon{position:absolute;left:8px;color:var(--text-muted);pointer-events:none}.tx-search{width:320px;min-width:120px;padding-left:2rem!important}.tx-amount-filter{width:90px}.tx-filter-toggle{display:inline-flex!important;gap:var(--space-1);align-items:center;font-weight:500}.tx-add-btn{margin-left:auto}.tx-filter-panel{display:flex;flex-direction:column;gap:var(--space-3);background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4)}[data-theme=light] .tx-filter-panel{border:none;box-shadow:var(--shadow-card)}.tx-fp-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);align-items:end}.tx-fp-row-3col{grid-template-columns:1fr 1fr auto}.tx-fp-row-end{display:flex;justify-content:flex-end}.tx-fp-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.tx-fp-field .filter-select,.tx-fp-field .cat-select-wrap,.tx-fp-field .tag-select-wrap{width:100%}.tx-fp-field .filter-pill{padding:var(--space-2) var(--space-3);font-size:var(--type-body-md);border-radius:var(--radius-xs);min-height:0}.tx-fp-label{font-size:var(--type-caption);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.tx-fp-amount{display:flex;align-items:center;gap:var(--space-2)}.tx-fp-dash{color:var(--text-muted);flex-shrink:0}.tx-fp-amount .tx-amount-filter{flex:1;min-width:0}.filter-count{background:var(--primary);color:var(--on-surface-white);font-size:var(--type-micro);font-weight:700;border-radius:var(--radius-circle);min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;line-height:1}.tx-filter-sep{width:1px;height:24px;background:var(--border);flex-shrink:0}.tx-bulk-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.tx-bulk-sep{width:1px;height:24px;background:var(--border);flex-shrink:0;margin:0 var(--space-1)}.tx-bulk-bar-select{min-width:140px}.tx-bulk-actions .cat-select-trigger,.tx-bulk-actions .tag-select-trigger,.tx-bulk-actions .tag-select-inline-trigger{padding:var(--space-1) var(--space-2);font-size:var(--type-caption);height:32px;min-height:0;min-width:140px}.tx-bulk-delete{display:inline-flex;align-items:center;gap:var(--space-1)}.filter-pill{padding:var(--space-1) var(--space-3);font-size:var(--type-body-sm);font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-container-high);color:var(--text);cursor:pointer;transition:background var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard);white-space:nowrap;min-height:32px;display:inline-flex;align-items:center;gap:var(--space-1)}.filter-pill:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 10%,var(--surface-container-high));border-color:var(--primary);color:var(--primary)}.filter-pill:disabled{opacity:.38;cursor:not-allowed}.filter-pill.active{border-color:var(--primary);background:var(--primary-container);color:var(--on-primary-container)}.tx-sort-bar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md);height:44px;box-sizing:border-box}.tx-select-all{display:flex;align-items:center;gap:var(--space-2);font-size:var(--type-caption);color:var(--text-muted);cursor:pointer;white-space:nowrap}.tx-select-all:has(input:checked) span{color:var(--primary);font-weight:600}.tx-sort-btns{display:inline-flex;margin-left:auto;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.tx-sort-btn{padding:var(--space-1) var(--space-3);border:none;border-radius:0;background:transparent;color:var(--text-muted);font-size:var(--type-caption);cursor:pointer;transition:color var(--motion-short) var(--ease-standard),background var(--motion-short) var(--ease-standard)}.tx-sort-btn+.tx-sort-btn{border-left:1px solid var(--border)}.tx-sort-btn:hover{color:var(--text);background:var(--bg-hover)}.tx-sort-btn.active{color:var(--primary);background:var(--primary-container)}.tx-list{display:flex;flex-direction:column;gap:var(--space-4)}.tx-day-group{background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}[data-theme=light] .tx-day-group{border:none;box-shadow:var(--shadow-card)}.tx-day-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background:var(--bg-hover);border-bottom:1px solid var(--border-subtle)}.tx-day-label{font-size:var(--type-caption-sm);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.tx-day-total{display:flex;gap:var(--space-3);font-size:var(--type-caption);font-weight:600;font-variant-numeric:tabular-nums}.tx-day-income{color:var(--success)}.tx-day-expense{color:var(--expense)}.tx-row{display:grid;grid-template-columns:28px 24px 1fr;align-items:start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);cursor:pointer;transition:background var(--motion-short);position:relative}.tx-row:last-child{border-bottom:none}.tx-row:hover{background:color-mix(in srgb,var(--text) 6%,transparent)}.tx-row:active{background:color-mix(in srgb,var(--text) 10%,transparent)}.tx-row.tx-row-selected{background:color-mix(in srgb,var(--primary) 10%,transparent)}.tx-row.tx-row-selected:hover{background:color-mix(in srgb,var(--primary) 14%,transparent)}.tx-row-check{display:flex;align-items:center;justify-content:center;padding-top:2px}.tx-row-cat-dot{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;padding-top:1px}.tx-row-body{min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.tx-row-line1{display:flex;align-items:center;gap:var(--space-2);min-width:0}.tx-row-desc{flex:1;min-width:0;font-size:var(--type-body-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:var(--space-2)}.tx-row-amount{font-size:var(--type-label-lg);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;flex-shrink:0}.tx-row-amount.credit{color:var(--success)}.tx-row-amount.debit{color:var(--expense)}.tx-row-overflow{position:relative;flex-shrink:0}.tx-row-overflow-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-xs);border:none;background:transparent;color:var(--text-muted);cursor:pointer;opacity:0;transition:opacity var(--motion-short),background var(--motion-short);padding:0}.tx-row:hover .tx-row-overflow-btn,.tx-row-overflow-btn:focus-visible{opacity:1}.tx-row-overflow-btn:hover{background:color-mix(in srgb,var(--text) 10%,transparent);color:var(--text)}.tx-row-overflow-menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);min-width:120px;z-index:200;overflow:hidden;padding:var(--space-1)}.tx-row-overflow-menu .btn{width:100%;justify-content:flex-start;border-radius:var(--radius-xs)}.overflow-menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);min-width:120px;z-index:200;overflow:hidden;padding:var(--space-1);display:flex;flex-direction:column;gap:2px}.overflow-menu .btn{width:100%;justify-content:flex-start;border-radius:var(--radius-xs)}.tx-row-line2{display:flex;align-items:center;gap:var(--space-2);min-width:0}.tx-row-tags{display:flex;align-items:center;gap:var(--space-1);min-width:0;flex-wrap:wrap}.tx-row-tags .tag-badge,.table-wrapper .tag-badge{padding:2px var(--space-2);font-size:var(--type-caption-sm)}.tx-row-tags .tag-badge-remove{display:none}.tx-row:hover .tx-row-tags .tag-badge-remove{display:inline}.tx-auto-tag{font-size:var(--type-micro);color:var(--primary);font-weight:500}.tx-note-tag{font-size:var(--type-micro);color:var(--text-muted)}.tx-row-cat-select{flex-shrink:0}.tx-cat-select-inline{min-width:unset}.tx-cat-select-inline .cat-select-trigger{padding:var(--space-1) var(--space-2);font-size:var(--type-caption);border-color:var(--border);background:var(--surface-container);color:var(--text-muted);gap:var(--space-1);min-width:0}.tx-cat-select-inline .cat-select-trigger:hover{border-color:color-mix(in srgb,var(--text) 30%,var(--border));background:var(--bg-hover);color:var(--text)}.tx-cat-select-inline .cat-select-trigger:has(.cat-select-name){color:var(--text)}.tx-cat-select-inline .cat-select-name{font-size:var(--type-caption)}.tx-cat-select-inline .cat-select-placeholder{font-size:var(--type-caption);color:var(--text-muted)}.tx-cat-select-inline .cat-select-arrow{width:12px;height:12px}@media(max-width:768px){.tx-row{grid-template-columns:20px 1fr;gap:var(--space-1);padding:var(--space-2) var(--space-3)}.tx-row-check,.tx-row-cat-select{display:none}.tx-row-overflow-btn{opacity:1}.tx-row-selected .tx-row-desc{white-space:normal;overflow:visible}}.chart-card-wide{margin-top:var(--space-6)}.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);margin-top:var(--space-6)}@media(max-width:900px){.charts-grid{grid-template-columns:1fr}}.pie-layout{display:flex;align-items:center;gap:var(--space-6)}.pie-chart-area{flex:1;min-width:0}.pie-legend{display:flex;flex-direction:column;gap:var(--space-2);min-width:180px}@media(max-width:600px){.pie-layout{flex-direction:column}.pie-legend{min-width:0;width:100%;border-top:1px solid var(--border);padding-top:var(--space-3)}}.chart-card{background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-6);overflow:hidden}[data-theme=light] .chart-card{border:none;box-shadow:var(--shadow-card)}.chart-card-full{overflow-x:auto;display:flex;flex-direction:column;align-items:center}.chart-card-full h3{align-self:stretch}.chart-card h3{font-size:1.125rem;margin-bottom:var(--space-4);font-weight:600}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border)}.chart-legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--type-caption)}.chart-legend-label{color:var(--text)}.chart-legend-value{color:var(--text-muted);font-variant-numeric:tabular-nums}.checkbox-cell{width:30px}input[type=checkbox]{width:auto;accent-color:var(--primary)}.simple-select-wrap{position:relative;display:inline-block;min-width:120px}.simple-select-trigger{display:flex;align-items:center;gap:var(--space-1);width:100%;padding:var(--space-2) var(--space-3);font-size:var(--type-body-md);border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);cursor:pointer;text-align:left;white-space:nowrap;transition:border-color var(--motion-short) var(--ease-standard)}.simple-select-trigger:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}.simple-select-arrow{color:var(--text-muted);margin-left:auto}.simple-select-dropdown{display:flex;flex-direction:column;background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);overflow:hidden}.simple-select-options{overflow-y:auto;max-height:200px}.simple-select-option{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--type-label-lg);cursor:pointer;color:var(--text)}.simple-select-option:hover,.simple-select-option.focused{background:color-mix(in srgb,var(--text) 8%,transparent)}.simple-select-option.active{background:var(--primary-container)}.cat-select-wrap{position:relative;display:inline-block;min-width:120px}.cat-select-trigger{display:flex;align-items:center;gap:var(--space-1);width:100%;padding:var(--space-2) var(--space-3);font-size:var(--type-body-md);border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);cursor:pointer;text-align:left;white-space:nowrap;transition:border-color var(--motion-short) var(--ease-standard)}.cat-select-trigger:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}.cat-select-name{flex:1;overflow:hidden;text-overflow:ellipsis}.cat-select-placeholder{color:var(--text-muted);flex:1}.cat-select-arrow{font-size:.6em;color:var(--text-muted);margin-left:auto}.cat-select-dropdown{min-width:180px;max-height:260px;display:flex;flex-direction:column;background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);margin-top:var(--space-1);overflow:hidden}.cat-select-search{padding:var(--space-2) var(--space-3);border:none;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font-size:var(--type-caption);outline:none;width:100%;box-sizing:border-box}.cat-select-options{overflow-y:auto;max-height:200px}.cat-select-option{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--type-label-lg);cursor:pointer;color:var(--text)}.cat-select-option:hover,.cat-select-option.focused{background:color-mix(in srgb,var(--text) 8%,transparent)}.cat-select-option.active{background:var(--primary-container);font-weight:600}.cat-select-empty{padding:var(--space-2) var(--space-3);font-size:var(--type-caption);color:var(--text-muted);text-align:center}.status-msg{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);font-size:var(--type-label-lg);margin-bottom:var(--space-4)}.status-msg.success{background:#2ba88c1a;border:1px solid var(--success-border);color:var(--success)}.status-msg.error{background:#ef44441a;border:1px solid var(--danger-border);color:var(--danger)}.amount{font-variant-numeric:tabular-nums;font-weight:500;text-align:right;white-space:nowrap}.amount.debit{color:var(--expense)}.amount.credit{color:var(--success)}.color-input-wrap{display:inline-flex;align-items:stretch;border:1px solid var(--border);border-radius:var(--radius-xs);overflow:hidden;background:var(--bg);width:auto;transition:border-color var(--motion-short) var(--ease-standard)}.color-input-wrap:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}.color-input-wrap:focus-within{border-color:var(--primary);border-width:2px;margin:-1px}.color-input-wrap .color-input{width:28px;height:auto;padding:2px;border:none;border-radius:0;background:transparent;cursor:pointer;flex-shrink:0}.color-input-wrap .color-hex-input{width:80px;font-size:var(--type-caption);font-family:monospace;padding:var(--space-2) var(--space-2);border:none;border-radius:0;background:transparent;color:var(--text)}.color-input-wrap .color-hex-input:hover{border:none}.color-input-wrap .color-hex-input:focus{outline:none;border:none;border-width:0;padding:var(--space-2) var(--space-2)}.loading{text-align:center;padding:var(--space-12);color:var(--text-muted)}.empty{text-align:center;padding:var(--space-12) var(--space-8);color:var(--text-muted)}.theme-toggle{margin-top:auto;padding:var(--space-3) var(--space-5);border-top:1px solid var(--sidebar-border)}.theme-toggle button{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1);background:var(--sidebar-border);color:var(--sidebar-text);font-size:var(--type-body-sm);cursor:pointer;transition:background var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard)}.theme-toggle button:hover{background:var(--sidebar-active-bg);color:#ffffffe6}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:var(--space-4)}.login-card{background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-8);width:100%;max-width:400px;box-shadow:var(--shadow-elevated)}[data-theme=light] .login-card{border:none}.login-card h1{font-size:var(--type-headline-lg);font-weight:800;letter-spacing:-.02em;color:var(--text);margin-bottom:var(--space-1)}.login-brand-accent{color:var(--primary)}.login-subtitle{color:var(--text-muted);font-size:var(--type-label-lg);margin-bottom:var(--space-6)}.login-toggle{text-align:center;margin-top:var(--space-5);font-size:var(--type-label-lg);color:var(--text-muted)}.login-toggle button{background:none;border:none;color:var(--primary);cursor:pointer;font-size:var(--type-label-lg);text-decoration:underline}.sidebar-footer{margin-top:auto;padding:var(--space-3) var(--space-5);border-top:1px solid var(--sidebar-border);display:flex;flex-direction:column;gap:var(--space-2)}.sidebar-footer .btn{background:var(--sidebar-btn-bg);border-color:var(--sidebar-btn-border);color:var(--sidebar-btn-text)}.sidebar-footer .btn:hover{background:var(--sidebar-active-bg);color:#ffffffe6}.sidebar-footer .theme-toggle{margin-top:0;padding:0;border-top:none}.user-section{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.user-name{font-size:var(--type-caption);color:var(--sidebar-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-result{display:flex;gap:var(--space-1)}.invite-result input{font-size:var(--type-micro);padding:var(--space-1) var(--space-2);flex:1;min-width:0}.sidebar-toggle{display:none;position:fixed;top:var(--space-3);left:var(--space-3);z-index:1001;background:var(--surface-container);border:1px solid var(--border);color:var(--text);width:44px;height:44px;border-radius:var(--radius-md);cursor:pointer;font-size:var(--type-title-md);align-items:center;justify-content:center;transition:background var(--motion-short) var(--ease-standard)}.sidebar-toggle:hover{background:var(--surface-container-high)}.sidebar-overlay{display:none}@media(max-width:768px){:root{--sidebar-w: 260px}.sidebar-toggle{display:flex}.sidebar{transform:translate(-100%);transition:transform var(--motion-medium) var(--ease-standard);z-index:1000}.sidebar.open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;inset:0;background:var(--scrim);z-index:999;animation:scrim-in var(--motion-medium) var(--ease-decelerate)}.main{margin-left:0!important;padding:var(--space-4);padding-top:var(--space-12);overflow-x:hidden}.card-grid{grid-template-columns:1fr 1fr!important;gap:var(--space-3)}.charts-grid{grid-template-columns:1fr!important}.tx-filters{flex-wrap:wrap;gap:var(--space-2)}.input-icon-wrap{flex:1 1 100%;min-width:0}.tx-search{width:100%}.tx-fp-row,.tx-fp-row-3col{grid-template-columns:1fr}.overview-tabs{gap:0}.overview-tab{padding:var(--space-2) var(--space-3);font-size:var(--type-body-sm);min-width:0}.tx-sort-bar{flex-wrap:wrap;height:auto;min-height:44px}.tx-bulk-actions{flex-basis:100%}.tx-bulk-actions .tx-bulk-sep{display:none}.tx-bulk-bar-select{min-width:0;flex:1}.tx-bulk-actions .cat-select-trigger,.tx-bulk-actions .tag-select-trigger,.tx-bulk-actions .tag-select-inline-trigger{min-width:0}.form-row{flex-direction:column}.form-row .form-group{width:100%}.form-row .form-group input:not(.color-input):not(.color-hex-input),.form-row .form-group select{width:100%!important;min-width:0!important}.form-row .filter-select,.form-row .simple-select-wrap,.form-row .cat-select-wrap{min-width:0;width:100%}.form-row .btn{align-self:flex-start}.hide-mobile{display:none!important}.table-wrapper{overflow-x:auto}.dropzone{padding:var(--space-8) var(--space-4)}.dropzone-icon{margin-left:auto;margin-right:auto}.period-options{flex-wrap:wrap}.form-dialog{width:calc(100% - var(--space-4));padding:var(--space-4)}}@media(max-width:480px){.card-grid{grid-template-columns:1fr!important}}.toast{position:fixed;top:var(--space-6);left:50%;transform:translate(-50%);z-index:1100;padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);font-size:var(--type-body-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:toast-in var(--motion-medium) var(--ease-decelerate);box-shadow:var(--shadow-elevated);max-width:min(90vw,600px);text-align:center}.toast-success{background:var(--success-container);border:1px solid var(--success-border);color:var(--success)}.toast-error{background:var(--danger-container);border:1px solid var(--danger-border);color:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.error-banner{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--danger-container);border:1px solid var(--danger-border);border-radius:var(--radius-md);color:var(--danger);font-size:.875rem;margin:var(--space-3) 0}.confirm-overlay{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:1200;animation:scrim-in .15s ease-out;padding:var(--space-4);overflow-y:auto}.confirm-dialog{background:var(--surface-container-high);border:none;border-radius:var(--radius-md);padding:var(--space-6);max-width:560px;min-width:280px;width:90%;box-shadow:var(--shadow-elevated);animation:dialog-in .15s ease-out}[data-theme=light] .confirm-dialog{box-shadow:var(--shadow-elevated)}.confirm-message{margin:0 0 var(--space-6);font-size:var(--type-body-lg);line-height:1.5}.confirm-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.form-dialog{min-width:0;max-width:640px;width:min(90%,640px);padding:var(--space-6);max-height:calc(100vh - var(--space-8));overflow-y:auto}.form-dialog-title{font-size:18px;font-weight:600;margin-bottom:var(--space-4)}.form-dialog-body{display:flex;flex-direction:column;gap:var(--space-4)}.form-dialog-body .form-row{margin-bottom:0;gap:var(--space-4)}.form-dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5)}.form-dialog input,.form-dialog select,.form-dialog textarea,.form-dialog .cat-select-trigger,.form-dialog .tag-select-trigger,.form-dialog .simple-select-trigger,.form-dialog .date-picker-trigger{min-height:40px}.form-dialog .form-group label{font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:4px}.section-toolbar{display:flex;justify-content:flex-end;gap:var(--space-2);margin-bottom:var(--space-3)}.upload-history-header{padding:var(--space-4) var(--space-6) var(--space-2);display:flex;align-items:center;justify-content:space-between}.upload-history-header h3{font-size:1.125rem;font-weight:600;margin:0}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.csv-mapping-dialog{background:var(--surface-container-high);border:none;border-radius:var(--radius-xl);padding:var(--space-6);max-width:800px;min-width:340px;width:95%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-elevated);animation:dialog-in var(--motion-medium) var(--ease-decelerate)}[data-theme=light] .csv-mapping-dialog{box-shadow:0 8px 32px #00000026}.csv-mapping-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.csv-mapping-header h3{font-size:var(--type-title-lg);font-weight:600;margin:0}.csv-loading{display:flex;align-items:center;gap:var(--space-3);justify-content:center;padding:var(--space-8) 0;color:var(--text-muted)}.csv-error{background:var(--danger-container);color:var(--danger);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);margin-bottom:var(--space-4);font-size:var(--type-body-sm)}.csv-section{margin-bottom:var(--space-4)}.csv-section-label{display:block;font-size:var(--type-label-lg);font-weight:500;color:var(--text-muted);margin-bottom:var(--space-2)}.csv-preset-select-wrap{position:relative;max-width:260px}.csv-preset-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-2) var(--space-3);background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--type-body-sm);color:var(--text);cursor:pointer;text-align:left}.csv-preset-trigger:hover{border-color:var(--primary)}.csv-preset-placeholder{color:var(--text-muted)}.csv-preset-arrow{color:var(--text-muted);flex-shrink:0}.csv-preset-dropdown{position:absolute;bottom:calc(100% + 2px);left:0;right:0;background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:100;overflow:hidden}.csv-preset-search{width:100%;padding:var(--space-2) var(--space-3);border:none;border-bottom:1px solid var(--border-subtle);background:transparent;font-size:var(--type-body-sm);color:var(--text);outline:none}.csv-preset-options{max-height:200px;overflow-y:auto}.csv-preset-option{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--type-body-sm);cursor:pointer;color:var(--text)}.csv-preset-option:hover{background:color-mix(in srgb,var(--text) 6%,transparent)}.csv-preset-option.active{color:var(--primary);font-weight:500}.csv-preset-option-delete{background:none;border:none;color:var(--text-muted);padding:var(--space-1);cursor:pointer;display:flex;align-items:center;margin-left:auto;flex-shrink:0;opacity:0;transition:opacity var(--motion-short) var(--ease-standard)}.csv-preset-option:hover .csv-preset-option-delete{opacity:1}.csv-preset-option-delete:hover{color:var(--danger)}.csv-preset-create{color:var(--primary)}.csv-preset-empty{padding:var(--space-3);text-align:center;font-size:var(--type-body-sm);color:var(--text-muted)}.csv-delimiter-group{display:flex;gap:var(--space-1)}.csv-delim-btn{background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);padding:var(--space-1) var(--space-3);font-size:var(--type-label-lg);cursor:pointer;transition:all var(--motion-short) var(--ease-standard)}.csv-delim-btn:hover{background:var(--bg-hover)}.csv-delim-btn.active{background:var(--primary-container);border-color:var(--primary);color:var(--on-primary-container)}.csv-preview-wrap{margin-bottom:var(--space-4)}.csv-preview-label{font-size:var(--type-label-lg);color:var(--text-muted);margin-bottom:var(--space-2)}.csv-preview-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.csv-preview-table{width:100%;border-collapse:collapse;font-size:var(--type-body-sm)}.csv-preview-table th,.csv-preview-table td{padding:var(--space-2) var(--space-3);text-align:left;white-space:nowrap;border-bottom:1px solid var(--border-subtle)}.csv-preview-table th{background:var(--surface-container);font-weight:500;position:sticky;top:0}.csv-preview-table td{max-width:200px;overflow:hidden;text-overflow:ellipsis}.csv-col-idx{color:var(--text-muted);font-size:var(--type-caption-sm);margin-right:var(--space-1)}.csv-fields-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-3)}.csv-field label{display:block;font-size:var(--type-label-lg);color:var(--text-muted);margin-bottom:var(--space-1)}.csv-field select{width:100%}.csv-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}.csv-actions .btn{display:inline-flex;align-items:center;gap:var(--space-2)}.custom-date-range{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2)}.custom-date-range input{width:auto;min-width:0}.custom-date-range span{color:var(--text-muted);font-size:var(--type-label-lg);flex-shrink:0}.edit-panel-overlay{position:fixed;inset:0;background:var(--scrim);z-index:200;display:flex;align-items:flex-start;justify-content:flex-end;animation:scrim-in var(--motion-medium) var(--ease-decelerate)}.edit-panel{background:var(--surface-container);border-left:1px solid var(--border);width:360px;max-width:100vw;height:100%;overflow-y:auto;padding:var(--space-6);display:flex;flex-direction:column;gap:0;animation:panel-slide-in var(--motion-medium) var(--ease-decelerate)}@keyframes panel-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.edit-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.edit-panel-header h3{font-size:var(--type-title-md);font-weight:600}.edit-panel-close{background:none;border:none;color:var(--text-muted);font-size:var(--type-title-md);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-circle);line-height:1;width:36px;height:36px;display:flex;align-items:center;justify-content:center;transition:background var(--motion-short) var(--ease-standard)}.edit-panel-close:hover{background:color-mix(in srgb,var(--text) 8%,transparent);color:var(--text)}@media(max-width:600px){.edit-panel{width:100vw;border-left:none;border-top:1px solid var(--border);height:auto;max-height:90vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:sheet-slide-up var(--motion-medium) var(--ease-decelerate)}.edit-panel:before{content:"";display:block;width:32px;height:4px;background:var(--border);border-radius:2px;margin:0 auto var(--space-4)}.edit-panel-overlay{align-items:flex-end}}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dash-cards{display:flex;gap:var(--space-4);margin-bottom:var(--space-6)}.dash-card{flex:1;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-5) var(--space-5);background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-md)}[data-theme=light] .dash-card{border:none;box-shadow:var(--shadow-card)}.dash-card--clickable{cursor:pointer;transition:border-color var(--motion-short),box-shadow var(--motion-short)}.dash-card--clickable:hover{border-color:var(--text-muted)}[data-theme=light] .dash-card--clickable:hover{box-shadow:var(--shadow-card),0 0 0 1px var(--border)}.dash-card-label{font-size:var(--type-label-sm);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.dash-card-amount{font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.2}.dash-card-amount.income{color:var(--success)}.dash-card-amount.expense{color:var(--expense)}.dash-card-header{display:flex;align-items:center;justify-content:space-between}.dash-card-icon{color:var(--text-muted);opacity:.5;flex-shrink:0}.dash-card-icon--expense{color:var(--expense)}.dash-card-icon--income{color:var(--success)}.dash-card-sub{font-size:var(--type-caption-sm);color:var(--text-muted);margin-top:var(--space-1)}.dashboard-layout{display:flex;flex-direction:column;gap:var(--space-6)}.quick-actions-count{font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--expense);line-height:1.1}.quick-actions-label{font-size:var(--type-body-sm);color:var(--text-muted);line-height:1.4}.quick-actions-btn{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--primary-container);color:var(--on-primary-container);border:1px solid rgba(91,181,207,.25);border-radius:var(--radius-sm);font-size:var(--type-body-sm);font-weight:500;cursor:pointer;transition:background var(--motion-short);white-space:nowrap}.quick-actions-btn:hover{background:#5bb5cf40}.donut-layout{display:flex;align-items:center;justify-content:center;gap:var(--space-6)}.donut-chart-area{flex:1 1 auto;min-width:0;max-width:540px;overflow:hidden}.donut-legend{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.donut-legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--type-label-lg)}.donut-legend-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend-amount{font-variant-numeric:tabular-nums;font-weight:500;color:var(--text-muted);white-space:nowrap}.donut-legend-pct{font-size:var(--type-caption-sm);color:var(--text-muted);min-width:32px;text-align:right}.donut-legend-tag{padding-left:var(--space-6);font-size:var(--type-caption-sm);opacity:.75}.donut-legend-tag .cat-dot{width:8px!important;height:8px!important;min-width:8px}.bubble-chart-wrap{width:100%;max-width:500px;margin:0 auto}.bubble-chart{position:relative;margin:0 auto}.bubble{position:absolute;border-radius:var(--radius-circle);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--on-surface-white);text-align:center;cursor:default;padding:var(--space-2);animation:bubble-drop .5s cubic-bezier(.34,1.56,.64,1) both}.bubble:hover{filter:brightness(1.15);z-index:10}.bubble:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--surface-container-highest);border:1px solid var(--chart-tooltip-border);color:var(--text);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);font-size:var(--type-body-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--motion-short) var(--ease-standard)}.bubble:hover:after{opacity:1}@keyframes bubble-drop{0%{opacity:0;transform:translateY(-80px) scale(.6)}to{opacity:1;transform:translateY(0) scale(1)}}.bubble-name{font-size:var(--type-micro);font-weight:600;line-height:1.2;overflow:hidden;text-overflow:ellipsis;max-width:90%;white-space:nowrap}.bubble-amount{font-size:var(--type-micro);font-weight:700;margin-top:var(--space-1);white-space:nowrap}@media(max-width:600px){.donut-layout{flex-direction:column}.donut-chart-area{width:100%}.donut-legend{border-top:1px solid var(--border);padding-top:var(--space-3)}.dash-cards{flex-direction:column}.dash-card-amount{font-size:var(--type-title-lg)}}.month-nav{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.month-nav-label{font-size:var(--type-title-md);font-weight:600;color:var(--text);min-width:150px;text-align:center}.month-nav-btn{background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:var(--type-caption);transition:background var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard);flex-shrink:0}.month-nav-btn:hover{background:color-mix(in srgb,var(--primary) 8%,transparent);border-color:var(--primary);color:var(--primary)}.month-nav-all{padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:var(--type-body-sm);font-weight:500;cursor:pointer;transition:background var(--motion-short) var(--ease-standard),border-color var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard);white-space:nowrap}.month-nav-all:hover{background:color-mix(in srgb,var(--primary) 8%,transparent);border-color:var(--primary);color:var(--primary)}.month-nav-all.active{border-color:var(--primary);background:var(--primary-container);color:var(--on-primary-container)}.dir-badge{display:inline-flex;align-items:center;font-size:var(--type-label-md);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500;min-height:24px}.dir-badge.credit{background:var(--income-muted);color:var(--success)}.dir-badge.debit{background:var(--expense-muted);color:var(--expense)}.amount-hero{font-size:var(--type-headline-lg);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.rule-pattern{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:var(--type-caption);background:var(--bg-hover);padding:var(--space-1) var(--space-2);border-radius:var(--radius-xs);color:var(--text)}tr.row-selected td{background:#648fff14}.table-section-header td{background:var(--bg-hover);font-weight:600;font-size:var(--type-caption);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding:var(--space-2) var(--space-3)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.rule-group{margin-bottom:var(--space-3)}.rule-group-header{display:flex;align-items:center;gap:var(--space-2);width:100%;background:var(--surface-container);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);cursor:pointer;text-align:left;font-size:var(--type-body-sm);font-weight:500;color:var(--text);transition:background .12s}.rule-group-header:hover{background:var(--bg-hover)}.rule-group-chevron{display:flex;align-items:center;color:var(--text-muted);flex-shrink:0}.rule-group-count{margin-left:auto;font-size:var(--type-caption);color:var(--text-muted);font-weight:400}.rule-group-table{border-top-left-radius:0;border-top-right-radius:0;margin-top:0;border-top:none}.rule-match-count-link{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;color:var(--text-muted);font-variant-numeric:tabular-nums}.rule-match-count-link:hover{color:var(--text)}.rule-preview-panel{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;font-size:var(--type-body-sm)}.rule-preview-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-container);font-size:var(--type-caption);color:var(--text-muted);font-weight:500;border-bottom:1px solid var(--border);min-height:32px}.rule-preview-error{color:var(--color-danger, #e05)}.rule-preview-list{list-style:none;margin:0;padding:0}.rule-preview-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);font-size:var(--type-caption)}.rule-preview-item:last-child{border-bottom:none}.rule-preview-desc{flex:1;min-width:0;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:11px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rule-preview-meta{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0;font-variant-numeric:tabular-nums}.rule-preview-debit{color:var(--color-debit, #e05)}.rule-preview-credit{color:var(--color-credit, #2a9)}.rule-preview-date{color:var(--text-muted);font-size:11px}.rule-preview-more,.rule-preview-empty{padding:var(--space-2) var(--space-3);font-size:var(--type-caption);color:var(--text-muted);font-style:italic}.date-picker-wrap{position:relative;display:inline-block;width:100%}.date-picker-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);font-size:var(--type-body-md);border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);cursor:pointer;text-align:left;white-space:nowrap;transition:border-color var(--motion-short) var(--ease-standard);min-height:40px}[data-theme=light] .date-picker-trigger{background:var(--bg-elevated)}.date-picker-trigger:hover{border-color:color-mix(in srgb,var(--text) 60%,var(--border))}.date-picker-trigger.open{border-color:var(--primary)}.date-picker-trigger.empty span{color:var(--text-muted)}.date-picker-trigger svg{color:var(--text-muted);flex-shrink:0}.date-picker-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:300;background:var(--surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-elevated);padding:var(--space-3);min-width:240px}.date-picker-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.date-picker-nav-label{font-size:var(--type-body-sm);font-weight:600;color:var(--text)}.date-picker-nav-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard)}.date-picker-nav-btn:hover{background:var(--bg-hover);color:var(--text)}.date-picker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.date-picker-day-header{font-size:.65rem;font-weight:600;color:var(--text-muted);text-align:center;padding:var(--space-1) 0;text-transform:uppercase;letter-spacing:.04em}.date-picker-day{aspect-ratio:1;padding:2px;font-size:var(--type-body-sm)}.picker-cell.date-picker-day.today{border-color:var(--primary);color:var(--primary)}.date-picker-footer{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--border)}.date-picker-footer-btn{padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:var(--type-body-sm);cursor:pointer;transition:background var(--motion-short) var(--ease-standard),color var(--motion-short) var(--ease-standard)}.date-picker-footer-btn:hover{background:var(--bg-hover);color:var(--text)}.date-picker-footer-btn.primary{background:var(--primary-container);border-color:var(--primary);color:var(--primary);font-weight:500}.date-picker-footer-btn.primary:hover{background:var(--primary);color:var(--on-primary)}
