@font-face{font-family:"DM Serif Display";src:url(../fonts/dm-serif-display-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"DM Serif Display";src:url(../fonts/dm-serif-display-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:DM Sans;src:url(../fonts/dm-sans-300.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:DM Sans;src:url(../fonts/dm-sans-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:DM Sans;src:url(../fonts/dm-sans-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:DM Sans;src:url(../fonts/dm-sans-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}:root{--green: #16a34a;--green-light: #dcfce7;--green-dark: #14532d;--red: #dc2626;--red-light: #fee2e2;--amber: #d97706;--amber-light: #fef3c7;--blue: #2563eb;--blue-light: #dbeafe;--indigo: #6366f1;--ink: #111827;--ink-2: #374151;--ink-3: #6b7280;--ink-4: #9ca3af;--surface: #ffffff;--surface-2: #f9fafb;--surface-3: #f3f4f6;--surface-4: #e5e7eb;--border: #e5e7eb;--border-subtle: color-mix(in srgb, var(--ink-4) 30%, transparent);--success: var(--green);--success-bg: var(--green-light);--danger: var(--red);--danger-bg: var(--red-light);--warning: var(--amber);--warning-bg: var(--amber-light);--info: var(--blue);--info-bg: var(--blue-light);--primary: var(--blue);--primary-light: var(--blue-light);--neutral: var(--ink-3);--text-secondary: var(--ink-3);--blue-50: #eff6ff;--green-50: #f0fdf4;--red-50: #fef2f2;--amber-50: #fffbeb;--purple-50: #faf5ff;--bg-1: var(--surface-2);--bg-2: var(--surface-3);--chart-green: #22c55e;--chart-red: #ef4444;--chart-blue: #3b82f6;--chart-amber: #f59e0b;--chart-indigo: #6366f1;--chart-purple: #a855f7;--chart-pink: #ec4899;--chart-cyan: #06b6d4;--chart-teal: #14b8a6;--chart-orange: #f97316;--font-display: "DM Serif Display", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--font-mono: "SF Mono", Monaco, "Cascadia Code", monospace;--text-xs: .72rem;--text-sm: .8rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--space-half: .125rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 6px;--radius-md: 8px;--radius: 12px;--radius-lg: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow: 0 4px 16px rgba(0,0,0,.07), 0 1px 4px rgba(0,0,0,.04);--shadow-lg: 0 20px 48px rgba(0,0,0,.1), 0 4px 12px rgba(0,0,0,.06);--z-base: 1;--z-sticky: 10;--z-nav: 20;--z-dropdown: 30;--z-modal: 40;--z-toast: 50;--z-tooltip: 60;--transition-fast: .12s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .6, 1);--duration-micro: .1s;--duration-fast: .15s;--duration-base: .2s;--duration-emphasis: .3s;--duration-slow: .5s;--sidebar-width: 260px;--topbar-height: 60px;--content-max-width: 900px;--page-padding: var(--space-6)}html[data-theme=dark]{--ink: #f9fafb;--ink-2: #e5e7eb;--ink-3: #9ca3af;--ink-4: #6b7280;--surface: #111827;--surface-2: #0f172a;--surface-3: #1f2937;--surface-4: #374151;--border: #374151;--border-subtle: rgba(255,255,255,.08);--green: #22c55e;--green-light: #14532d;--green-dark: #86efac;--red: #f87171;--red-light: #7f1d1d;--amber: #fbbf24;--amber-light: #78350f;--blue: #60a5fa;--blue-light: #1e3a5f;--text-secondary: var(--ink-3);--blue-50: var(--blue-light);--green-50: var(--green-light);--red-50: var(--red-light);--amber-50: var(--amber-light);--purple-50: var(--blue-light);--bg-1: var(--surface-2);--bg-2: var(--surface-3);--chart-green: #4ade80;--chart-red: #f87171;--chart-blue: #60a5fa;--chart-amber: #fbbf24;--chart-indigo: #818cf8;--chart-purple: #c084fc;--chart-pink: #f472b6;--chart-cyan: #22d3ee;--chart-teal: #2dd4bf;--chart-orange: #fb923c;--shadow-sm: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--shadow: 0 4px 16px rgba(0,0,0,.4), 0 1px 4px rgba(0,0,0,.2);--shadow-lg: 0 20px 48px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.3)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-body);background:var(--surface);color:var(--ink);line-height:1.6;min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font:inherit}input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:auto 1fr;height:100vh;overflow:hidden;background:var(--surface);gap:0}.impersonation-banner{display:none;position:fixed;top:0;left:0;right:0;height:40px;background:var(--amber);color:#000;z-index:9999;align-items:center;justify-content:center;gap:var(--space-4);padding:0 var(--space-4);font-size:var(--text-sm);font-weight:500}.impersonation-banner .btn{flex:0 0 auto}body.has-impersonation-banner .app-shell{margin-top:40px;height:calc(100vh - 40px)}@media(max-width:768px){.impersonation-banner{height:auto;min-height:40px;flex-wrap:wrap;padding:var(--space-1) var(--space-2);gap:var(--space-2);text-align:center}body.has-impersonation-banner .app-shell{margin-top:0;height:100vh}body.has-impersonation-banner .topbar{margin-top:40px}}.topbar{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-8);height:var(--topbar-height);background:var(--surface);border-bottom:1px solid var(--border);z-index:var(--z-nav);position:sticky;top:0}.topbar-left{display:flex;align-items:center;gap:var(--space-2)}.topbar-logo{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink);letter-spacing:-.02em}.topbar-logo span{color:var(--green)}.topbar-user{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-base);color:var(--ink-2)}.topbar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;border-radius:var(--radius-sm);color:var(--ink-2);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.topbar-icon-btn:hover,.topbar-icon-btn:focus{background:var(--surface-2);color:var(--ink)}.topbar-icon-btn.visible{display:inline-flex}i[data-lucide]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;vertical-align:middle}.icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.avatar{width:34px;height:34px;border-radius:var(--radius-full);background:var(--green);color:var(--surface);font-weight:600;font-size:var(--text-sm);display:flex;align-items:center;justify-content:center}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:var(--space-6) var(--space-4)}.sidebar-header{display:none;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-4) var(--space-2);margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-4)) var(--space-4);border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:1}#btn-sidebar-close{display:none}.sidebar-header button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;border-radius:var(--radius-sm);color:var(--ink-2);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.sidebar{display:flex;flex-direction:column;gap:var(--space-1);grid-column:1;grid-row:2;overflow-y:auto;overflow-x:hidden;min-height:0}.sidebar-header button:hover,.sidebar-header button:focus{background:var(--surface-2);color:var(--ink)}.sidebar-overlay{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(4px);z-index:var(--z-nav);opacity:0;pointer-events:none;transition:opacity var(--duration-base) var(--ease-smooth)}.sidebar-overlay.open{opacity:1;pointer-events:all}#btn-menu-mobile,#btn-search-mobile{display:none}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;color:var(--ink-3);transition:background var(--duration-fast) var(--ease-smooth),color var(--duration-fast) var(--ease-smooth);position:relative;overflow:hidden;flex-shrink:0}.nav-item:hover{background:var(--surface-3);color:var(--ink)}.nav-item.active{background:var(--green-light);color:var(--green-dark);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:70%;background:var(--green);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.nav-item .icon{font-size:var(--text-lg);width:22px;text-align:center}.nav-item .icon svg{width:18px;height:18px}.nav-section{font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);flex-shrink:0;padding:var(--space-3) var(--space-4) var(--space-2);margin-top:var(--space-4);border-top:1px solid var(--border)}.sidebar>.nav-section:first-of-type,.sidebar>.sidebar-header+.nav-section{margin-top:0;border-top:none;padding-top:0}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-1);flex-shrink:0}.nav-item-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-xs);color:var(--ink-4)}.sidebar-legal{font-size:.72rem;color:var(--ink-4);padding:var(--space-2) var(--space-3)}.upgrade-cta{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2);border-radius:var(--radius-sm);background:var(--green-light);border:1px solid var(--green);color:var(--green-dark);font-size:var(--text-sm);font-weight:600;transition:background var(--transition-fast)}.upgrade-cta:hover{background:var(--green-50)}.sidebar-logout{display:none}.profile-menu-wrap{position:relative}.profile-chevron{color:var(--ink-4);transition:transform var(--duration-fast) var(--ease-smooth)}#btn-profile[aria-expanded=true] .profile-chevron{transform:rotate(180deg)}.profile-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:190px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--space-1);display:none;z-index:var(--z-dropdown)}.profile-menu.open{display:block}.profile-menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:none;background:none;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;color:var(--ink-2);cursor:pointer;text-align:left;transition:background var(--transition-fast),color var(--transition-fast)}.profile-menu-item:hover{background:var(--surface-2);color:var(--ink)}.profile-menu-item-danger{color:var(--red)}.profile-menu-item-danger:hover{background:var(--red-light);color:var(--red)}.main{padding:var(--space-8);overflow-y:auto;overflow-x:hidden;grid-column:2;grid-row:2;background:var(--surface);margin-top:-1px;min-height:0}.page{display:none}.page.active{display:block}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-6);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform var(--duration-base) var(--ease-smooth),box-shadow var(--duration-base) var(--ease-smooth)}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.section-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-6);box-shadow:var(--shadow-sm);margin-bottom:var(--space-6);transition:transform var(--duration-base) var(--ease-smooth),box-shadow var(--duration-base) var(--ease-smooth)}.section-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.section-card:last-child{margin-bottom:0}.section-card .section-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);gap:var(--space-3)}.section-card .section-card-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink);letter-spacing:-.01em}.section-card .section-card-subtitle{font-size:var(--text-sm);color:var(--ink-3);margin-top:var(--space-half)}.card--elevated{box-shadow:var(--shadow)}.card--elevated:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.card--floating{box-shadow:var(--shadow-lg)}.card--floating:hover{box-shadow:0 25px 56px #0000001f,0 8px 20px #00000014;transform:translateY(-4px)}@media(prefers-color-scheme:light){.card:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 1px #fff9;pointer-events:none;opacity:.5}}.card-title{font-family:var(--font-display);font-size:var(--text-xl);margin-bottom:var(--space-4);color:var(--ink);letter-spacing:-.01em}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5) var(--space-6);box-shadow:var(--shadow-sm);transition:transform var(--duration-base) var(--ease-smooth),box-shadow var(--duration-base) var(--ease-smooth);position:relative;overflow:hidden}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.stat-card:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--green),var(--blue));opacity:0;transition:opacity var(--duration-base) var(--ease-smooth)}.stat-card:hover:after{opacity:.6}.stat-label{font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);margin-bottom:var(--space-1)}.stat-value{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.03em;line-height:1.2;font-variant-numeric:tabular-nums}.stat-value.income{color:var(--success)}.stat-value.expense{color:var(--danger)}.stat-value.balance{color:var(--ink)}.stat-sub{font-size:var(--text-sm);color:var(--ink-4);margin-top:var(--space-1)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6);padding:var(--space-6);background:linear-gradient(135deg,var(--surface) 0%,var(--surface-2) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.page-title{font-family:var(--font-display);font-size:var(--text-3xl);letter-spacing:-.02em;color:var(--ink);margin-bottom:var(--space-1)}.page-subtitle{font-size:var(--text-sm);color:var(--ink-3);margin-top:var(--space-1)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);font-size:var(--text-base);font-weight:500;transition:all var(--duration-fast) var(--ease-smooth);position:relative;overflow:hidden}.btn:active{transform:scale(.98);transition-duration:var(--duration-micro)}.btn-primary{background:var(--green);color:var(--surface);box-shadow:0 1px 2px #16a34a4d}.btn-primary:hover{background:var(--green-dark);box-shadow:0 2px 4px #16a34a66}.btn-primary:active{background:#0f3d20}.btn-outline{border:1px solid var(--border);color:var(--ink-2);background:var(--surface)}.btn-outline:hover{background:var(--surface-3);border-color:var(--ink-4)}.btn-outline:active{background:var(--surface-4)}.btn-danger{background:var(--red-light);color:var(--red)}.btn-danger:hover{background:var(--red);color:var(--surface)}.btn-danger:active{background:#b91c1c}.btn-sm{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}button:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn.is-loading{position:relative;color:transparent!important;pointer-events:none}.btn.is-loading:after{content:"";position:absolute;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.tx-list{display:flex;flex-direction:column;gap:var(--space-2)}.tx-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease-smooth);position:relative;cursor:pointer}.tx-item:hover{background:var(--surface-2);border-color:var(--border-subtle);box-shadow:var(--shadow-sm);transform:translate(2px)}.tx-item.transfer{border-left:3px solid var(--indigo)}.tx-item.tx-selected{background:var(--blue-light);border-color:var(--blue);box-shadow:0 0 0 1px var(--blue),var(--shadow-sm)}.tx-list-clean{display:flex;flex-direction:column;gap:0}.tx-list-clean-card{padding:0;overflow:hidden}.tx-list-clean-card:hover{transform:none;box-shadow:var(--shadow-sm)}.tx-list-clean .tx-item{background:transparent;border:none;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none;transform:none;padding:var(--space-3) var(--space-4)}.tx-list-clean .tx-item:first-child{border-top:1px solid transparent}.tx-list-clean .tx-item:last-child{border-bottom:none}.tx-list-clean .tx-item:hover{background:var(--surface-2);border-color:var(--border);box-shadow:none;transform:none}.tx-list-clean .tx-item.tx-selected{background:var(--blue-light);box-shadow:inset 3px 0 0 0 var(--blue);border-color:var(--border)}.tx-list-clean .tx-item.transfer{border-left:none;box-shadow:inset 3px 0 0 0 var(--indigo)}.tx-icon{width:40px;height:40px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:var(--text-lg);flex-shrink:0}.tx-info{flex:1;min-width:0}.tx-desc{font-size:var(--text-base);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-cat{font-size:var(--text-xs);color:var(--ink-3)}.tx-meta{text-align:right;flex-shrink:0;pointer-events:none}.tx-amount{font-weight:600;font-size:var(--text-base);pointer-events:none}.tx-amount.income{color:var(--green)}.tx-amount.expense{color:var(--red)}.tx-date{font-size:var(--text-xs);color:var(--ink-4);pointer-events:none}.tx-nif{font-size:var(--text-xs);background:var(--blue-light);color:var(--blue);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600}.tx-non-tax{font-size:var(--text-xs);background:var(--amber-light);color:var(--amber);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600}.tx-split-badge{font-size:var(--text-xs);background:var(--amber-light);color:var(--amber);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600;margin-left:var(--space-2)}.tx-household-badge{font-size:var(--text-xs);background:var(--green-light);color:var(--green);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600;margin-left:var(--space-2);display:inline-flex;align-items:center;gap:var(--space-1)}.tx-debt-badge{font-size:var(--text-xs);background:var(--blue-light);color:var(--blue);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600;margin-left:var(--space-2);display:inline-flex;align-items:center;gap:var(--space-1)}.tx-checkbox-label{display:flex;align-items:center;cursor:pointer;flex-shrink:0;padding:var(--space-1)}.tx-row-actions{display:flex;gap:var(--space-1);flex-shrink:0;pointer-events:auto}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font-size:var(--text-sm);font-weight:600;color:var(--ink-2);margin-bottom:var(--space-1);letter-spacing:.02em}.form-section{padding:var(--space-4);background:var(--surface-2);border-radius:var(--radius-lg);border:1px solid var(--border)}.form-section-title{font-weight:600;font-size:var(--text-sm);color:var(--ink-3);text-transform:uppercase;letter-spacing:.025em;margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--border)}.form-hint{font-size:var(--text-xs);color:var(--ink-4);margin-top:var(--space-1)}.form-input{width:100%;padding:var(--space-3) var(--space-4);border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-base);color:var(--ink);background:var(--surface);transition:all var(--duration-fast) var(--ease-smooth);outline:none}.form-select{width:100%;padding:var(--space-3) var(--space-4);border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-base);color:var(--ink);background:var(--surface);transition:all var(--duration-fast) var(--ease-smooth);outline:none;cursor:pointer;appearance:none;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='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:calc(var(--space-4) + 20px)}.form-select::-ms-expand{display:none}.form-input-sm{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);line-height:1.4}.form-input:hover,.form-select:hover{border-color:var(--ink-4)}.form-input:focus{border-color:var(--green);box-shadow:0 0 0 3px #16a34a26}.form-select:focus{border-color:var(--green);box-shadow:0 0 0 3px #16a34a26}.form-input:disabled,.form-select:disabled{opacity:.55;background:var(--surface-3);cursor:not-allowed}input[type=color].form-input{height:42px;padding:var(--space-1);cursor:pointer;background:var(--surface-2)}input[type=color].form-input::-webkit-color-swatch-wrapper{padding:0}input[type=color].form-input::-webkit-color-swatch{border:none;border-radius:calc(var(--radius-sm) - 2px)}input[type=color].form-input::-moz-color-swatch{border:none;border-radius:calc(var(--radius-sm) - 2px)}.form-input.error{border-color:var(--red);background:var(--red-light)}.form-input.error:focus{box-shadow:0 0 0 3px #dc262626}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.form-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-6)}.field-error{font-size:var(--text-xs);color:var(--red);margin-top:var(--space-1);display:block}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.text-info{color:var(--info)}.text-muted{color:var(--ink-3)}.form-row--compact{margin-top:var(--space-2)}.form-group--compact{margin-bottom:0}.modal-overlay{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);opacity:0;pointer-events:none;transition:opacity var(--duration-emphasis) var(--ease-smooth)}.modal-overlay.open{opacity:1;pointer-events:all}.modal-overlay.modal-buried{pointer-events:none}.modal-overlay.modal-buried .modal{opacity:.45}.modal-overlay.open~body,body.modal-open{overflow:hidden;position:fixed;width:100%}.modal{background:var(--surface);border-radius:var(--radius-lg);max-width:90vw;width:100%;height:auto;max-height:calc(100vh - 40px);overflow:hidden;box-shadow:var(--shadow-lg);transform:scale(.96) translateY(20px);opacity:0;transition:all var(--duration-emphasis) var(--ease-out-expo);position:relative;display:flex;flex-direction:column}.modal-overlay.open .modal{transform:scale(1) translateY(0);opacity:1}.modal-title{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.01em;margin:0;padding:var(--space-4) var(--space-8) var(--space-2) var(--space-8);flex-shrink:0}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-8) var(--space-2) var(--space-8);border-bottom:1px solid var(--border);flex-shrink:0}.modal-header .modal-title{margin-bottom:0;flex:1;min-width:0;overflow:hidden}.modal-close-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--ink-3);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;margin-left:var(--space-3)}.modal-close-btn:hover{background:var(--surface-3);color:var(--ink)}.modal-close-btn:active{transform:scale(.95)}.modal-close-btn svg{pointer-events:none}.modal-body{flex:1;overflow-y:auto;padding:var(--space-4) var(--space-8) var(--space-6) var(--space-8);margin:0}.modal-body::-webkit-scrollbar{width:6px}.modal-body::-webkit-scrollbar-track{background:var(--surface-3);border-radius:3px}.modal-body::-webkit-scrollbar-thumb{background:var(--ink-4);border-radius:3px}.modal-body::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}.modal-footer{display:flex;gap:var(--space-3);justify-content:flex-end;padding:var(--space-3) var(--space-8) var(--space-4) var(--space-8);border-top:1px solid var(--border);margin-top:0;flex-shrink:0}.modal-footer .btn{min-width:80px}.modal-footer .btn:first-child{margin-left:0}.modal-footer .btn:last-child{margin-right:0}.modal-loading-content{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);text-align:center}.btn-loading-spinner{display:inline-block;width:16px;height:16px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite;margin-right:var(--space-2)}@media(max-width:640px){.modal-overlay{align-items:flex-end;padding:0}.modal{margin:0;width:100%;height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));border-radius:var(--radius-lg) var(--radius-lg) 0 0;transform:translateY(100%)}.modal-overlay.open .modal{transform:translateY(0)}.modal-header{padding:var(--space-3) var(--space-4) var(--space-2) var(--space-4)}.modal-title{font-size:var(--text-lg);padding:0}.modal-close-btn{width:36px;height:36px}.modal-body{padding:var(--space-3) var(--space-4) var(--space-4) var(--space-4);max-height:none}.modal-footer{flex-direction:row;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4) var(--space-4);border-top:1px solid var(--border)}.modal-footer .btn{flex:1;min-width:auto;padding:var(--space-3)}.modal-footer .btn:first-child{order:1}.modal-footer .btn:last-child{order:2}}@media(max-width:480px){.modal-overlay{align-items:flex-end}.modal{margin:0;width:100%;max-width:100%;height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));border-radius:var(--radius-lg) var(--radius-lg) 0 0;transform:translateY(100%)}.modal-overlay.open .modal{transform:translateY(0)}.modal-header{padding:var(--space-2) var(--space-3) var(--space-2) var(--space-3)}.modal-title{font-size:var(--text-md);padding:0}.modal-close-btn{width:32px;height:32px}.modal-body{padding:var(--space-3) var(--space-3) var(--space-4) var(--space-3);max-height:none}.modal-footer{gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-4) var(--space-3)}.modal-footer .btn{padding:var(--space-3);font-size:var(--text-sm)}}.type-toggle{display:flex;background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-1);margin-bottom:var(--space-4)}.type-toggle button{flex:1;padding:var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;color:var(--ink-3);transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.type-toggle button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.type-toggle button.active-income{background:var(--surface);color:var(--green);box-shadow:var(--shadow-sm)}.type-toggle button.active-expense{background:var(--surface);color:var(--red);box-shadow:var(--shadow-sm)}.deduction-bar{margin-bottom:var(--space-4)}.deduction-bar-header{display:flex;justify-content:space-between;font-size:var(--text-sm);margin-bottom:var(--space-1)}.deduction-bar-label{font-weight:500}.deduction-bar-value{color:var(--ink-3)}.progress-track{height:8px;background:var(--surface-3);border-radius:var(--radius-full);overflow:hidden;position:relative}.progress-track:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:shimmer 2s infinite;opacity:.3}.progress-fill{height:100%;background:var(--green);border-radius:var(--radius-full);transition:width var(--duration-slow) var(--ease-out-expo);position:relative;box-shadow:0 0 8px #16a34a66}.progress-fill:after{content:"";position:absolute;top:0;right:0;bottom:0;width:20px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3));border-radius:inherit}.progress-fill.full,.progress-fill.warning{background:var(--amber);box-shadow:0 0 8px #d9770666}.progress-fill.danger{background:var(--red);box-shadow:0 0 8px #dc262666}.tax-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-6)}.tax-item{background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4)}.tax-item-label{font-size:var(--text-xs);color:var(--ink-3);margin-bottom:var(--space-1)}.tax-item-value{font-family:var(--font-display);font-size:var(--text-xl)}.tax-item-value.highlight{color:var(--red)}.tax-item-value.ok{color:var(--green)}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--surface-2);padding:var(--space-8)}.auth-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-6)}.auth-loading-spinner{width:40px;height:40px;border:4px solid var(--border);border-top-color:var(--green);border-radius:50%;animation:auth-spin 1s linear infinite}@keyframes auth-spin{to{transform:rotate(360deg)}}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-10);width:100%;max-width:400px;box-shadow:var(--shadow)}.auth-logo{font-family:var(--font-display);font-size:var(--text-2xl);text-align:center;margin-bottom:var(--space-8);letter-spacing:-.02em}.auth-logo span{color:var(--green)}.topbar-user-btn{display:flex;align-items:center;gap:var(--space-3);background:none;border:none;cursor:pointer;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);transition:background var(--transition-fast);color:var(--ink-2);font-size:var(--text-base)}.topbar-user-btn:hover{background:var(--surface-3)}.auth-switch{text-align:center;margin-top:var(--space-5);font-size:var(--text-base);color:var(--ink-3)}.auth-switch a{color:var(--green);font-weight:500}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-base);margin-bottom:var(--space-4)}.alert-error{background:var(--red-light);color:var(--red)}.alert-success{background:var(--green-light);color:var(--green-dark)}.alert-info{background:var(--blue-light);color:var(--blue)}.alert-banner{background:var(--red-light);color:var(--red);border:1px solid var(--red);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-base)}.empty-state{text-align:center;padding:var(--space-12) var(--space-8);color:var(--ink-4);display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.empty-state-illustrated{background:linear-gradient(135deg,var(--surface-2) 0%,var(--surface-3) 100%);border-radius:var(--radius-lg);border:1px dashed var(--border);margin:var(--space-4) 0}.empty-state-icon{width:80px;height:80px;border-radius:var(--radius-full);background:var(--surface-3);display:flex;align-items:center;justify-content:center;font-size:var(--text-3xl);color:var(--ink-3);margin-bottom:var(--space-2);transition:all var(--duration-base) var(--ease-spring)}.empty-state:hover .empty-state-icon{transform:scale(1.05);background:var(--surface-4);color:var(--ink-2)}.empty-state-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink-2);margin-bottom:var(--space-2)}.empty-state-text{font-size:var(--text-base);max-width:400px;line-height:1.6}.empty-state-actions{display:flex;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;justify-content:center}.empty-state--dashboard .empty-state-icon{background:var(--green-light);color:var(--green)}.empty-state--transactions .empty-state-icon{background:var(--blue-light);color:var(--blue)}.empty-state--budgets .empty-state-icon{background:var(--amber-light);color:var(--amber)}.empty-state--investments .empty-state-icon{background:var(--indigo);color:#fff}.empty-state--goals .empty-state-icon{background:var(--purple-100, var(--surface-3));color:var(--purple-600, var(--ink-3))}.filters{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-5);flex-wrap:wrap}.filter-select{padding:var(--space-2) var(--space-3);border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--ink-2);background:var(--surface);outline:none}.filter-select:focus{border-color:var(--green)}.filter-bar-main{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap}.search-wrapper{position:relative;flex:1;min-width:280px}.search-icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--ink-4);pointer-events:none}.search-input{padding-left:calc(var(--space-3) + 20px + var(--space-2));width:100%}.search-clear{position:absolute;right:var(--space-2);top:50%;transform:translateY(-50%);background:none;border:none;color:var(--ink-4);cursor:pointer;padding:var(--space-1);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.search-clear:hover{background:var(--surface-3);color:var(--ink-2)}.sort-wrapper{display:flex;gap:var(--space-2);align-items:center}.filter-panel{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5);margin-bottom:var(--space-4);animation:slideDown var(--transition-base) ease}.filter-panel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-6)}.filter-group{display:flex;flex-direction:column;gap:var(--space-3)}.filter-group-label{font-size:var(--text-sm);font-weight:600;color:var(--ink-2);letter-spacing:.02em}.filter-presets{display:flex;flex-wrap:wrap;gap:var(--space-2)}.filter-preset{padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--ink-3);cursor:pointer;transition:all var(--transition-fast)}.filter-preset:hover{background:var(--surface-3);border-color:var(--ink-4);color:var(--ink-2)}.filter-preset.active{background:var(--blue-light);border-color:var(--blue);color:var(--blue);font-weight:500}.amount-range-hints{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.filter-radio-group{display:flex;flex-wrap:wrap;gap:var(--space-2)}.filter-radio{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--ink-3);cursor:pointer;transition:all var(--transition-fast)}.filter-radio:hover{background:var(--surface-3)}.filter-radio.active{background:var(--blue-light);border-color:var(--blue);color:var(--blue)}.filter-radio input[type=radio]{display:none}.filter-category-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:300px;overflow-y:auto;padding-right:var(--space-2)}.filter-category-group{display:flex;flex-direction:column;gap:var(--space-1)}.filter-subcategory-list{display:flex;flex-direction:column;gap:var(--space-1);padding-left:var(--space-6);border-left:2px solid var(--border);margin-left:var(--space-3)}.filter-check-item,.filter-preset{padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--ink-3);cursor:pointer;transition:all var(--transition-fast)}.filter-check-item:hover,.filter-preset:hover{background:var(--surface-3);border-color:var(--ink-4);color:var(--ink-2)}.filter-check-item.active,.filter-preset.active{background:var(--blue-light);border-color:var(--blue);color:var(--blue);font-weight:500}.filter-account-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:200px;overflow-y:auto}.filter-toggles-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.tag-filter-input-wrapper{position:relative}.active-tag-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.active-filters-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.filter-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--blue-light);color:var(--blue);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500}.filter-chip-remove{display:flex;align-items:center;justify-content:center;background:none;border:none;color:inherit;cursor:pointer;padding:2px;border-radius:var(--radius-full);opacity:.7;transition:opacity var(--transition-fast)}.filter-chip-remove:hover{opacity:1}.filter-panel-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border)}.btn-filters-active{background:var(--blue-light);border-color:var(--blue);color:var(--blue)}.filter-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--blue);color:var(--surface);border-radius:var(--radius-full);font-size:11px;font-weight:600;margin-left:var(--space-1)}.tx-results-summary-bar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--ink-3);margin-bottom:var(--space-4)}.tx-results-summary-bar span:first-child{font-weight:500;color:var(--ink-2)}#search-container{position:relative;flex:1;max-width:400px;margin:0 var(--space-8)}#global-search{width:100%;padding:var(--space-2) var(--space-4);border:1.5px solid var(--border);border-radius:var(--radius-full);background:var(--surface-2);color:var(--ink);font-size:var(--text-base);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}#global-search:focus{border-color:var(--green);box-shadow:0 0 0 3px #16a34a26}#search-results{position:absolute;top:calc(100% + var(--space-2));left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);max-height:400px;overflow-y:auto;display:none}#search-results.open{display:block}.search-section-title{font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);padding:var(--space-3) var(--space-4) var(--space-1)}.search-result-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;transition:background var(--transition-fast)}.search-result-item:hover{background:var(--surface-3)}.search-result-icon{font-size:var(--text-md);width:24px;text-align:center}.search-result-main{flex:1;font-size:var(--text-base);font-weight:500}.search-result-sub{font-size:var(--text-xs);color:var(--ink-3)}.search-result-value{font-size:var(--text-base);font-weight:600}.search-empty{padding:var(--space-6);text-align:center;color:var(--ink-4);font-size:var(--text-base)}mark{background:var(--amber-light);color:var(--amber)}.check-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-base);cursor:pointer}.check-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--green)}.weekly-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.weekly-table th,.weekly-table td{padding:var(--space-2);text-align:left;border-bottom:1px solid var(--border)}.weekly-table th{font-weight:600;color:var(--ink-2);background:var(--surface-2)}.weekly-table td{color:var(--ink)}.mini-bars{display:flex;align-items:flex-end;gap:4px;height:60px;margin-top:var(--space-2)}.mini-bar{flex:1;border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:height var(--transition-slow);min-height:2px}.mini-bar.income-bar{background:var(--green);opacity:.8}.mini-bar.expense-bar{background:var(--red);opacity:.8}.tag-pill{display:inline-block;font-size:var(--text-xs);background:var(--surface-3);color:var(--ink-3);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);margin-left:var(--space-1);font-weight:500}.currency-badge{display:inline-block;font-size:var(--text-xs);font-weight:600;background:var(--blue-light);color:var(--blue);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);vertical-align:middle;margin-left:var(--space-1)}.tx-receipt-badge{font-size:var(--text-xs);background:var(--amber-light);color:var(--amber);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px 8px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;line-height:1.4;vertical-align:middle;white-space:nowrap}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-error{background:var(--danger-bg);color:var(--danger)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-neutral{background:var(--surface-3);color:var(--ink-3)}.dm-scroll-list{max-height:16rem;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.dm-scroll-list::-webkit-scrollbar{width:6px}.dm-scroll-list::-webkit-scrollbar-track{background:transparent}.dm-scroll-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.dm-scroll-wrap{position:relative}.dm-records-modal .tx-item{cursor:default}.dm-records-modal .tx-item:hover{background:var(--surface-2);border-color:var(--border);box-shadow:none;transform:none}.dm-records-modal .dm-scroll-list{max-height:none}.dm-scroll-wrap.has-more:after{content:"";position:absolute;left:0;right:0;bottom:0;height:28px;background:linear-gradient(to bottom,transparent,rgba(15,23,42,.1));pointer-events:none}.dashboard-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6);padding:var(--space-6);background:linear-gradient(135deg,var(--surface) 0%,var(--surface-2) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.dashboard-hero-title{font-family:var(--font-display);font-size:var(--text-3xl);color:var(--ink);margin-bottom:var(--space-1);letter-spacing:-.02em}.dashboard-hero-subtitle{font-size:var(--text-sm);color:var(--ink-3)}.dashboard-section{margin-bottom:var(--space-10)}.dashboard-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.dashboard-section-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink);letter-spacing:-.01em}.dashboard-section-subtitle{font-size:var(--text-sm);color:var(--ink-3)}.stat-card{display:flex;flex-direction:column;justify-content:space-between;min-height:120px}.stat-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-5);padding-bottom:var(--space-2)}.stat-card-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius);background:var(--surface-2);color:var(--ink-3);transition:transform var(--duration-fast) var(--ease-smooth),background var(--duration-fast) var(--ease-smooth)}.stat-card:hover .stat-card-icon{transform:scale(1.05);background:var(--green-light);color:var(--green)}.stat-card-icon.income{background:var(--green-light);color:var(--green)}.stat-card-icon.expense{background:var(--red-light);color:var(--red)}.stat-card-icon.balance{background:var(--blue-light);color:var(--blue)}.stat-card-icon.warning{background:var(--amber-light);color:var(--amber)}.stat-card-icon.neutral{background:var(--surface-3);color:var(--ink-3)}.stat-card:hover .stat-card-icon.income{background:var(--green);color:#fff}.stat-card:hover .stat-card-icon.expense{background:var(--red);color:#fff}.stat-card:hover .stat-card-icon.balance{background:var(--blue);color:#fff}.stat-card:hover .stat-card-icon.warning{background:var(--amber);color:#fff}.stat-card-trend{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);font-weight:600;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--surface-2)}.stat-card-trend.up{color:var(--success);background:var(--green-light)}.stat-card-trend.down{color:var(--danger);background:var(--red-light)}.quick-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3)}.quick-action-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--ink-2);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--duration-base) var(--ease-smooth);text-decoration:none}.quick-action-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--green);color:var(--green)}.quick-action-btn svg{width:24px;height:24px}.upcoming-events-list{display:flex;flex-direction:column;gap:var(--space-3)}.upcoming-event-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius);border-left:3px solid var(--border);transition:transform var(--duration-fast) var(--ease-smooth),background var(--duration-fast) var(--ease-smooth)}.upcoming-event-item:hover{transform:translate(2px);background:var(--surface-3)}.upcoming-event-item.danger{border-left-color:var(--danger)}.upcoming-event-item.warning{border-left-color:var(--warning)}.upcoming-event-item.info{border-left-color:var(--info)}.upcoming-event-item.success{border-left-color:var(--success)}.upcoming-event-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius);background:var(--surface);flex-shrink:0}.upcoming-event-content{flex:1;min-width:0}.upcoming-event-title{font-size:var(--text-sm);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upcoming-event-meta{font-size:var(--text-xs);color:var(--ink-3);margin-top:var(--space-half)}.upcoming-event-amount{font-size:var(--text-sm);font-weight:600;color:var(--ink-2);text-align:right;flex-shrink:0}.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 50%,var(--surface-3) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}.skeleton-text{height:1em;margin-bottom:var(--space-2);border-radius:var(--radius-full)}.skeleton-title{height:1.4em;width:60%;margin-bottom:var(--space-3);border-radius:var(--radius-full)}.skeleton-card{height:120px;border-radius:var(--radius)}.skeleton-chart{height:220px;border-radius:var(--radius)}.skeleton-button{height:36px;border-radius:var(--radius-sm)}.skeleton-input{height:40px;border-radius:var(--radius-sm)}.skeleton-icon{width:40px;height:40px;border-radius:var(--radius-sm)}.skeleton-tab{height:40px;width:100px;border-radius:var(--radius-sm)}.skeleton-list-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.skeleton-list-content{flex:1}.skeleton-table-row{display:flex;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.skeleton-filters{display:flex;gap:var(--space-3);margin-bottom:var(--space-4)}.skeleton-list{margin-top:var(--space-4)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.dashboard-charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.dashboard-highlights-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-4)}.dashboard-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4)}.chart-wrapper{max-height:220px;position:relative}.chart-container{position:relative;height:100%;width:100%}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-3);font-size:var(--text-sm)}.chart-legend-item{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;transition:opacity var(--duration-fast)}.chart-legend-item:hover{opacity:.7}.chart-legend-item.hidden{opacity:.4}.chart-legend-color{width:12px;height:12px;border-radius:var(--radius-sm)}.donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.donut-center-value{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;color:var(--ink)}.donut-center-label{font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}.sparkline{display:flex;align-items:flex-end;gap:2px;height:30px}.sparkline-bar{flex:1;border-radius:1px;min-height:2px;transition:height var(--duration-slow) var(--ease-out-expo)}.sparkline-bar.positive{background:var(--chart-green)}.sparkline-bar.negative{background:var(--chart-red)}.sparkline-bar.neutral{background:var(--ink-4)}.nw-list{display:flex;flex-direction:column;gap:var(--space-2)}.nw-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.nw-icon{width:34px;height:34px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:var(--text-lg);flex-shrink:0}.nw-body{flex:1;min-width:0}.nw-title{display:flex;justify-content:space-between;font-size:var(--text-sm)}.nw-meta{font-size:var(--text-sm);color:var(--ink-4);margin-top:var(--space-1)}.nw-actions{display:flex;gap:var(--space-2)}.nw-section-title{margin:var(--space-2) 0;font-size:var(--text-base);color:var(--ink-3)}.import-tabs{display:flex;gap:var(--space-1);margin-bottom:var(--space-4);border-bottom:2px solid var(--border);padding-bottom:0;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.import-tab{padding:var(--space-2) var(--space-4);font-size:var(--text-base);font-weight:500;color:var(--ink-3);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.import-tab:hover{color:var(--ink)}.import-tab.active{color:var(--green);border-bottom-color:var(--green)}.accordion-section{border:var(--space-px) solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-4);background:var(--surface)}.accordion-header{padding:var(--space-3);cursor:pointer;user-select:none}.accordion-header:hover{background:var(--surface-2)}.accordion-content{padding:var(--space-4);border-top:var(--space-px) solid var(--border)}@media(max-width:640px){.tax-result-card{padding:var(--space-4)}.tax-result-card>div{flex-direction:column;text-align:center;gap:var(--space-2)}.tax-result-card>div>div:last-child{text-align:center}.stat-card{padding:var(--space-3)}.anexo-summary-grid,.anexo-detail-grid{grid-template-columns:1fr}.quick-actions{flex-direction:column}.quick-actions button{width:100%}}.bottom-nav{display:none}.event-week-header{font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);padding:var(--space-3) 0 var(--space-1)}.event-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-sm);transition:background var(--transition-fast)}.event-item:hover{background:var(--surface-3)}.event-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}.event-icon{font-size:var(--text-md);width:24px;text-align:center;flex-shrink:0}.event-info{flex:1;min-width:0}.event-name{font-size:var(--text-base);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-date{font-size:var(--text-xs);color:var(--ink-3)}.event-meta{text-align:right;flex-shrink:0}.event-amount{font-weight:600;font-size:var(--text-base)}.event-amount.income{color:var(--green)}.event-amount.expense{color:var(--red)}.event-source{font-size:var(--text-xs);color:var(--ink-4)}.event-source.estimate{color:var(--amber);font-style:italic}#toast-container{position:fixed;right:var(--space-6);bottom:var(--space-6);z-index:var(--z-toast);display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-3);pointer-events:none}.toast{position:relative;pointer-events:auto;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);opacity:0;transform:translate(calc(100% + var(--space-6)));transition:transform .25s ease-in,opacity .22s ease-in;font-size:var(--text-base);max-width:400px;display:flex;align-items:center;gap:var(--space-3)}.toast.show{opacity:1;transform:translate(0);transition:transform var(--duration-emphasis) var(--ease-out-expo),opacity var(--duration-emphasis) ease-out}.toast-success{background:var(--green);color:var(--surface);box-shadow:var(--shadow-lg),0 0 0 1px #16a34a4d}.toast-error{background:var(--red);color:var(--surface);box-shadow:var(--shadow-lg),0 0 0 1px #dc26264d}.toast-warning{background:var(--amber-light);color:var(--amber);border:1px solid var(--amber)}.toast-info{background:var(--blue-light);color:var(--blue);border:1px solid var(--blue)}.toast-upgrade{display:flex;align-items:center;gap:var(--space-4);background:var(--amber-light);color:var(--amber);border:1px solid var(--amber)}.toast-upgrade-btn{white-space:nowrap;font-weight:600;color:var(--amber);text-decoration:underline;background:none;border:none;cursor:pointer;font-size:var(--text-base)}.toast-undo{background:var(--ink);color:var(--surface);min-width:300px;overflow:hidden;padding-right:var(--space-2)}html[data-theme=dark] .toast-undo{background:var(--surface-3);color:var(--ink);box-shadow:var(--shadow-lg),0 0 0 1px #ffffff1a}.toast-undo-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-full);background:#ffffff24;color:var(--surface);flex-shrink:0}html[data-theme=dark] .toast-undo-icon{background:#00000014;color:var(--ink-3)}.toast-undo-message{flex:1;font-weight:500}.toast-undo-btn{white-space:nowrap;font-weight:600;color:var(--surface);background:#ffffff29;border:none;border-radius:var(--radius-full);padding:var(--space-1) var(--space-4);cursor:pointer;font-size:var(--text-sm);transition:background var(--transition-fast),transform var(--transition-fast)}.toast-undo-btn:hover{background:#ffffff42;transform:translateY(-1px)}.toast-undo-btn:active{transform:translateY(0)}html[data-theme=dark] .toast-undo-btn{color:var(--ink);background:#00000014}html[data-theme=dark] .toast-undo-btn:hover{background:#00000029}.toast-undo-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-full);background:transparent;color:var(--surface);opacity:.6;cursor:pointer;padding:0;flex-shrink:0;transition:opacity var(--transition-fast),background var(--transition-fast)}.toast-undo-close:hover{opacity:1;background:#ffffff1f}html[data-theme=dark] .toast-undo-close{color:var(--ink)}html[data-theme=dark] .toast-undo-close:hover{background:#00000014}.toast-undo-progress{position:absolute;bottom:0;left:0;height:3px;background:var(--green);width:100%;transform-origin:left;animation:toast-progress 5s linear forwards}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-link{position:absolute;top:-40px;left:0;background:var(--ink);color:var(--surface);padding:var(--space-3);z-index:var(--z-tooltip);transition:top var(--duration-fast)}.skip-link:focus{top:0}.toast-icon{width:24px;height:24px;flex-shrink:0}.stagger-list>*{opacity:0;transform:translateY(8px);animation:fadeIn var(--duration-emphasis) var(--ease-out-expo) forwards}.stagger-list>*:nth-child(1){animation-delay:0ms}.stagger-list>*:nth-child(2){animation-delay:50ms}.stagger-list>*:nth-child(3){animation-delay:.1s}.stagger-list>*:nth-child(4){animation-delay:.15s}.stagger-list>*:nth-child(5){animation-delay:.2s}.stagger-list>*:nth-child(6){animation-delay:.25s}.stagger-list>*:nth-child(7){animation-delay:.3s}.stagger-list>*:nth-child(8){animation-delay:.35s}.batch-bar{position:sticky;top:var(--topbar-height);z-index:var(--z-sticky);background:var(--ink);color:var(--surface);border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;box-shadow:var(--shadow-lg);animation:slideDown var(--transition-base) ease}.batch-bar-left{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.batch-count{font-size:var(--text-base);white-space:nowrap}.batch-bar-actions{display:flex;gap:var(--space-1);flex-wrap:wrap}.batch-bar .btn-outline{border-color:#ffffff4d;color:var(--surface);background:#ffffff1a}.batch-bar .btn-outline:hover{background:#fff3}.batch-bar .btn-danger{background:var(--red);color:var(--surface)}.batch-bar .btn-danger:hover{filter:brightness(1.1)}.batch-bar .btn-link{color:#ffffffb3}.batch-bar .btn-link:hover{color:var(--surface)}.batch-select-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--space-2)}.batch-preview-loading{font-size:var(--text-sm);color:var(--ink-3);margin-bottom:var(--space-4)}.batch-preview-box{background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4)}.batch-preview-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-sm);padding:var(--space-1) 0;border-bottom:1px solid var(--border)}.batch-preview-row:last-child{border-bottom:none}.hh-main-layout{grid-template-columns:350px 1fr}.hh-members-card{position:sticky;top:var(--space-4);max-height:calc(100vh - var(--topbar-height) - var(--space-8) - var(--space-4) - var(--space-6));overflow-y:auto}.hh-modal-grid{grid-template-columns:1fr 1fr}@media(max-width:768px){.app-shell{grid-template-columns:1fr;grid-template-rows:var(--topbar-height) 1fr}.hh-main-layout{grid-template-columns:1fr}.hh-members-card{position:static;max-height:none;overflow-y:visible}.hh-modal-grid{grid-template-columns:1fr}.sidebar{position:fixed!important;inset:0!important;width:var(--sidebar-width);max-width:85vw;z-index:var(--z-modal);transform:translate(-100%);transition:transform var(--duration-emphasis) var(--ease-out-expo);overflow-y:auto;border-right:1px solid var(--border);background:var(--surface);padding:0 var(--space-4) var(--space-6);display:flex;flex-direction:column;gap:var(--space-1);grid-column:unset!important;grid-row:unset!important}.sidebar.open{transform:translate(0)}.sidebar .nav-item{padding:var(--space-3) var(--space-4);font-size:var(--text-base)}.sidebar .nav-item-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.sidebar-logout{display:flex}.sidebar-header{display:flex;margin:0 calc(-1 * var(--space-4)) var(--space-4);padding-top:calc(var(--space-4) + env(safe-area-inset-top,0px));flex-shrink:0}#btn-sidebar-close{display:inline-flex}.main{grid-column:1;grid-row:2;padding:var(--space-4)}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:calc(var(--topbar-height) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -4px 20px #0000000d;z-index:var(--z-nav)}#toast-container{right:var(--space-4);left:var(--space-4);bottom:calc(var(--topbar-height) + env(safe-area-inset-bottom,0px) + var(--space-3))}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:var(--text-xs);font-weight:500;color:var(--ink-4);background:none;border:none;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast);padding:var(--space-1) 0;border-radius:var(--radius-sm);margin:var(--space-1)}.bottom-nav-item .icon{font-size:var(--text-xl);line-height:1}.bottom-nav-item.active{color:var(--green);background:var(--green-50)}.bottom-nav-item:active{background:var(--surface-2)}#search-container{display:none}#btn-menu-mobile,#btn-search-mobile{display:inline-flex}.topbar-logo{font-size:var(--text-lg)}.topbar-user{gap:var(--space-1)}.topbar-user-btn{padding:var(--space-1) var(--space-2)}.topbar{padding:0 var(--space-3)}#btn-logout{display:none}.btn-outline.btn-sm{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.main{padding:var(--space-3);padding-bottom:calc(var(--topbar-height) + env(safe-area-inset-bottom,0px) + var(--space-3));grid-column:1}.mobile-fab{bottom:calc(var(--topbar-height) + env(safe-area-inset-bottom,0px) + var(--space-3))}#user-name{display:none}.stats-grid{grid-template-columns:1fr 1fr;gap:var(--space-2)}.tax-summary-grid{grid-template-columns:1fr}#search-container{max-width:none;margin:0}.card{padding:var(--space-3);border-radius:var(--radius-sm)}.stat-card{padding:var(--space-3)}.main .card,.main .stat-card{scroll-margin-bottom:calc(var(--topbar-height) + env(safe-area-inset-bottom,0px) + var(--space-3))}.stat-value{font-size:var(--text-xl)}.batch-bar{flex-direction:column;align-items:flex-start;gap:var(--space-2);top:0;padding:var(--space-2) var(--space-3);margin:calc(-1 * var(--space-3)) calc(-1 * var(--space-3)) var(--space-3) calc(-1 * var(--space-3));border-radius:0}.batch-bar-actions{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:var(--space-1)}.tx-item{padding:var(--space-3);gap:var(--space-2)}.tx-icon{width:36px;height:36px;font-size:var(--text-md)}.tx-desc{font-size:var(--text-sm)}.tx-amount{font-size:var(--text-base)}.tx-row-actions{display:flex!important}.btn-delete-tx{display:flex!important;align-items:center;justify-content:center}.form-row{flex-direction:column;gap:0}.form-group{margin-bottom:var(--space-3)}.form-input,.form-select{font-size:16px}.modal{padding:var(--space-4);max-height:100vh;border-radius:0}.modal-overlay{padding:0}.modal-title{font-size:var(--text-lg)}.btn{padding:var(--space-3) var(--space-4);min-height:44px}.btn-sm{padding:var(--space-2) var(--space-3);min-height:36px}.filter-bar-main{flex-direction:column;align-items:stretch}.search-wrapper{min-width:100%}.filter-panel{padding:var(--space-4)}.filter-panel-grid{grid-template-columns:1fr;gap:var(--space-5)}.filter-toggles-grid{grid-template-columns:1fr}.tx-results-summary-bar{flex-wrap:wrap;gap:var(--space-2)}}@media(max-width:640px){html{font-size:15px}.page-title{font-size:var(--text-xl)}.page-header{flex-direction:column;align-items:flex-start;gap:var(--space-4);padding:var(--space-4)}.page-header .page-actions{width:100%}.page-header .page-actions .btn{width:100%;justify-content:center}.stats-grid,.dashboard-charts-grid,.dashboard-highlights-grid{grid-template-columns:1fr}.dashboard-highlights-grid>.card{width:100%}.dashboard-overview-grid{grid-template-columns:1fr}.dashboard-hero{flex-direction:column;align-items:flex-start;gap:var(--space-4);padding:var(--space-4)}.dashboard-hero-title{font-size:var(--text-2xl)}.quick-actions-grid{grid-template-columns:repeat(2,1fr)}.dashboard-section-header{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.upcoming-event-amount{font-size:var(--text-xs)}.report-two-col,.compare-grid,.strategy-grid,.categories-grid,.card-dates-grid{grid-template-columns:1fr}.form-actions{flex-direction:column}.form-actions .btn{width:100%}.filters{flex-direction:column;align-items:stretch;gap:var(--space-2)}.filter-select{width:100%}}.view-toggle{display:flex;background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-1);gap:var(--space-1)}.view-toggle-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:transparent;color:var(--ink-3);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.view-toggle-btn:hover{color:var(--ink-2);background:var(--surface-2)}.view-toggle-btn.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.calendar-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;color:var(--ink)}.calendar-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-4);padding:var(--space-2) 0}.legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-3)}.legend-dot{width:10px;height:10px;border-radius:50%}.legend-dot.income{background:var(--green)}.legend-dot.expense{background:var(--red)}.legend-dot.debt{background:var(--blue)}.legend-dot.reminder{background:var(--amber)}.legend-dot.goal{background:var(--primary)}.legend-dot.dividend{background:var(--success)}.legend-dot.credit_card{background:var(--warning)}.calendar-filters{display:flex;flex-wrap:wrap;gap:var(--space-4);padding:var(--space-4);border-bottom:1px solid var(--border);margin-bottom:var(--space-4)}.calendar-filters .check-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.calendar-weekday{background:var(--surface-2);padding:var(--space-2);text-align:center;font-size:var(--text-xs);font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px}.calendar-day{background:var(--surface);min-height:100px;padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-1);cursor:pointer;transition:background var(--transition-fast)}.calendar-day:hover{background:var(--surface-2)}.calendar-day.empty{background:var(--surface-3);cursor:default}.calendar-day.today{background:var(--blue-light)}.calendar-day.today .day-number{background:var(--blue);color:#fff;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:600}.calendar-day.has-events{background:var(--surface-2)}.day-number{font-size:var(--text-sm);font-weight:500;color:var(--ink-2);margin-bottom:var(--space-1)}.calendar-events{display:flex;flex-direction:column;gap:2px}.calendar-event{display:flex;align-items:center;gap:var(--space-1);padding:2px 4px;border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.income{background:var(--green-light);color:var(--green-dark)}.calendar-event.expense{background:var(--red-light);color:var(--red)}.calendar-event.debt{background:var(--blue-light);color:var(--blue)}.calendar-event.goal{background:var(--primary-light);color:var(--primary)}.calendar-event.dividend{background:var(--success-light);color:var(--success)}.calendar-event.credit_card{background:var(--warning-light);color:var(--warning)}.calendar-event.budget{background:var(--info-light);color:var(--info)}.calendar-event.tax{background:var(--danger-light);color:var(--danger)}.calendar-event.reconciliation{background:var(--warning-light);color:var(--warning)}.calendar-event.transfer{background:var(--primary-light);color:var(--primary)}.calendar-event.more{background:var(--surface-3);color:var(--ink-3);justify-content:center;cursor:pointer}.calendar-event .event-amount{font-weight:600;font-size:10px}.day-events-list{display:flex;flex-direction:column;gap:var(--space-3)}.day-event-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius-sm)}.day-event-item .event-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-md);flex-shrink:0}.day-event-item .event-info{flex:1}.day-event-item .event-name{font-weight:500;color:var(--ink);margin-bottom:2px}.day-event-item .event-source{font-size:var(--text-xs);color:var(--ink-3)}.day-event-item .event-amount{font-weight:600;font-size:var(--text-lg)}.day-event-item .event-amount.income{color:var(--green)}.day-event-item .event-amount.expense{color:var(--red)}@media(max-width:768px){.calendar-day{min-height:60px;padding:var(--space-1)}.calendar-event .event-amount{display:none}.calendar-event{padding:2px;justify-content:center}.calendar-title{font-size:var(--text-lg)}.calendar-legend{gap:var(--space-2)}.legend-item,.day-number{font-size:var(--text-xs)}}@media(max-width:480px){.calendar-day{min-height:50px}.view-toggle-btn span{display:none}}@media print{.sidebar,.topbar,.bottom-nav,.mobile-fab,.filters,.btn,.form-group,.form-row,.form-actions,#modal-tx,#modal-rec,#auth-shell{display:none!important}.app-shell{display:block!important}.main{padding:0!important}body,.main{background:var(--surface)!important;color:var(--ink)!important}.page-header .page-title:before{content:"Cofre \2014  Transa\e7\f5 es exportadas em " attr(data-print-date);display:block;font-weight:700;margin-bottom:var(--space-2)}.tx-item{border:1px solid var(--ink)!important;color:var(--ink)!important;box-shadow:none!important}.card,.page-header{border:1px solid var(--border)!important;box-shadow:none!important;break-inside:avoid;background:var(--surface)!important;padding:var(--space-3)!important}.page-header{margin-bottom:var(--space-4)!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes bounce-subtle{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slide-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn var(--duration-emphasis) var(--ease-smooth) forwards;background:var(--surface)}.fade-in-up{animation:slide-in-up var(--duration-emphasis) var(--ease-out-expo) forwards}.scale-in{animation:scale-in var(--duration-emphasis) var(--ease-spring) forwards}.slide-in-right{animation:slideInRight var(--duration-emphasis) var(--ease-out-expo) forwards}.bounce-subtle{animation:bounce-subtle var(--duration-base) var(--ease-spring)}.loading{display:flex;align-items:center;justify-content:center;padding:var(--space-8);color:var(--ink-4);font-size:var(--text-base)}:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:var(--radius-sm)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.skeleton{animation:none;background:var(--surface-3)}}.rule-card{display:flex;align-items:center;gap:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-3)}.rule-card.dragging{opacity:.5;box-shadow:var(--shadow-lg)}.rule-card-drag{cursor:grab;color:var(--ink-4);font-size:var(--text-lg);user-select:none}.rule-card-body{flex:1;min-width:0}.rule-card-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-1)}.rule-card-name{font-weight:600;font-size:var(--text-sm)}.rule-card-meta{font-size:var(--text-xs);color:var(--ink-4)}.rule-card-summary{font-size:var(--text-sm);color:var(--ink-3);display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.rule-summary-arrow{color:var(--green);font-weight:600}@media(max-width:640px){.rule-card{flex-wrap:wrap;row-gap:var(--space-2)}.rule-card-body{flex:1 1 100%;order:5}.rule-card-summary{display:block}.rule-card-summary>span{display:inline}}.toggle-switch{position:relative;display:inline-block;width:40px;height:24px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;inset:0;background:var(--surface-4);border-radius:var(--radius-full);cursor:pointer;transition:background var(--duration-base) var(--ease-spring);box-shadow:inset 0 1px 2px #0000001a}.toggle-slider:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:var(--surface);border-radius:var(--radius-full);transition:transform var(--duration-emphasis) var(--ease-spring);box-shadow:0 1px 3px #0003}.toggle-switch input:checked+.toggle-slider{background:var(--green)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(16px)}.toggle-switch input:focus-visible+.toggle-slider{outline:2px solid var(--blue);outline-offset:2px}.rule-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:var(--space-3)}.btn-link{background:none;border:none;color:var(--blue);font-size:var(--text-sm);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}.btn-link:hover{color:var(--ink-2)}.split-total-bar{display:flex;align-items:center;gap:var(--space-3);background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-base)}.split-total-label{color:var(--ink-3);font-weight:500;flex:1}.split-total-value{font-family:var(--font-display);font-size:var(--text-lg)}.split-remaining{font-size:var(--text-sm)}.split-remaining.ok{color:var(--green)}.split-remaining.over{color:var(--red)}.split-line{display:grid;grid-template-columns:1fr 1fr 100px auto;gap:var(--space-2);align-items:end;margin-bottom:var(--space-2);padding:var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.split-line-expanded{grid-template-columns:1fr}.split-line-toggle{font-size:var(--text-xs);color:var(--blue);cursor:pointer;text-decoration:underline;margin-top:var(--space-1);background:none;border:none;padding:0}@media(max-width:640px){.split-line{grid-template-columns:1fr 1fr}}.categories-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6)}.category-parent-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-3);overflow:hidden}.category-parent-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);cursor:pointer;transition:background var(--transition-fast);user-select:none}.category-parent-header:hover{background:var(--surface-3)}.category-parent-icon{width:36px;height:36px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:var(--text-md);flex-shrink:0}.category-parent-name{flex:1;font-weight:600;font-size:var(--text-sm)}.category-parent-count{font-size:var(--text-xs);color:var(--ink-4)}.category-parent-chevron{color:var(--ink-4);font-size:var(--text-xs);transition:transform var(--transition-base)}.category-parent-card.expanded .category-parent-chevron{transform:rotate(90deg)}.category-children{border-top:1px solid var(--border);display:none}.category-parent-card.expanded .category-children{display:block}.category-child-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4) var(--space-3) var(--space-8);border-bottom:1px solid var(--border);font-size:var(--text-base)}.category-child-item:last-child{border-bottom:none}.category-child-name{flex:1}.category-child-actions{display:flex;gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast)}.category-child-item:hover .category-child-actions{opacity:1}.category-parent-actions{display:flex;gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast)}.category-parent-header:hover .category-parent-actions{opacity:1}.category-system-badge{font-size:var(--text-xs);background:var(--surface-3);color:var(--ink-4);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full)}@media(max-width:768px){.categories-grid{grid-template-columns:1fr}}.location-input-row{display:flex;gap:var(--space-2);align-items:center}.location-input-row .form-input{flex:1}.location-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);background:var(--blue-light);color:var(--blue);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:500;cursor:pointer}.location-badge:hover{filter:brightness(.95)}.map-stats-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4)}.leaflet-container{font-family:var(--font-body);border-radius:var(--radius)}.leaflet-popup-content-wrapper{border-radius:var(--radius-sm);box-shadow:var(--shadow)}.leaflet-popup-content{margin:var(--space-3) var(--space-4)}.map-tx-row{border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);margin:0 calc(-1 * var(--space-2))}.map-tx-row:hover{background:var(--surface-3)}.map-marker{border:2px solid var(--surface);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;color:var(--surface);font-weight:600;font-family:var(--font-body);box-shadow:var(--shadow);cursor:pointer}@media(max-width:768px){#leaflet-map{height:300px}}.receipt-uploader{margin-bottom:var(--space-4)}.receipt-grid{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:flex-start}.receipt-thumb{position:relative;width:80px;height:80px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);flex-shrink:0;background:var(--surface-3)}.receipt-img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;transition:opacity var(--transition-fast);display:block}.receipt-img:hover{opacity:.85}.receipt-uploading{position:absolute;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;font-size:var(--text-lg)}.receipt-remove{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:var(--radius-full);background:#0009;color:var(--surface);font-size:var(--text-xs);display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;opacity:0;transition:opacity var(--transition-fast);z-index:var(--z-base)}.receipt-thumb:hover .receipt-remove{opacity:1}.receipt-size{position:absolute;bottom:0;left:0;right:0;background:#00000080;color:var(--surface);font-size:var(--text-xs);text-align:center;padding:var(--space-1) 0}.receipt-add-btn{width:80px;height:80px;border:2px dashed var(--border);border-radius:var(--radius-sm);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast);flex-shrink:0}.receipt-add-btn:hover{border-color:var(--green);background:var(--green-light)}.receipt-status{font-size:var(--text-xs);color:var(--ink-3);margin-top:var(--space-1);min-height:1rem}.lightbox-overlay{position:fixed;inset:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:var(--z-tooltip);padding:var(--space-4)}.lightbox-img{max-width:100%;max-height:85vh;border-radius:var(--radius-sm);object-fit:contain;box-shadow:var(--shadow-lg);display:block}.lightbox-close{position:absolute;top:var(--space-4);right:var(--space-4);width:40px;height:40px;border-radius:var(--radius-full);background:#ffffff26;color:var(--surface);font-size:var(--text-md);display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;transition:background var(--transition-fast)}.lightbox-close:hover{background:#ffffff4d}.lightbox-counter{position:absolute;top:var(--space-4);left:50%;transform:translate(-50%);color:#ffffffb3;font-size:var(--text-sm);pointer-events:none}.lightbox-meta{position:absolute;bottom:var(--space-4);left:50%;transform:translate(-50%);color:#ffffff80;font-size:var(--text-xs);white-space:nowrap;pointer-events:none}.lightbox-prev,.lightbox-next{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:var(--radius-full);background:#ffffff26;color:var(--surface);font-size:var(--text-xl);display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;transition:background var(--transition-fast)}.lightbox-prev:hover,.lightbox-next:hover{background:#ffffff4d}.lightbox-prev{left:var(--space-4)}.lightbox-next{right:var(--space-4)}@media(max-width:768px){.lightbox-prev{left:var(--space-1)}.lightbox-next{right:var(--space-1)}}.print-only-weekly{display:none}.period-shortcuts{display:flex;flex-wrap:wrap;gap:var(--space-2)}.period-shortcut{padding:var(--space-1) var(--space-3);border:1.5px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:500;color:var(--ink-3);background:var(--surface);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast)}.period-shortcut:hover{border-color:var(--green);color:var(--green)}.period-shortcut.active{background:var(--green);border-color:var(--green);color:var(--surface)}.report-period-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.report-period-label{font-family:var(--font-display);font-size:var(--text-xl)}.report-period-days{font-size:var(--text-sm);color:var(--ink-4)}.report-two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-top:var(--space-4)}.rvb-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);align-items:start}.compare-period-selectors{display:flex;gap:var(--space-4);align-items:flex-start;margin-bottom:var(--space-4)}.compare-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--space-4);margin-bottom:var(--space-4)}.compare-diff-card{min-width:130px;display:flex;flex-direction:column;justify-content:center}.compare-period-title{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.period-badge{width:22px;height:22px;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;flex-shrink:0}.period-badge.a{background:var(--blue-light);color:var(--blue)}.period-badge.b{background:var(--green-light);color:var(--green-dark)}.compare-metric{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--border);font-size:var(--text-base)}.compare-metric:last-child{border-bottom:none}.compare-metric-label{color:var(--ink-3)}.compare-metric-value{font-weight:600}.diff-badge{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:600}.diff-badge.up{background:var(--green-light);color:var(--green-dark)}.diff-badge.down{background:var(--red-light);color:var(--red)}.diff-badge.neutral{background:var(--surface-3);color:var(--ink-3)}@media(max-width:900px){.rvb-layout{grid-template-columns:1fr}}@media(max-width:768px){.report-two-col,.compare-grid{grid-template-columns:1fr}.compare-diff-card{min-width:unset}.compare-period-selectors{flex-direction:column}}@media(max-width:640px){.period-shortcuts{gap:var(--space-1)}.period-shortcut{padding:var(--space-1) var(--space-2);font-size:var(--text-xs)}.report-chart-with-list{flex-direction:column;align-items:center}.report-chart-with-list>div:first-child{width:100%}.report-chart-with-list>div:last-child{width:100%;max-width:200px}.page-actions{flex-direction:column;align-items:stretch}.page-actions .filter-select,.page-actions .btn{width:100%}.strategy-grid{grid-template-columns:1fr}}.import-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-10) var(--space-6);border:2px dashed var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast);background:var(--surface-2)}.import-dropzone:hover,.import-dropzone.dragover{border-color:var(--green);background:var(--green-light)}.import-dropzone-icon{font-size:var(--text-3xl)}.import-dropzone-text{font-size:var(--text-base);font-weight:500;color:var(--ink-2)}.import-dropzone-hint{font-size:var(--text-xs);color:var(--ink-4)}.tx-item-duplicate{opacity:.5}.preview-dot{width:10px;height:10px;border-radius:var(--radius-full);display:inline-block}.preview-dot.ok{background:var(--green)}.preview-dot.dup{background:var(--amber)}.cell-label{display:block;color:var(--ink-4);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}.holdings-bulk-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-bottom:none;border-radius:var(--radius) var(--radius) 0 0;background:var(--surface-2)}.holdings-bulk-bar+.holdings-table{border-top-left-radius:0;border-top-right-radius:0}.holdings-table{overflow-x:clip;border-radius:var(--radius);border:1px solid var(--border)}.holding-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.2fr) minmax(0,1.2fr) auto;gap:var(--space-2);padding:var(--space-3);align-items:center;border-bottom:1px solid var(--border);font-size:var(--text-base);background:var(--surface)}.holding-row>*{min-width:0;overflow:hidden}.holding-symbol,.holding-account{min-width:0}.holding-ticker,.holding-name,.holding-account-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dividend-row{grid-template-columns:minmax(0,2fr) minmax(0,1.4fr) minmax(0,1.1fr) minmax(0,1.2fr) auto}.crypto-row{grid-template-columns:minmax(0,2fr) minmax(0,1.2fr) minmax(0,1.2fr) auto}.holding-row:last-child{border-bottom:none}.holding-row:hover{background:var(--surface-2)}.holding-row:nth-child(2n){background:var(--surface-2)}.holding-row:nth-child(2n):hover{background:var(--surface-3)}.holding-symbol{display:flex;flex-direction:column}.holding-ticker{font-weight:700;font-size:var(--text-sm);letter-spacing:.02em;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.holding-name{font-size:var(--text-xs);color:var(--ink-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.holding-account{display:flex;align-items:center;gap:var(--space-1);min-width:0}.holding-account-name{font-size:var(--text-xs);color:var(--ink-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.quote-stale-badge{display:inline-flex;align-items:center;gap:2px;font-size:var(--text-xs);color:var(--warning);vertical-align:middle}.holding-value{font-variant-numeric:tabular-nums;font-weight:500}.holding-value.positive{color:var(--success)}.holding-value.negative{color:var(--danger)}.holding-value.neutral{color:var(--neutral)}.holding-change{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600}.holding-change.up{background:var(--success-bg);color:var(--success)}.holding-change.down{background:var(--danger-bg);color:var(--danger)}@media(max-width:768px){.holding-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-1) var(--space-3);padding:var(--space-3)}}.holdings-sortbar{display:none;justify-content:flex-end;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.holdings-sortbar label{font-size:var(--text-xs);color:var(--ink-4)}.holdings-sortbar select{font:inherit;font-size:var(--text-sm);padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--ink-1)}.tracker-head,.holding-row.tracker-row{display:grid;grid-template-columns:minmax(0,2.1fr) 104px minmax(0,1fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.2fr);gap:var(--space-3);padding-left:var(--space-3);padding-right:var(--space-3);align-items:center}.tracker-head{background:var(--surface-2);border-bottom:1px solid var(--border);padding-top:var(--space-2);padding-bottom:var(--space-2)}.holdings-bulk-bar+.holdings-table .tracker-head{border-top:none}.tracker-th{font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);background:none;border:0;cursor:pointer;text-align:left;padding:var(--space-1) 0;font-family:inherit}.tracker-th--num{text-align:right}.tracker-th--static{cursor:default}.tracker-th:hover{color:var(--ink-1)}.tracker-th:focus-visible{outline:2px solid var(--info);outline-offset:2px;border-radius:var(--radius-sm)}.tracker-th .sort-arrow{opacity:0;font-size:10px;margin-left:2px}.tracker-th[aria-sort=ascending] .sort-arrow,.tracker-th[aria-sort=descending] .sort-arrow{opacity:1}.tracker-th-cell{display:flex;align-items:center;justify-content:flex-end;gap:2px}.holding-row.tracker-row{padding-top:var(--space-2);padding-bottom:var(--space-2);min-height:60px}.holding-row.tracker-row:focus-visible{outline:2px solid var(--info);outline-offset:-2px}.holdings-body .holding-row.tracker-row:nth-child(2n){background:var(--surface-2)}.holdings-body .holding-row.tracker-row:nth-child(2n):hover{background:var(--surface-3)}.holding-row.tracker-row:nth-child(odd){background:var(--surface)}.holdings-body .holding-row.tracker-row:hover{background:var(--surface-2)}.tracker-id{display:flex;align-items:center;gap:var(--space-2);min-width:0}.tracker-id-text{display:flex;flex-direction:column;min-width:0;gap:1px}.tracker-badge{font-size:9px;font-weight:700;letter-spacing:.05em;padding:1px 5px;border-radius:var(--radius-full);background:var(--surface-3);color:var(--ink-3);border:1px solid var(--border);vertical-align:1px}.tracker-acct{font-size:10px;color:var(--ink-4);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tracker-acct svg{flex-shrink:0}.tracker-spark{display:flex;align-items:center;justify-content:center}.tracker-num{text-align:right;font-variant-numeric:tabular-nums;font-size:var(--text-sm);color:var(--ink-1)}.tracker-num strong{font-weight:600}.tracker-sub{display:block;font-size:var(--text-xs);color:var(--ink-4);font-weight:400;margin-top:1px}.tracker-empty{color:var(--ink-4)}.holding-change.flat{background:var(--surface-3);color:var(--ink-3)}.tracker-mnums,.tracker-mmeta{display:none}@media(max-width:768px){.tracker-head{display:none}.holdings-sortbar{display:flex}.holding-row.tracker-row{grid-template-columns:minmax(0,1.4fr) 76px minmax(0,1fr);grid-template-areas:"id    spark mnums" "meta  meta  meta";gap:var(--space-1) var(--space-3);padding:var(--space-3)}.tracker-id{grid-area:id}.tracker-spark{grid-area:spark;justify-content:flex-end}.tracker-cell{display:none}.tracker-mnums{grid-area:mnums;display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1)}.tracker-mprice{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-1)}.tracker-mmeta{grid-area:meta;display:flex;justify-content:space-between;gap:var(--space-2);font-size:var(--text-xs);color:var(--ink-3);margin-top:var(--space-1);font-variant-numeric:tabular-nums}.tracker-spark svg{width:72px;height:22px}}.tx-original-amount{font-size:var(--text-xs);color:var(--ink-4);text-align:right}.currency-select-option-flag{font-size:var(--text-sm);margin-right:var(--space-1)}.currency-converter-preview{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--ink-3);margin-bottom:var(--space-3)}.currency-converter-value{font-weight:600;color:var(--ink-2)}.credit-card-visual{background:linear-gradient(135deg,var(--ink) 0%,var(--ink-2) 100%);border-radius:var(--radius);padding:var(--space-5) var(--space-6);color:var(--surface);margin-bottom:var(--space-4)}.credit-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3);font-size:var(--text-sm);opacity:.7}.credit-card-balance{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.02em}.credit-card-limit{font-size:var(--text-sm);opacity:.6;margin-top:var(--space-1)}.card-dates-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-4)}.card-date-item{background:var(--surface-3);border-radius:var(--radius-sm);padding:var(--space-3)}.card-date-label{font-size:var(--text-xs);color:var(--ink-4);margin-bottom:var(--space-1)}.card-date-value{font-size:var(--text-base);font-weight:600}.card-date-days{font-size:var(--text-xs);margin-top:var(--space-1)}.strategy-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-4)}.strategy-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4)}.strategy-card.strategy-best{border-color:var(--green);background:var(--green-light)}.strategy-card.strategy-minimum{opacity:.75}.strategy-name{font-weight:600;font-size:var(--text-sm);margin-bottom:var(--space-1);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.strategy-badge{font-size:var(--text-xs);background:var(--green);color:var(--surface);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-weight:600}.strategy-metric{display:flex;justify-content:space-between;align-items:center;padding:var(--space-1) 0;border-bottom:1px solid var(--border);font-size:var(--text-sm)}.strategy-metric:last-of-type{border-bottom:none}.strategy-metric-label{color:var(--ink-3)}.strategy-metric-value{font-weight:600}@media(max-width:768px){.strategy-grid,.card-dates-grid{grid-template-columns:1fr}}.crypto-icon{width:32px;height:32px;border-radius:var(--radius-full);background:var(--amber-light);display:flex;align-items:center;justify-content:center;font-size:var(--text-md);flex-shrink:0}.crypto-search-wrapper{position:relative}.crypto-search-dropdown{position:absolute;top:calc(100% + var(--space-1));left:0;right:0;z-index:100;max-height:240px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);display:none}.crypto-search-dropdown.open{display:block}.crypto-search-result{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background var(--transition-fast);border-bottom:1px solid var(--border)}.crypto-search-result:last-child{border-bottom:none}.crypto-search-result:hover,.crypto-search-result.selected{background:var(--surface-3)}.crypto-search-result.exact-match{background:var(--success-soft)}.crypto-search-result-info{min-width:0}.crypto-search-result-main{font-weight:600;font-size:var(--text-base)}.crypto-search-result-meta{font-size:var(--text-xs);color:var(--ink-4)}.crypto-search-result-price{font-size:var(--text-sm);font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums;flex-shrink:0}.crypto-selected-price{font-size:var(--text-sm);font-weight:500;color:var(--success);font-variant-numeric:tabular-nums;white-space:nowrap}.crypto-selected-price.muted,.crypto-search-result-price.muted{color:var(--ink-4);font-weight:400}.crypto-holdings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:var(--space-3);padding:var(--space-3)}.crypto-stats-grid{grid-template-columns:1fr}@media(min-width:640px){.crypto-stats-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}}.crypto-holding-card{background:var(--surface);border:1px solid var(--border);border-radius:0;padding:var(--space-3);transition:background var(--transition-fast),box-shadow var(--transition-fast);box-shadow:var(--shadow-sm)}.crypto-holding-card:hover{background:var(--surface-2);box-shadow:var(--shadow-md)}.crypto-holding-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border)}.crypto-holding-card-identity{display:flex;align-items:center;gap:var(--space-2);min-width:0}.crypto-holding-card-actions{display:flex;gap:var(--space-1);flex-shrink:0}.crypto-holding-card-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--space-2)}.crypto-holding-card-stat{display:flex;flex-direction:column;gap:var(--space-1)}.crypto-holding-card-label{font-size:var(--text-xs);font-weight:500;color:var(--ink-4);text-transform:none;letter-spacing:0}.crypto-holding-card-value{font-size:var(--text-base);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;word-break:break-word}.crypto-holding-card-value small{display:block;font-size:var(--text-xs);font-weight:500;margin-top:var(--space-1)}.crypto-holding-exchange{font-size:var(--text-xs);color:var(--ink-4);margin-top:var(--space-1)}.crypto-search-status{padding:var(--space-3);font-size:var(--text-sm);color:var(--ink-3);text-align:center}.crypto-search-error{color:var(--danger)}.transactions-grid,.stock-transactions-grid,.crypto-transactions-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4);padding:var(--space-4)}.transaction-card,.stock-transaction-card,.crypto-transaction-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);transition:background var(--transition-fast),box-shadow var(--transition-fast);box-shadow:var(--shadow-sm)}.transaction-card:hover,.stock-transaction-card:hover,.crypto-transaction-card:hover{background:var(--surface-2);box-shadow:var(--shadow-md)}.transaction-card-header,.stock-transaction-card-header,.crypto-transaction-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--border);flex-wrap:wrap}.transaction-card-identity,.stock-transaction-card-identity,.crypto-transaction-card-identity{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.transaction-card-type,.stock-transaction-card-type,.crypto-transaction-card-type{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(--text-xs);font-weight:600;text-transform:uppercase;white-space:nowrap}.transaction-card-type.buy,.stock-transaction-card-type.buy,.crypto-transaction-card-type.buy{background:var(--green-bg, rgba(34, 197, 94, .15));color:var(--green)}.transaction-card-type.sell,.stock-transaction-card-type.sell,.crypto-transaction-card-type.sell{background:var(--red-bg, rgba(239, 68, 68, .15));color:var(--red)}.transaction-card-type.dividend,.stock-transaction-card-type.dividend,.crypto-transaction-card-type.dividend{background:var(--blue-bg, rgba(59, 130, 246, .15));color:var(--blue)}.transaction-card-body,.stock-transaction-card-body,.crypto-transaction-card-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:var(--space-4)}.transaction-card-stat,.stock-transaction-card-stat,.crypto-transaction-card-stat{display:flex;flex-direction:column;gap:var(--space-2)}.transaction-card-label,.stock-transaction-card-label,.crypto-transaction-card-label{font-size:var(--text-xs);font-weight:500;color:var(--ink-4)}.transaction-card-value,.stock-transaction-card-value,.crypto-transaction-card-value{font-size:var(--text-base);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;word-break:break-word}.transaction-card-fees,.stock-transaction-card-fees,.crypto-transaction-card-fees{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--border)}.stock-transactions-grid,.crypto-transactions-grid{gap:var(--space-2);padding:var(--space-2)}.stock-transaction-card,.crypto-transaction-card{padding:var(--space-3);border-radius:var(--radius)}.stock-transaction-card-header,.crypto-transaction-card-header{margin-bottom:var(--space-2);padding-bottom:var(--space-2)}.stock-transaction-card-body,.crypto-transaction-card-body{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:var(--space-2) var(--space-4)}.stock-transaction-card-stat,.crypto-transaction-card-stat{flex-direction:row;align-items:baseline;gap:var(--space-2)}.stock-transaction-card-label:after,.crypto-transaction-card-label:after{content:":"}.stock-transaction-card-fees,.crypto-transaction-card-fees{margin-top:var(--space-2);padding-top:var(--space-2)}.transaction-card-fees-title,.stock-transaction-card-fees-title,.crypto-transaction-card-fees-title{font-size:var(--text-xs);font-weight:600;color:var(--ink-3);text-transform:uppercase;margin-bottom:var(--space-3)}.transaction-card-notes,.stock-transaction-card-notes,.crypto-transaction-card-notes{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--border);font-size:var(--text-sm);color:var(--ink-3);font-style:italic}.broker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;margin-top:.75rem}.broker-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.85rem .5rem;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:all var(--transition-fast);text-align:center}.broker-card:hover{border-color:var(--green);box-shadow:var(--shadow-sm)}.broker-card.active{border-color:var(--green);background:var(--green-light)}.broker-logo{width:40px;height:40px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;letter-spacing:-.3px}.broker-logo-sm{width:28px;height:28px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;letter-spacing:-.2px}.broker-name{font-size:.78rem;font-weight:600;color:var(--ink-2);line-height:1.2}.broker-format{font-size:.65rem;color:var(--ink-4);background:var(--surface-3);padding:1px 6px;border-radius:99px}.broker-howto{background:var(--surface-3);border-radius:var(--radius-sm);padding:.75rem 1rem;margin-top:.75rem}@media(max-width:640px){.broker-grid{grid-template-columns:repeat(3,1fr)}}.widget-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);padding:var(--space-4);min-height:600px}.widget-grid.edit-mode{background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 10px,var(--surface-3) 10px,var(--surface-3) 20px)}.widget-cell{min-height:120px;position:relative}.widget-cell.drop-zone{border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface-3);min-height:120px}.widget-cell.drop-zone:hover{border-color:var(--green);background:var(--green-light)}.widget-cell.drop-zone.drop-target{border-color:var(--green);background:var(--green-light);transform:scale(1.02);box-shadow:0 0 0 3px var(--green)}.widget-cell .widget.dragging{opacity:.5;transform:scale(.95);box-shadow:0 4px 12px #00000026}.widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);height:100%;display:flex;flex-direction:column;overflow:hidden;transition:transform var(--duration-fast) var(--ease-smooth),box-shadow var(--duration-fast) var(--ease-smooth)}.widget:hover{box-shadow:var(--shadow-md)}.widget.dragging{opacity:.8;transform:scale(1.02);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown)}.widget-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--surface-2)}.widget-title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--ink)}.widget-title svg{width:16px;height:16px;color:var(--ink-3)}.widget-controls{display:flex;gap:var(--space-1)}.widget-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--ink-3);cursor:pointer;transition:all var(--duration-fast) var(--ease-smooth)}.widget-btn:hover{background:var(--surface-3);color:var(--ink)}.widget-btn.remove:hover{background:var(--danger-bg);color:var(--danger)}.widget-btn svg{width:14px;height:14px}.drag-handle{cursor:grab}.drag-handle:active{cursor:grabbing}.widget-content{flex:1;padding:var(--space-4);overflow:auto}.widget-loading,.widget-empty,.widget-error{display:flex;align-items:center;justify-content:center;height:100%;min-height:80px;font-size:var(--text-sm);color:var(--ink-3)}.widget-error{color:var(--danger)}.widget-toolbar{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);background:var(--surface-2);border-bottom:1px solid var(--border);margin-bottom:var(--space-4)}.widget-toolbar-title{font-size:var(--text-base);font-weight:600;color:var(--ink)}.widget-toolbar-actions{display:flex;gap:var(--space-2)}.widget-add-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);padding:var(--space-4)}.widget-add-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:all var(--duration-fast) var(--ease-smooth);position:relative}.widget-add-item:hover{border-color:var(--green);background:var(--green-light);transform:translateY(-2px)}.widget-add-item svg{width:24px;height:24px;color:var(--ink-3)}.widget-add-item:hover svg{color:var(--green)}.widget-add-item span{font-size:var(--text-sm);font-weight:500;color:var(--ink);text-align:center}.widget-add-item .widget-size{position:absolute;top:var(--space-2);right:var(--space-2);font-size:var(--text-xs);font-weight:600;color:var(--ink-3);background:var(--surface-2);padding:2px 6px;border-radius:var(--radius-sm);line-height:1}.widget-add-item:hover .widget-size{background:var(--green);color:#fff}@media(max-width:1024px){.widget-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.widget-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-3);padding:var(--space-3)}.widget-add-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.widget-grid,.widget-add-grid{grid-template-columns:1fr}.widget-span{grid-column:span 1!important;grid-row:span 1!important}}.milestones-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3);margin-top:var(--space-3)}.milestone-card{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);transition:all var(--duration-fast) var(--ease-smooth)}.milestone-card:hover{border-color:var(--amber);background:var(--amber-light);transform:translateY(-2px)}.milestone-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--amber);border-radius:var(--radius-full);color:#fff;flex-shrink:0}.milestone-icon svg{width:20px;height:20px}.milestone-content{display:flex;flex-direction:column;gap:var(--space-1)}.milestone-value{font-size:var(--text-md);font-weight:600;color:var(--ink)}.milestone-date{font-size:var(--text-sm);color:var(--ink-3)}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-3);justify-content:center;padding:var(--space-2)}.legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-2)}.legend-color{display:inline-block;width:12px;height:12px;border-radius:var(--radius-sm)}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th{padding:var(--space-2) var(--space-3);text-align:left;font-weight:600;color:var(--ink-2);background:var(--surface-3);border-bottom:1px solid var(--border);white-space:nowrap}.data-table th.text-right{text-align:right}.data-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-subtle);color:var(--ink)}.data-table td.text-right{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.data-table tr:hover td{background:var(--surface-2)}.table-cell{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-subtle)}.table-header{padding:var(--space-2) var(--space-3);text-align:left;font-weight:600;color:var(--ink-2);background:var(--surface-3);border-bottom:1px solid var(--border)}.text-right{text-align:right}@media(max-width:768px){.milestones-grid{grid-template-columns:repeat(2,1fr)}.chart-legend{gap:var(--space-2)}.legend-item{font-size:var(--text-xs)}}@media(max-width:480px){.milestones-grid{grid-template-columns:1fr}}.color-picker{display:flex;flex-direction:column;gap:var(--space-4)}.color-preview{width:100%;height:60px;border-radius:var(--radius-md);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;position:relative;transition:all .2s ease}.color-hex{font-family:monospace;font-size:var(--text-lg);font-weight:600;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5);text-transform:uppercase;background:#0000004d;padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm)}.color-sliders{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius-md);border:1px solid var(--border)}.slider-group{display:flex;flex-direction:column;gap:var(--space-1)}.slider-group label{font-size:var(--text-sm);font-weight:500;color:var(--ink-2)}.slider{-webkit-appearance:none;appearance:none;width:100%;height:8px;border-radius:var(--radius-sm);outline:none;cursor:pointer}.hue-slider{background:linear-gradient(to right,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.saturation-slider{background:linear-gradient(to right,gray,red)}.lightness-slider{background:linear-gradient(to right,#000,gray,#fff)}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:#fff;border:2px solid var(--border);box-shadow:0 2px 4px #0003;cursor:pointer;transition:transform .1s ease}.slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:2px solid var(--border);box-shadow:0 2px 4px #0003;cursor:pointer;transition:transform .1s ease}.slider::-moz-range-thumb:hover{transform:scale(1.1)}.color-palette{display:grid;grid-template-columns:repeat(8,1fr);gap:var(--space-1)}.color-swatch{width:100%;aspect-ratio:1;border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all .2s ease;position:relative;padding:0;height:32px}.color-swatch:hover{transform:scale(1.1);box-shadow:0 2px 8px #00000026}.color-swatch.selected{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface-2),0 0 0 4px var(--ink)}.color-swatch.selected:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:14px;height:14px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}.color-custom{display:flex;gap:var(--space-2);align-items:center}.color-hex-input{flex:1;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:monospace;font-size:var(--text-sm);text-transform:uppercase}.color-hex-input:focus{outline:none;border-color:var(--primary)}.notification-bell{position:relative;background:none;border:none;cursor:pointer;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--ink-2);transition:all .2s ease;display:flex;align-items:center;justify-content:center}.notification-bell:hover{background:var(--surface-3);color:var(--ink)}.notification-badge{position:absolute;top:0;right:0;background:var(--red);color:#fff;font-size:10px;font-weight:600;min-width:16px;height:16px;border-radius:8px;display:none;align-items:center;justify-content:center;padding:0 4px;transform:translate(25%,-25%)}.notification-dropdown{position:fixed;top:60px;right:var(--space-4);width:380px;max-width:90vw;max-height:80vh;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 10px 40px #00000026;z-index:1000;display:none;flex-direction:column;overflow:hidden}.notification-dropdown.open{display:flex;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.notification-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--surface-2)}.notification-header h3{margin:0;font-size:var(--text-md);font-weight:600;color:var(--ink)}.notification-header .btn-link{background:none;border:none;color:var(--blue);font-size:var(--text-sm);cursor:pointer;padding:0}.notification-header .btn-link:hover{text-decoration:underline}.notification-list{flex:1;overflow-y:auto;max-height:400px}.notification-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s ease;position:relative}.notification-item:hover{background:var(--surface-2)}.notification-item.unread{background:var(--blue-light)}.notification-item.unread:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}.notification-item.read{opacity:.8}.notification-icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--surface-3);border-radius:var(--radius-sm)}.notification-content{flex:1;min-width:0}.notification-title{font-size:var(--text-sm);font-weight:600;color:var(--ink);margin-bottom:var(--space-1);line-height:1.3}.notification-message{font-size:var(--text-sm);color:var(--ink-3);margin-bottom:var(--space-1);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notification-time{font-size:var(--text-xs);color:var(--ink-4)}.notification-action{flex-shrink:0;padding:var(--space-1) var(--space-2);background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--text-xs);cursor:pointer;text-decoration:none;transition:background .15s ease}.notification-action:hover{background:var(--blue-dark)}.notification-delete{flex-shrink:0;background:none;border:none;color:var(--ink-4);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);transition:all .15s ease;display:flex;align-items:center;justify-content:center}.notification-delete:hover{background:var(--red-light);color:var(--red)}.notification-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);color:var(--ink-3);text-align:center}.notification-empty p{margin:var(--space-3) 0 0 0;font-size:var(--text-sm)}.notification-loading,.notification-error{display:flex;align-items:center;justify-content:center;padding:var(--space-8);color:var(--ink-3);font-size:var(--text-sm)}.notification-footer{padding:var(--space-2) var(--space-4);border-top:1px solid var(--border);background:var(--surface-2);text-align:center}.notification-footer a{color:var(--blue);font-size:var(--text-sm);text-decoration:none}.notification-footer a:hover{text-decoration:underline}.recurring-list{display:flex;flex-direction:column;gap:var(--space-3)}.recurring-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4) var(--space-3) var(--space-8);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);transition:background .15s ease,border-color .15s ease;position:relative}.recurring-item:before{content:"";position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);width:.75rem;height:.75rem;border-radius:50%;background:var(--success)}.recurring-item:hover{background:var(--surface-2);border-color:var(--border-hover, var(--border))}.recurring-item.inactive{opacity:.7}.recurring-item.inactive:before{background:var(--ink-4)}.recurring-main{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0}.recurring-icon{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;background:color-mix(in srgb,var(--rec-color, var(--ink-3)) 15%,transparent);color:var(--rec-color, var(--ink));flex-shrink:0}.recurring-icon svg{width:1.125rem;height:1.125rem}.recurring-info{display:flex;flex-direction:column;gap:2px;min-width:0}.recurring-name{font-weight:600;font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recurring-meta{font-size:var(--text-xs);color:var(--ink-3)}.recurring-amount{font-weight:600;font-size:var(--text-base);margin:0 var(--space-3);white-space:nowrap}.recurring-amount.income{color:var(--success)}.recurring-amount.expense{color:var(--danger)}.recurring-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.recurring-toggle{color:var(--ink-3);transition:all .15s ease}.recurring-toggle.active{color:var(--success);background:var(--green-light);border-color:var(--green)}.recurring-toggle:hover{background:var(--surface-2)}@media(max-width:640px){.recurring-item{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.recurring-amount{margin:0}.recurring-actions{width:100%;justify-content:space-between}}.event-icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;background:color-mix(in srgb,var(--event-color, var(--ink-3)) 15%,transparent);color:var(--event-color, var(--ink));flex-shrink:0}.event-icon svg{width:1.25rem;height:1.25rem}.category-parent-icon,.category-child-icon{display:flex;align-items:center;justify-content:center;border-radius:50%;background:color-mix(in srgb,var(--cat-color, var(--ink-3)) 15%,transparent);color:var(--cat-color, var(--ink));flex-shrink:0}.category-parent-icon{width:2.5rem;height:2.5rem}.category-parent-icon svg{width:1.25rem;height:1.25rem}.category-child-icon{width:1.5rem;height:1.5rem}.category-child-icon svg{width:.875rem;height:.875rem}.btn-icon-only .btn-label{display:none}@media(max-width:640px){.notification-dropdown{width:calc(100vw - var(--space-4));right:var(--space-2);left:var(--space-2);max-width:none}.notification-item{padding:var(--space-2) var(--space-3)}.btn-icon-only .btn-label{display:inline;margin-left:var(--space-1)}}.budget-group{padding:0;overflow:hidden;margin-bottom:var(--space-4)}.budget-group-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--surface);border-left:4px solid var(--budget-color, var(--ink-3))}.budget-group-title{display:flex;align-items:center;gap:var(--space-3)}.budget-group-icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-md);background:color-mix(in srgb,var(--budget-color, var(--ink-3)) 15%,transparent);color:var(--budget-color, var(--ink))}.budget-group-icon svg{width:1.25rem;height:1.25rem}.budget-group-meta{display:flex;flex-direction:column;gap:2px}.budget-group-name{font-weight:600;font-size:var(--text-base)}.budget-group-sub{font-size:var(--text-xs);color:var(--ink-3)}.budget-group-count{font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}.budget-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-top:1px solid var(--border);transition:background .15s ease}.budget-row:hover{background:var(--surface-2)}.budget-row-sub{padding-left:var(--space-6);background:var(--surface-2)}.budget-row-main{display:flex;align-items:center;gap:var(--space-3)}.budget-row-icon{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--budget-row-color, var(--ink-3)) 12%,transparent);color:var(--budget-row-color, var(--ink))}.budget-row-icon svg{width:1.125rem;height:1.125rem}.budget-row-info{display:flex;flex-direction:column;gap:2px}.budget-row-name{font-weight:600;font-size:var(--text-sm)}.budget-row-amount{font-size:var(--text-xs);color:var(--ink-3)}.budget-row-warn{font-size:var(--text-xs)}.budget-row-actions{display:flex;align-items:center;gap:var(--space-2)}.budget-progress{width:5rem;height:var(--space-1);background:var(--surface-3);border-radius:var(--radius-full);overflow:hidden}.budget-progress-bar{height:100%;border-radius:var(--radius-full);transition:width .3s ease}.budget-quick-group{margin-bottom:var(--space-3)}.budget-quick-header{font-size:var(--text-xs);font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.budget-quick-buttons{display:flex;gap:var(--space-2);flex-wrap:wrap}.budget-quick-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-1) var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;color:var(--ink);cursor:pointer;transition:all .15s ease;line-height:1.5}.budget-quick-chip:hover{background:var(--surface-2);border-color:var(--border-hover, var(--border));transform:translateY(-1px)}.budget-quick-chip-icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:color-mix(in srgb,var(--chip-color, var(--ink-3)) 15%,transparent);color:var(--chip-color, var(--ink))}.budget-quick-chip-icon svg{width:.875rem;height:.875rem}@media(max-width:640px){.budget-row{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.budget-row-actions{width:100%;justify-content:space-between}.budget-progress{flex:1}}.announcement-banners{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem;background:var(--background, #f8fafc);z-index:1000}.announcement-banners:empty{display:none}.announcement-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.875rem 1rem;border-radius:.75rem;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 4px 6px -1px #2563eb33;animation:slideDown .25s ease-out}.announcement-banner-content{display:flex;flex-direction:column;gap:.25rem;line-height:1.4}.announcement-banner-content strong{font-weight:600;font-size:.95rem}.announcement-banner-content span{font-size:.875rem;opacity:.95}.announcement-banner-close{background:#fff3;border:none;color:#fff;border-radius:999px;width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s ease}.announcement-banner-close:hover{background:#ffffff59}@keyframes slideDown{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}@media(max-width:640px){.announcement-banners{padding:.5rem}.announcement-banner{padding:.75rem;border-radius:.5rem}}.subscription-section{margin-bottom:var(--space-6)}.subscription-section-title{font-family:var(--font-display);font-size:var(--text-lg);margin-bottom:var(--space-3);color:var(--ink)}.subscription-plans,.subscription-methods{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4)}.subscription-option{position:relative;display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color var(--transition-base),box-shadow var(--transition-base),transform var(--transition-base)}.subscription-option:hover{border-color:var(--ink-4);transform:translateY(-2px);box-shadow:var(--shadow)}.subscription-option input{position:absolute;opacity:0;pointer-events:none}.subscription-option--selected,.subscription-option:has(input:checked){border-color:var(--green);background:var(--green-light)}.subscription-option__body{flex:1;display:flex;flex-direction:column;gap:var(--space-1)}.subscription-option__title{font-weight:600;font-size:var(--text-md);color:var(--ink)}.subscription-option__price{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ink)}.subscription-option__price span{font-size:var(--text-sm);color:var(--ink-3);font-family:var(--font-body)}.subscription-option__note{font-size:var(--text-sm);color:var(--ink-3)}.subscription-option__icon{color:var(--ink-3);flex-shrink:0;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;width:80px;height:56px;background:#fff;border:1px solid var(--border);border-radius:8px}.subscription-option__icon-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.subscription-option--selected .subscription-option__icon,.subscription-option:has(input:checked) .subscription-option__icon{color:var(--green);border-color:var(--green)}.subscription-option__savings{align-self:flex-start;font-size:var(--text-xs);font-weight:600;padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);background:var(--green);color:#fff}.theme-toggle{display:inline-flex;gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border)}.theme-option{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:none;border-radius:calc(var(--radius) - 2px);background:transparent;color:var(--ink-3);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.theme-option:hover{color:var(--ink)}.theme-option.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.subscription-status{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.subscription-status__info p{margin:var(--space-1) 0 0;color:var(--ink-3);font-size:var(--text-sm)}.subscription-status__countdown{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:96px;padding:var(--space-2) var(--space-4);border-radius:var(--radius);background:var(--green-light);color:var(--green-dark);text-align:center;flex-shrink:0}.subscription-status__days{font-family:var(--font-display);font-size:var(--text-3xl);line-height:1.1}.subscription-status__unit{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.subscription-quote{padding:var(--space-4);border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border)}.subscription-quote__total{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ink);margin-bottom:var(--space-1)}.subscription-quote__breakdown{font-size:var(--text-sm);color:var(--ink-3)}.subscription-phone{margin-top:var(--space-4);max-width:320px}.subscription-checkout{margin-top:var(--space-4);width:100%;justify-content:center}.subscription-result{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius);background:var(--green-light);border:1px solid var(--green)}.subscription-result .payment-detail{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.subscription-result .payment-detail:last-child{border-bottom:none}@media(max-width:640px){.subscription-plans,.subscription-methods{grid-template-columns:1fr}.subscription-option{padding:var(--space-3)}.subscription-option__price{font-size:var(--text-xl)}.subscription-checkout{width:100%}}.pro-upsell{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-3);width:100%;max-width:none;min-height:100%;padding:var(--space-8) var(--space-6);margin:0;box-sizing:border-box}.pro-upsell__icon{color:var(--amber)}.pro-upsell__icon svg{fill:currentColor;stroke:none}.pro-upsell__title{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ink);margin:0}.pro-upsell__feature{font-size:var(--text-lg);font-weight:600;color:var(--ink);margin:0}.pro-upsell__message{font-size:var(--text-base);color:var(--ink-3);margin:0}.pro-upsell__cta{display:inline-flex;align-items:center;margin-top:var(--space-2)}.pro-badge{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;color:var(--amber);line-height:1}.pro-badge svg{fill:currentColor;stroke:none}.subscription-benefits{padding:var(--space-5);border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);margin-bottom:var(--space-6)}.subscription-benefits__description{font-size:var(--text-sm);color:var(--ink-3);margin:var(--space-1) 0 var(--space-4)}.subscription-benefits__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-2) var(--space-4);list-style:none;padding:0;margin:0}.subscription-benefits__list li{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-2);line-height:1.4}.subscription-benefits__check{color:var(--green);flex-shrink:0;margin-top:2px}@media(max-width:640px){.pro-upsell{padding:var(--space-6) var(--space-4);margin:var(--space-4) 0}.subscription-benefits__list{grid-template-columns:1fr}}.info-tip{display:inline-flex;vertical-align:middle;margin-left:var(--space-1)}.info-tip-btn{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;border:none;border-radius:var(--radius-full);background:transparent;color:var(--ink-4);cursor:help;transition:color .15s ease}.info-tip-btn:hover,.info-tip-btn:focus-visible,.info-tip.is-open .info-tip-btn{color:var(--ink-2)}.info-tip-pop{position:fixed;top:0;left:0;width:max-content;max-width:min(17rem,calc(100vw - 2 * var(--space-2)));padding:var(--space-2) var(--space-3);background:var(--ink);color:var(--bg-1);font-family:var(--font-body);font-size:var(--text-sm);font-weight:400;font-style:normal;letter-spacing:normal;text-transform:none;line-height:1.5;text-align:left;white-space:normal;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease;z-index:var(--z-tooltip)}.info-tip-pop.is-open{opacity:1;visibility:visible;pointer-events:auto}@media(max-width:768px){.info-tip-pop{max-width:calc(100vw - 2 * var(--space-4))}}.help-section{margin-bottom:var(--space-4)}.help-section:last-child{margin-bottom:0}.help-item{border-bottom:1px solid var(--border)}.help-item:last-child{border-bottom:none}.help-item summary{padding:var(--space-3) var(--space-2);cursor:pointer;font-weight:500;font-size:var(--text-sm);color:var(--ink);list-style:none;display:flex;align-items:center;gap:var(--space-2)}.help-item summary:before{content:"\203a";color:var(--ink-4);transition:transform var(--transition-fast);flex-shrink:0}.help-item[open] summary:before{transform:rotate(90deg)}.help-item summary:hover{color:var(--primary)}.help-item-body{padding:0 var(--space-2) var(--space-3) calc(var(--space-2) + var(--space-4));font-size:var(--text-sm);color:var(--ink-3);line-height:1.5}.onboarding-card{padding:var(--space-6);max-width:42rem;margin:0 auto}.onboarding-progress{margin-bottom:var(--space-5)}.onboarding-progress-label{font-size:var(--text-xs);color:var(--ink-4);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-2)}.onboarding-progress-bar{height:4px;background:var(--surface-3);border-radius:var(--radius-full, 999px);overflow:hidden}.onboarding-progress-fill{height:100%;background:var(--primary);border-radius:inherit;transition:width var(--transition-normal, .25s ease)}.onboarding-step{text-align:center;padding:var(--space-4) 0 var(--space-5)}.onboarding-step-icon{width:56px;height:56px;margin:0 auto var(--space-3);border-radius:50%;background:var(--surface-3);color:var(--primary);display:flex;align-items:center;justify-content:center}.onboarding-step-icon-done{background:var(--success-bg, var(--surface-3));color:var(--success)}.onboarding-step-desc{color:var(--ink-3);font-size:var(--text-sm);margin-top:var(--space-2);max-width:30rem;margin-left:auto;margin-right:auto;line-height:1.5}.onboarding-actions{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap}.search-result-item.active{background:var(--surface-3)}.search-result-item.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green)}.search-result-item{position:relative}.search-hint{padding:var(--space-2) var(--space-4);font-size:var(--text-xs);color:var(--ink-4);border-top:1px solid var(--border-subtle);text-align:right}#search-overlay{position:fixed;inset:0;background:#00000073;z-index:400;display:none}#search-overlay.open{display:block}.search-overlay-inner{max-width:640px;margin:10vh auto 0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-4);max-height:75vh;overflow-y:auto}.search-overlay-bar{display:flex;gap:var(--space-2);align-items:center}#overlay-search{flex:1;padding:var(--space-3) var(--space-4);border:1.5px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2);color:var(--ink);font-size:var(--text-base);outline:none}#overlay-search:focus{border-color:var(--green)}#overlay-results{margin-top:var(--space-3)}.search-flash{outline:2px solid var(--green)!important;outline-offset:2px;border-radius:var(--radius-md)}
