@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
:root{--primary:#4f46e5;--primary-light:#818cf8;--primary-dark:#3730a3;--primary-50:#eef2ff;--primary-100:#e0e7ff;--accent:#06b6d4;--success:#10b981;--success-light:#d1fae5;--success-dark:#065f46;--warning:#f59e0b;--warning-light:#fef3c7;--warning-dark:#92400e;--danger:#ef4444;--danger-light:#fee2e2;--danger-dark:#991b1b;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--surface:#fff;--background:#f0f2f5;--radius-sm:.375rem;--radius:.75rem;--radius-lg:1rem;--radius-xl:1.25rem;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.06);--shadow-md:0 4px 6px -1px rgba(0,0,0,.08),0 2px 4px -1px rgba(0,0,0,.04);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.08),0 10px 10px -5px rgba(0,0,0,.03);--transition:150ms cubic-bezier(.4,0,.2,1);--transition-slow:300ms cubic-bezier(.4,0,.2,1)}
[data-theme="dark"]{--primary:#818cf8;--primary-light:#a5b4fc;--primary-dark:#6366f1;--primary-50:rgba(99,102,241,.1);--primary-100:rgba(99,102,241,.15);--accent:#22d3ee;--success:#34d399;--success-light:rgba(52,211,153,.15);--success-dark:#6ee7b7;--warning:#fbbf24;--warning-light:rgba(251,191,36,.15);--warning-dark:#fcd34d;--danger:#f87171;--danger-light:rgba(248,113,113,.15);--danger-dark:#fca5a5;--gray-50:#1a1d23;--gray-100:#1f2937;--gray-200:#374151;--gray-300:#4b5563;--gray-400:#9ca3af;--gray-500:#d1d5db;--gray-600:#e5e7eb;--gray-700:#374151;--gray-800:#f3f4f6;--gray-900:#f9fafb;--surface:#1f2937;--background:#111827;--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow:0 1px 3px rgba(0,0,0,.4),0 1px 2px rgba(0,0,0,.3);--shadow-md:0 4px 6px -1px rgba(0,0,0,.4),0 2px 4px -1px rgba(0,0,0,.2);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.5),0 10px 10px -5px rgba(0,0,0,.3)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--background);color:var(--gray-800);line-height:1.6}
/* -- App Shell: Sidebar Layout -- */
.app{display:flex;min-height:100vh}
.sidebar{width:13.5rem;background:var(--gray-900);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:width var(--transition-slow);overflow:hidden}
.sidebar-brand{display:flex;align-items:center;gap:.5rem;padding:1rem 1.1rem;text-decoration:none;color:#fff;border-bottom:1px solid var(--gray-700)}
.sidebar-brand .logo-icon{width:2rem;height:2rem;border-radius:.5rem;flex-shrink:0}
.sidebar-brand span{font-size:.95rem;font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.sidebar-nav{flex:1;overflow-y:auto;padding:.5rem 0;scrollbar-width:thin;scrollbar-color:var(--gray-700) transparent}
.sidebar-nav::-webkit-scrollbar{width:4px}
.sidebar-nav::-webkit-scrollbar-thumb{background:var(--gray-700);border-radius:2px}
.sidebar-section{padding:.3rem .55rem;margin-top:.3rem}
.sidebar-section-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--gray-500);padding:0 .6rem .3rem;white-space:nowrap}
.sidebar-link{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;border-radius:var(--radius-sm);color:var(--gray-400);text-decoration:none;font-size:.8rem;font-weight:500;white-space:nowrap;transition:all var(--transition);cursor:pointer;background:none;border:none;width:100%;text-align:left;font-family:inherit}
.sidebar-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.sidebar-link.active{color:#fff;background:rgba(99,102,241,.2)}
.sidebar-link svg{width:1rem;height:1rem;flex-shrink:0;opacity:.65}
.sidebar-link.active svg{opacity:1}
.sidebar-link:hover svg{opacity:1}
.sidebar-divider{height:1px;background:var(--gray-700);margin:.4rem .55rem}
.sidebar-footer{border-top:1px solid var(--gray-700);padding:.65rem}
.sidebar-user{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;border-radius:var(--radius-sm);transition:all var(--transition);cursor:pointer;width:100%;background:none;border:none;font-family:inherit;color:var(--gray-400);text-align:left}
.sidebar-user:hover{background:rgba(255,255,255,.08);color:#fff}
.sidebar-user-name{font-size:.85rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-menu{position:absolute;bottom:4.5rem;left:.65rem;right:.65rem;background:var(--gray-900);border:1px solid var(--gray-700);border-radius:var(--radius-sm);box-shadow:var(--shadow-xl);padding:.25rem 0;z-index:160}
.sidebar-user-menu-link{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;color:var(--gray-400);padding:.5rem .75rem;font-size:.82rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--transition);text-align:left;text-decoration:none;white-space:nowrap}
.sidebar-user-menu-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.sidebar-user-menu-link.danger:hover{color:var(--danger);background:rgba(239,68,68,.1)}
.sidebar-user-menu-divider{height:1px;background:var(--gray-700);margin:.25rem 0}
.sidebar-actions{display:flex;align-items:center;gap:.35rem;padding:.35rem .65rem .5rem}
.sidebar-icon-btn{background:transparent;border:1px solid var(--gray-700);color:var(--gray-400);padding:.35rem;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center;line-height:1}
.sidebar-icon-btn:hover{color:#fff;border-color:var(--gray-500)}
.sidebar-badge{background:var(--danger);color:#fff;font-size:.6rem;font-weight:700;min-width:.85rem;height:.85rem;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;padding:0 .15rem;line-height:1;margin-left:auto}
.sidebar-backdrop{display:none}
.app-main{flex:1;margin-left:13.5rem;display:flex;flex-direction:column;min-height:100vh;transition:margin-left var(--transition-slow)}
/* Top-bar (legacy compat — kept for mobile header) */
.top-bar{background:var(--gray-900);color:#fff;padding:0 1.25rem;display:none;align-items:center;height:3.25rem;position:sticky;top:0;z-index:100}
.app-title{font-size:1rem;font-weight:700;white-space:nowrap;text-decoration:none;color:#fff;display:flex;align-items:center;gap:.5rem;margin-right:auto;letter-spacing:-.02em}
.app-title .logo-icon{width:1.75rem;height:1.75rem;border-radius:.5rem;flex-shrink:0}
.top-nav{display:flex;gap:.125rem;flex:1;align-items:center}
.nav-link{color:var(--gray-400);text-decoration:none;padding:.5rem .85rem;border-radius:var(--radius-sm);transition:all var(--transition);font-size:.875rem;font-weight:500;white-space:nowrap}
.nav-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-link.active{color:#fff;background:rgba(255,255,255,.12)}
.nav-group{position:relative}
.nav-group-btn{background:none;border:none;color:var(--gray-400);padding:.5rem .85rem;border-radius:var(--radius-sm);transition:all var(--transition);font-size:.875rem;font-weight:500;white-space:nowrap;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:.25rem}
.nav-group-btn:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-group-btn.active{color:#fff;background:rgba(255,255,255,.12)}
.nav-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:149}
.nav-dropdown{position:absolute;top:100%;left:0;margin-top:.25rem;background:var(--gray-900);border:1px solid var(--gray-700);border-radius:var(--radius-sm);box-shadow:var(--shadow-xl);z-index:150;min-width:180px;padding:.25rem 0}
.nav-dropdown-right{left:auto;right:0}
.nav-dropdown-link{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;color:var(--gray-400);padding:.5rem .85rem;font-size:.85rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--transition);text-align:left;text-decoration:none;white-space:nowrap}
.nav-dropdown-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-dropdown-link.active{color:var(--primary-light);background:rgba(79,70,229,.15)}
.nav-dropdown-divider{height:1px;background:var(--gray-700);margin:.25rem 0}
.nav-dropdown-logout{color:var(--gray-400)}
.nav-dropdown-logout:hover{color:var(--danger);background:rgba(239,68,68,.1)}
.user-section{margin-left:auto;display:flex;align-items:center;gap:.5rem;white-space:nowrap}
.user-menu-btn{border:1px solid var(--gray-700);padding:.35rem .7rem;border-radius:var(--radius-sm)}
.lang-picker{position:relative}
.lang-picker-btn{background:transparent;color:var(--gray-400);border:1px solid var(--gray-700);padding:.3rem .6rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.78rem;font-weight:600;transition:all var(--transition);font-family:inherit;display:flex;align-items:center;gap:.3rem;white-space:nowrap}
.lang-picker-btn:hover{color:#fff;border-color:var(--gray-500)}
.picker-arrow{font-size:.6rem;margin-left:.15rem}
.lang-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:199}
.lang-dropdown{position:absolute;top:100%;right:0;margin-top:.35rem;background:var(--gray-900);border:1px solid var(--gray-700);border-radius:var(--radius-sm);box-shadow:var(--shadow-xl);z-index:200;min-width:160px;max-height:320px;overflow-y:auto;padding:.25rem 0}
.lang-option{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;color:var(--gray-400);padding:.4rem .75rem;font-size:.8rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all var(--transition);text-align:left}
.lang-option:hover{color:#fff;background:rgba(255,255,255,.08)}
.lang-option.active{color:#fff;background:var(--primary)}
.lang-flag{font-size:1rem;line-height:1}
.auth-lang-picker{position:fixed;top:1rem;right:1.5rem;z-index:100}
.main-content{flex:1;padding:1rem 1.5rem;max-width:1280px;margin:0 auto;width:100%}
.auth-page{display:flex;align-items:stretch;min-height:100vh;padding:0;background:var(--background)}
.app-footer{text-align:center;padding:1.25rem;color:var(--gray-400);font-size:.8rem;border-top:1px solid var(--gray-200)}
/* -- Environment Banner -- */
.env-banner{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.4rem 1rem;background:linear-gradient(90deg,#e65100,#f57c00);color:#fff;font-size:.8rem;text-align:center;font-weight:600;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.env-banner-icon{font-weight:800;font-size:.85rem;background:rgba(0,0,0,.2);padding:.1rem .45rem;border-radius:.25rem;line-height:1}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;gap:1rem}
.page-header h2{font-size:1.125rem;font-weight:700;color:var(--gray-900);letter-spacing:-.02em;margin:0}
.auth-container{width:100%;max-width:420px}
.auth-card{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);padding:2.5rem}
.auth-header{text-align:center;margin-bottom:2rem}
.auth-logo{width:3.5rem;height:3.5rem;border-radius:var(--radius-lg);margin:0 auto 1rem;box-shadow:0 8px 16px rgba(79,70,229,.3)}
.auth-header h2{font-size:1.3rem;font-weight:700;color:var(--gray-900);margin-bottom:.25rem}
.auth-header p{color:var(--gray-500);font-size:.9rem;margin:0}
.auth-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0;color:var(--gray-400);font-size:.8rem}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--gray-200)}
.demo-btn{width:100%;padding:.7rem;border:2px dashed var(--primary-100);background:var(--primary-50);border-radius:var(--radius);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.9rem;font-weight:600;color:var(--primary);transition:all var(--transition);font-family:inherit}
.demo-btn:hover{background:var(--primary-100);border-color:var(--primary-light)}
.demo-btn:disabled{opacity:.6;cursor:not-allowed}
.demo-btn .demo-sub{font-weight:400;font-size:.8rem;color:var(--gray-500)}
.auth-link{display:block;margin-top:1.5rem;text-align:center;color:var(--gray-500);font-size:.85rem}
.auth-link a{color:var(--primary);text-decoration:none;font-weight:600}
.auth-link a:hover{text-decoration:underline}
/* -- Auth Split-Screen Layout -- */
.auth-split{display:flex;min-height:100vh;width:100%}
.auth-panel{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2.5rem;background:linear-gradient(160deg,#1e1b4b 0%,var(--gray-900) 50%,#0c1222 100%);color:#fff;position:relative;overflow:hidden}
.auth-panel::before{content:'';position:absolute;top:-20%;right:-15%;width:50%;height:80%;background:radial-gradient(circle,rgba(99,102,241,.12) 0%,transparent 70%);border-radius:50%}
.auth-panel-content{max-width:380px;position:relative;z-index:1}
.auth-panel-logo{width:3.5rem;height:3.5rem;border-radius:var(--radius-lg);margin-bottom:1.75rem;box-shadow:0 8px 24px rgba(99,102,241,.35)}
.auth-panel h2{font-size:1.5rem;font-weight:800;margin-bottom:.65rem;letter-spacing:-.03em;line-height:1.2}
.auth-panel p{color:rgba(255,255,255,.65);font-size:.95rem;line-height:1.6;margin-bottom:2rem}
.auth-trust-list{list-style:none;display:flex;flex-direction:column;gap:.85rem}
.auth-trust-item{display:flex;align-items:center;gap:.75rem;font-size:.88rem;color:rgba(255,255,255,.8)}
.auth-trust-icon{width:2rem;height:2rem;border-radius:.5rem;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.auth-trust-icon svg{width:1rem;height:1rem;stroke:var(--primary-light)}
.auth-form-side{flex:1;display:flex;align-items:center;justify-content:center;padding:2.5rem;background:var(--background)}
.auth-form-wrapper{width:100%;max-width:400px}
.auth-form-header{margin-bottom:2rem}
.auth-form-header h2{font-size:1.3rem;font-weight:700;color:var(--gray-900);margin-bottom:.25rem;letter-spacing:-.02em}
.auth-form-header p{color:var(--gray-500);font-size:.9rem;margin:0}
.auth-demo-link{display:flex;align-items:center;gap:.5rem;padding:.6rem .85rem;border:1px solid var(--gray-200);border-radius:var(--radius);background:var(--surface);color:var(--gray-700);font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition);font-family:inherit;width:100%;text-align:left}
.auth-demo-link:hover{border-color:var(--primary-light);background:var(--primary-50);color:var(--primary)}
.auth-demo-link:disabled{opacity:.6;cursor:not-allowed}
.auth-demo-link .demo-sub{color:var(--gray-400);font-size:.8rem;margin-left:auto}
/* -- Email Confirmation Box (extracted inline styles) -- */
.email-confirm-box{background:#fefce8;border:1px solid #fde68a;border-radius:var(--radius);padding:1rem;margin-bottom:1rem;text-align:center}
.email-confirm-box p{margin:0 0 .75rem}
.email-confirm-text{color:#92400e;font-size:.9rem}
.email-confirm-success{color:var(--success);margin-top:.5rem;font-size:.85rem}
.email-confirm-hero{padding:2rem 0;text-align:center}
.email-confirm-hero h3{margin:.5rem 0}
.email-confirm-desc{color:var(--gray-500);margin-top:.5rem}
.email-confirm-resent{color:var(--success);margin-top:.75rem;font-size:.9rem}
/* -- Terms / Checkbox row (extracted inline styles) -- */
.terms-row{display:flex;align-items:flex-start;gap:.5rem}
.terms-row input[type="checkbox"]{margin-top:.25rem;flex-shrink:0}
.terms-row label{font-size:.85rem;line-height:1.4;font-weight:normal;cursor:pointer}
.terms-error{color:var(--danger);font-size:.85rem;margin-top:-.5rem;margin-bottom:.5rem}
/* -- Layout helpers (extracted inline styles) -- */
.flex-between{display:flex;align-items:center;justify-content:space-between}
.page-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.mt-1{margin-top:1rem}
.mb-1{margin-bottom:1rem}
.text-center{text-align:center}
/* -- Dashboard hero metric -- */
.dash-hero{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1.25rem;padding:1.15rem 1.25rem;background:linear-gradient(135deg,var(--primary-50),rgba(6,182,212,.06));border:1px solid var(--primary-100);border-radius:var(--radius-lg)}
.dash-hero-metric{display:flex;flex-direction:column;gap:.15rem}
.dash-hero-label{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--gray-500)}
.dash-hero-value{font-size:1.15rem;font-weight:800;color:var(--gray-900);letter-spacing:-.03em;line-height:1.2}
.dash-hero-value.positive{color:var(--success-dark)}
.dash-hero-value.negative{color:var(--danger)}
.dash-hero-sub{font-size:.8rem;color:var(--gray-500);font-weight:500}
/* -- Category detail & trend row (extracted inline styles) -- */
.category-nav-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}
.category-nav-header h3{margin:0}
.category-bar-item{cursor:pointer}
.category-detail-panel{padding:.5rem 1rem;margin-bottom:.5rem;background:var(--surface-alt,#f9f9f9);border-radius:6px}
.category-detail-panel .data-table{margin:0}
.trend-row{cursor:pointer}
.trend-row-selected{background:var(--primary-50);font-weight:600}
/* -- Page transition -- */
.page-transition{animation:pageIn .25s ease-out}
@keyframes pageIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--gray-200);padding:1.1rem;box-shadow:var(--shadow-sm);margin-bottom:1rem;transition:all var(--transition)}
.card:hover{box-shadow:var(--shadow)}
.card h3{font-size:1rem;font-weight:600;color:var(--gray-900);margin:0 0 1rem;display:flex;align-items:center;gap:.5rem}
.card h4{font-size:.9rem;font-weight:600;color:var(--gray-800);margin-bottom:.75rem}
.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem;margin-bottom:1rem}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;margin-bottom:1.5rem}
.stat-card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--gray-200);padding:1.1rem;display:flex;align-items:stretch;gap:.85rem;transition:all var(--transition);overflow:hidden;position:relative}
.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.stat-accent{width:.25rem;border-radius:var(--radius-full);flex-shrink:0;align-self:stretch}
.stat-info{flex:1;min-width:0}
.stat-info .stat-label{font-size:.75rem;color:var(--gray-500);text-transform:uppercase;letter-spacing:.04em;font-weight:600;margin-bottom:.125rem}
.stat-info .stat-value{font-size:1.05rem;font-weight:700;color:var(--gray-900);letter-spacing:-.02em}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:.55rem 1rem;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:.85rem;font-weight:600;transition:all var(--transition);text-decoration:none;gap:.35rem;font-family:inherit;line-height:1.4}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px 2px rgba(79,70,229,.3)}
.btn-primary:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 2px 4px rgba(79,70,229,.35)}
.btn-secondary{background:var(--surface);color:var(--gray-700);border-color:var(--gray-300)}
.btn-secondary:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-400)}
.btn-danger{background:var(--danger);color:#fff}
.btn-danger:hover:not(:disabled){background:var(--danger-dark)}
.btn-success{background:var(--success);color:#fff}
.btn-sm,.btn-small{padding:.3rem .6rem;font-size:.78rem}
.btn-lg{padding:.7rem 1.75rem;font-size:.95rem}
.btn-full{width:100%}
.form-card{max-width:640px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.form-group{margin-bottom:.85rem}
.form-group label{display:block;font-weight:600;font-size:.8rem;margin-bottom:.3rem;color:var(--gray-700)}
.form-input,.form-group input,.form-group select,.form-group textarea{width:100%;padding:.55rem .75rem;border:1px solid var(--gray-300);border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;transition:all var(--transition);background:var(--surface);color:var(--gray-800)}
.form-input:focus,.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-50)}
.form-input::placeholder,.form-group input::placeholder{color:var(--gray-400)}
.form-actions{display:flex;gap:.5rem;margin-top:1rem}
.validation-message{color:var(--danger);font-size:.78rem;margin-top:.2rem}
.table-wrapper{overflow-x:auto}
.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.85rem}
.data-table th{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--gray-200);font-weight:600;color:var(--gray-500);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.data-table td{padding:.65rem .75rem;border-bottom:1px solid var(--gray-100);color:var(--gray-700)}
.data-table tbody tr{transition:background var(--transition)}
.data-table tbody tr:hover{background:var(--gray-50)}
.data-table tbody tr:last-child td{border-bottom:none}
.data-table .row-paid{opacity:.4}
.data-table .row-paused{}
.data-table .row-paused .cell-muted{opacity:.4}
.data-table .row-overpayment{background:var(--gray-50);font-style:italic}
.pagination{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--gray-100)}
.pagination span{font-size:.8rem;color:var(--gray-500);font-weight:500}
.badge{display:inline-flex;align-items:center;padding:.15rem .55rem;border-radius:var(--radius-full);font-size:.72rem;font-weight:600}
.badge-info{background:var(--gray-100);color:var(--gray-600)}
.badge-success{background:var(--success-light);color:var(--success-dark)}
.badge-warning{background:var(--warning-light);color:var(--warning-dark)}
.badge-danger{background:var(--danger-light);color:var(--danger-dark)}
.badge-income{background:#d1fae5;color:#065f46}
.badge-expense{background:#fee2e2;color:#991b1b}
.amount-income{color:#059669}
.amount-expense{color:#dc2626}
.tab-bar{display:flex;gap:.5rem;margin-bottom:1rem}
.tab-btn{padding:.4rem 1rem;border:1px solid var(--gray-200);border-radius:var(--radius-full);background:var(--surface);color:var(--gray-600);font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition)}
.tab-btn:hover{border-color:var(--primary-light);color:var(--primary)}
.tab-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.progress-bar{width:100%;height:.5rem;background:var(--gray-100);border-radius:var(--radius-full);overflow:hidden}
.progress-bar.large{height:.75rem}
.progress-bar .progress-fill{height:100%;border-radius:var(--radius-full);transition:width var(--transition-slow);background:var(--primary)}
.progress-bar.over-budget .progress-fill,.progress-bar .progress-fill.over-budget{background:var(--danger)!important}
.filter-row{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;align-items:flex-end}
.filter-row .form-group{margin-bottom:0;min-width:140px;flex:1}
.loan-card{border:1px solid var(--gray-200);transition:all var(--transition)}
.loan-card:hover{border-color:var(--primary-light);box-shadow:var(--shadow-md)}
.loan-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}
.loan-header h4{margin:0;font-size:1rem;font-weight:600;color:var(--gray-900)}
.loan-details{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin-bottom:1rem}
.loan-actions{display:flex;gap:.5rem;border-top:1px solid var(--gray-100);padding-top:.75rem}
.detail-row{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0;font-size:.85rem}
.detail-row+.detail-row{border-top:1px solid var(--gray-50)}
.detail-label{color:var(--gray-500)}
.detail-value{font-weight:600;color:var(--gray-800)}
.budget-overview{margin-bottom:1rem}
.budget-bar-container{margin-bottom:.75rem}
.budget-bar-labels{display:flex;justify-content:space-between;font-size:.8rem;margin-bottom:.35rem;color:var(--gray-600);font-weight:500}
.budget-remaining{font-size:.8rem;margin-top:.35rem;font-weight:600}
.category-budgets{margin-top:1rem}
.category-budget-item{margin-bottom:.6rem}
.category-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border-radius:var(--radius-full);font-size:.78rem;font-weight:500;color:#fff}
.category-bars{margin-top:.5rem}
.category-bar-item{margin-bottom:.65rem}
.category-bar-label{display:flex;justify-content:space-between;font-size:.82rem;margin-bottom:.25rem;color:var(--gray-700);font-weight:500}
.upload-area{border:2px dashed var(--gray-300);border-radius:var(--radius);padding:2.5rem;text-align:center;transition:all var(--transition);margin-top:.75rem;background:var(--gray-50)}
.upload-area:hover{border-color:var(--primary);background:var(--primary-50)}
.file-input{margin-bottom:.75rem}
.scan-result{border-left:3px solid var(--success)}
.ocr-text{background:var(--gray-50);padding:.75rem;border-radius:var(--radius-sm);font-family:'Consolas',monospace;font-size:.8rem;white-space:pre-wrap;max-height:250px;overflow-y:auto;border:1px solid var(--gray-200);color:var(--gray-700)}
.subscription-active{border-left:3px solid var(--success)}
.subscription-badge{display:inline-flex;align-items:center;gap:.3rem;background:var(--success-light);color:var(--success-dark);padding:.25rem .7rem;border-radius:var(--radius-full);font-size:.78rem;font-weight:600;margin-bottom:.75rem}
.subscription-details{margin-bottom:1.25rem}
.trial-banner{display:flex;align-items:center;gap:.5rem;background:linear-gradient(135deg,var(--primary-50),rgba(6,182,212,.1));border:1px solid var(--primary-100);border-radius:var(--radius-sm);padding:.6rem 1rem;margin-bottom:1rem;font-size:.85rem;font-weight:500;color:var(--primary-dark)}
.feature-list{list-style:none;margin:.5rem 0 1.25rem}
.feature-list li{padding:.3rem 0;font-size:.85rem;color:var(--gray-700)}
.pricing-section{text-align:center}
.pricing-intro{font-size:1rem;color:var(--gray-500);margin-bottom:1.5rem}
.pricing-toggle{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem}
.pricing-toggle span{font-size:.85rem;color:var(--gray-500);font-weight:500;transition:color var(--transition)}
.pricing-toggle .toggle-active{color:var(--gray-900);font-weight:600}
.toggle-switch{position:relative;display:inline-block;width:2.75rem;height:1.5rem}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--gray-300);border-radius:var(--radius-full);transition:all var(--transition)}
.toggle-slider:before{content:'';position:absolute;height:1.1rem;width:1.1rem;left:.2rem;bottom:.2rem;background:#fff;border-radius:50%;transition:all var(--transition)}
.toggle-switch input:checked+.toggle-slider{background:var(--primary)}
.toggle-switch input:checked+.toggle-slider:before{transform:translateX(1.25rem)}
.pricing-badge-save{background:linear-gradient(135deg,var(--success),var(--accent));color:#fff;padding:.15rem .6rem;border-radius:var(--radius-full);font-size:.72rem;font-weight:700}
.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;max-width:560px;margin:0 auto 1.5rem}
.pricing-grid-3{max-width:850px;grid-template-columns:repeat(3,1fr)}
.pricing-card{background:var(--surface);border:2px solid var(--gray-200);border-radius:var(--radius-lg);padding:1.75rem 1.25rem;cursor:pointer;transition:all var(--transition);position:relative;text-align:center}
.pricing-card:hover{border-color:var(--primary-light)}
.pricing-card.selected{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-50)}
.pricing-card.recommended{border-color:var(--accent)}
.pricing-card.recommended.selected{border-color:var(--accent);box-shadow:0 0 0 3px rgba(6,182,212,.1)}
.pricing-badge{position:absolute;top:-.65rem;right:1rem;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;padding:.15rem .65rem;border-radius:var(--radius-full);font-size:.72rem;font-weight:700}
.pricing-header h3{font-size:1.05rem}
.price-amount{font-size:1.95rem;font-weight:800;color:var(--gray-900);letter-spacing:-.03em}
.price-currency{font-size:.85rem;color:var(--gray-500)}
.price-monthly-equivalent{font-size:.8rem;color:var(--accent);font-weight:600}
.pricing-features{list-style:none;margin:.75rem 0;text-align:left}
.pricing-features li{padding:.25rem 0;font-size:.82rem;color:var(--gray-600)}
.pricing-selected{color:var(--primary);font-weight:600;font-size:.85rem;margin-top:.5rem}
.pricing-current{color:var(--gray-500);font-weight:500;font-size:.85rem;margin-top:.5rem}
.price-period{font-size:.8rem;color:var(--gray-400);min-height:1.2em}
.pricing-features li.excluded{color:var(--gray-400);text-decoration:line-through}
.pricing-features li.highlight{color:var(--primary);font-weight:600}
.pricing-action{margin-top:.75rem}
.payment-info{margin-top:.5rem}
.coming-soon-banner{background:linear-gradient(135deg,var(--primary-50),rgba(6,182,212,.1));border:2px dashed var(--primary-light);border-radius:var(--radius-lg);padding:2rem 1.5rem;text-align:center;margin-top:.5rem}
.coming-soon-icon{font-size:2.5rem;margin-bottom:.5rem}
.coming-soon-banner h3{font-size:1.15rem;color:var(--primary-dark);margin-bottom:.5rem;font-weight:700}
.coming-soon-banner p{font-size:.9rem;color:var(--gray-600);margin:0;line-height:1.5}
.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--gray-500);background:var(--gray-50);border-radius:var(--radius-lg);border:1px dashed var(--gray-200)}
.empty-state .empty-icon{font-size:3rem;margin-bottom:.75rem;opacity:.7}
.empty-state p{font-size:.95rem;margin-bottom:.5rem}
.empty-state .text-muted{font-size:.85rem}
.empty-state .btn{margin-top:1rem}
.not-found{text-align:center;padding:4rem 1rem}
.not-found h2{font-size:4rem;font-weight:800;color:var(--gray-200)}
.text-success{color:var(--success)}
.text-danger{color:var(--danger)}
.text-muted{color:var(--gray-500);font-size:.85rem}
.loading-spinner{display:flex;justify-content:center;padding:2rem}
.spinner{width:2rem;height:2rem;border:2.5px solid var(--gray-200);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.alert{display:flex;align-items:center;justify-content:space-between;padding:.65rem 1rem;border-radius:var(--radius-sm);margin-bottom:.75rem;font-size:.85rem;font-weight:500;border:1px solid transparent}
.alert-error{background:var(--danger-light);color:var(--danger-dark);border-color:rgba(239,68,68,.15)}
.alert-success{background:var(--success-light);color:var(--success-dark);border-color:rgba(16,185,129,.15)}
.alert-close{background:none;border:none;font-size:1rem;cursor:pointer;opacity:.5;color:inherit;padding:0 .25rem}
.alert-close:hover{opacity:1}
.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background:var(--gray-900);color:#fff}
.loading-screen h2{font-size:1.3rem;font-weight:700;margin-bottom:.5rem}
.loading-screen p{color:var(--gray-400);font-size:.9rem}
#blazor-error-ui{background:var(--danger);color:#fff;padding:.65rem;text-align:center;display:none;font-size:.85rem}
#blazor-error-ui .reload{color:#fff;font-weight:700}
.category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}
.category-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-sm);transition:all var(--transition)}
.category-item:hover{border-color:var(--gray-300);box-shadow:var(--shadow-sm)}
.category-color-dot{width:1rem;height:1rem;border-radius:var(--radius-full);flex-shrink:0;border:1px solid rgba(0,0,0,.1)}
.category-name{flex:1;font-size:.875rem;font-weight:500;color:var(--gray-800)}
.category-actions{display:flex;gap:.35rem;margin-left:auto}
.color-picker-row{display:flex;align-items:center;gap:.75rem}
.color-input{width:2.5rem;height:2.25rem;padding:0;border:1px solid var(--gray-300);border-radius:var(--radius-sm);cursor:pointer;background:none}
.color-input::-webkit-color-swatch-wrapper{padding:2px}
.color-input::-webkit-color-swatch{border:none;border-radius:2px}
.color-input::-moz-color-swatch{border:none;border-radius:2px}
.color-preview{font-size:.8rem;font-weight:600;color:var(--gray-500);font-family:'Consolas',monospace}
.tag-input-container{display:flex;flex-wrap:wrap;gap:.35rem;padding:.4rem .6rem;border:1px solid var(--gray-300);border-radius:var(--radius-sm);background:var(--surface);min-height:2.25rem;align-items:center;cursor:text}
.tag-input-container:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-50)}
.tag-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .5rem;background:var(--primary-50);color:var(--primary-dark);border-radius:var(--radius-full);font-size:.78rem;font-weight:500;white-space:nowrap}
.tag-chip-sm{padding:.05rem .4rem;font-size:.72rem}
.tag-remove{background:none;border:none;color:var(--primary);cursor:pointer;font-size:.85rem;padding:0 .1rem;line-height:1;font-weight:700}
.tag-remove:hover{color:var(--danger)}
.tag-autocomplete-wrapper{position:relative;flex:1;min-width:80px}
.tag-text-input{border:none;outline:none;font-size:.85rem;font-family:inherit;width:100%;background:transparent;padding:.15rem 0;color:var(--gray-800)}
.tag-text-input::placeholder{color:var(--gray-400)}
.tag-suggestions{position:absolute;top:100%;left:0;right:0;background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:50;max-height:160px;overflow-y:auto;margin-top:.25rem}
.tag-suggestion{display:block;width:100%;text-align:left;background:none;border:none;padding:.4rem .65rem;font-size:.82rem;color:var(--gray-700);cursor:pointer;font-family:inherit}
.tag-suggestion:hover{background:var(--primary-50);color:var(--primary-dark)}
.hh-context-bar{background:var(--primary-50);border-bottom:1px solid var(--primary-100);padding:.4rem 1.5rem;position:sticky;top:0;z-index:99}
.hh-context-bar-inner{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:.75rem}
.hh-context-label{font-size:.8rem;font-weight:600;color:var(--primary-dark);white-space:nowrap}
.hh-context-tabs{display:flex;gap:.35rem;flex-wrap:wrap}
.hh-context-tab{background:none;border:1px solid transparent;padding:.25rem .75rem;border-radius:var(--radius-full);font-size:.8rem;font-weight:500;color:var(--gray-600);cursor:pointer;font-family:inherit;transition:all var(--transition);white-space:nowrap}
.hh-context-tab:hover{background:var(--primary-100);color:var(--primary-dark)}
.hh-context-tab-active{background:var(--primary);color:#fff!important;border-color:var(--primary);font-weight:600;box-shadow:0 1px 3px rgba(79,70,229,.25)}
.hh-context-bar-locked{opacity:.5;pointer-events:none}
.hh-context-bar-locked .hh-context-tab{cursor:not-allowed}
/* -- Mobile hamburger button (hidden on desktop) -- */
.mobile-menu-btn{display:none;background:none;border:none;padding:.5rem;cursor:pointer;order:1}
.mobile-menu-icon{display:block;width:1.25rem;height:2px;background:#fff;position:relative;transition:all var(--transition)}
.mobile-menu-icon::before,.mobile-menu-icon::after{content:'';position:absolute;left:0;width:100%;height:2px;background:#fff;transition:all var(--transition)}
.mobile-menu-icon::before{top:-.4rem}
.mobile-menu-icon::after{top:.4rem}
.mobile-menu-icon.open{background:transparent}
.mobile-menu-icon.open::before{top:0;transform:rotate(45deg)}
.mobile-menu-icon.open::after{top:0;transform:rotate(-45deg)}
@media(max-width:768px){
/* Sidebar becomes slide-out drawer on mobile */
.app{flex-direction:column}
.sidebar{transform:translateX(-100%);z-index:1000;width:16rem;box-shadow:none}
.sidebar.sidebar-open{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,.25)}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:999}
.sidebar-backdrop.visible{display:block}
.app-main{margin-left:0;overflow-x:hidden;min-width:0}
.top-bar{display:flex}
.mobile-menu-btn{display:flex;align-items:center;justify-content:center}
.main-content{padding:.85rem;overflow-x:hidden}
.app-footer{padding:.65rem;font-size:.72rem;overflow-wrap:break-word;word-break:break-word}
.auth-split{flex-direction:column}
.auth-panel{display:none}
.auth-form-side{min-height:100vh}
.stats-grid{grid-template-columns:1fr 1fr}
.dash-hero{grid-template-columns:1fr 1fr;padding:.85rem 1rem;gap:.5rem}
.dash-hero-value{font-size:1.25rem}
.dash-hero-label{font-size:.7rem}
.dash-hero-sub{font-size:.72rem}
.card{padding:.85rem}
.card h3{font-size:.9rem;margin:0 0 .75rem}
.page-header h2{font-size:1.15rem}
.stat-card{padding:.85rem;gap:.65rem}
.stat-info .stat-value{font-size:1.05rem}
.stat-info .stat-label{font-size:.68rem}
.form-row{grid-template-columns:1fr}
.loan-details{grid-template-columns:1fr}
.filter-row{flex-direction:column}
.pricing-grid{grid-template-columns:1fr}
.page-header{flex-direction:column;align-items:flex-start}
.cards-grid{grid-template-columns:1fr}
.savings-grid{grid-template-columns:1fr}
.hh-grid{grid-template-columns:1fr}
.hh-context-bar{position:sticky;top:3.5rem;padding:.3rem .75rem;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.hh-context-bar::-webkit-scrollbar{display:none}
.hh-context-bar-inner{gap:.35rem;flex-wrap:nowrap}
.hh-context-label{font-size:.7rem;display:none}
.hh-context-tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.hh-context-tabs::-webkit-scrollbar{display:none}
.hh-context-tab{padding:.2rem .5rem;font-size:.72rem;flex-shrink:0;white-space:nowrap}
.hh-detail-header{flex-direction:column}
.hh-detail-header .category-actions{flex-wrap:wrap}
.hh-invite-section .form-row{flex-direction:column;align-items:stretch}
.hh-invitation-item{flex-direction:column;align-items:flex-start;gap:.35rem}
.hh-invitation-info{min-width:0;max-width:100%;word-break:break-word}
.hh-members-section{overflow-x:auto;-webkit-overflow-scrolling:touch}
.data-table{font-size:.78rem;min-width:520px}
.data-table th,.data-table td{padding:.4rem .5rem}
.data-table td{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}
.rpt-charts-grid{grid-template-columns:1fr}
.rpt-summary{grid-template-columns:1fr}
.demo-banner{flex-wrap:wrap;gap:.25rem;font-size:.78rem;padding:.35rem .75rem}
.demo-cta-btn{margin-left:0}
.env-banner{font-size:.72rem;padding:.3rem .5rem;white-space:normal;line-height:1.3}
.env-banner-icon{font-size:.72rem;padding:.05rem .35rem}
}
.savings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;margin-bottom:1rem}
.savings-card{display:flex;flex-direction:column;gap:.75rem}
.savings-card.savings-completed{border-left:3px solid var(--success)}
.savings-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;flex-wrap:wrap}
.savings-header h3{margin:0;font-size:1.1rem;font-weight:600}
.savings-amounts{display:flex;align-items:baseline;gap:.25rem;font-size:1rem}
.savings-current{font-weight:700;font-size:1.25rem;color:var(--primary)}
.savings-separator{color:var(--gray-400)}
.savings-target{color:var(--gray-500)}
.savings-meta{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--gray-500)}
.contribution-form{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--gray-100)}
.contribution-form h4,.contributions-list h4{margin:0 0 .5rem;font-size:.95rem;font-weight:600}
.contributions-list{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--gray-100)}
.btn-link{background:none;border:none;color:var(--primary);padding:0;font-size:.85rem;cursor:pointer;text-decoration:underline}
.btn-link:hover{color:var(--primary-hover)}
.hh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}
.hh-card{cursor:pointer;transition:box-shadow .15s,transform .15s}
.hh-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.hh-card h3{margin:0 0 .5rem;font-size:1.1rem;font-weight:600}
.hh-card-meta{display:flex;justify-content:space-between;font-size:.85rem;color:var(--gray-500)}
.hh-card-date{margin-top:.5rem;font-size:.8rem;color:var(--gray-400)}
.hh-detail-card{display:flex;flex-direction:column;gap:1.25rem}
.hh-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;flex-wrap:wrap}
.hh-detail-header h3{margin:0;font-size:1.2rem;font-weight:600}
.hh-owner{font-size:.85rem;color:var(--gray-500)}
.hh-members-section h4,.hh-invite-section h4,.hh-pending-list h4{margin:0 0 .5rem;font-size:.95rem;font-weight:600}
.hh-invite-section{padding-top:.75rem;border-top:1px solid var(--gray-100)}
.hh-invite-section .form-row{display:flex;align-items:flex-end;gap:.75rem}
.hh-invite-info{font-size:.85rem;color:var(--gray-400);margin:0 0 .75rem;line-height:1.4}
.hh-pending-list{margin-top:1rem}
.hh-invitations-card{margin-bottom:1.5rem;border-left:3px solid var(--warning)}
.hh-invitations-card h3{margin:0 0 .75rem;font-size:1rem;font-weight:600}
.hh-invitations-list{display:flex;flex-direction:column;gap:.5rem}
.hh-invitation-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .75rem;background:var(--gray-50);border-radius:var(--radius-sm);flex-wrap:wrap}
.hh-invitation-info{display:flex;flex-direction:column;gap:.15rem}
.hh-invitation-expires{font-size:.8rem;color:var(--gray-400)}
.hh-invitation-actions{display:flex;gap:.5rem}
.badge-primary{background:var(--primary-50);color:var(--primary-dark)}
.badge-info{background:#e0f2fe;color:#0369a1}
.badge-default{background:var(--gray-100);color:var(--gray-600)}
.badge-warning{background:#fef3c7;color:#92400e}
.imp-settings{margin-top:1rem;display:flex;flex-direction:column;gap:1rem}
.imp-settings h4{margin:0;font-size:.95rem;font-weight:600}
.imp-file-info{font-size:.85rem;color:var(--gray-600);margin:0}
.imp-csv-preview{overflow-x:auto}
.imp-csv-table-wrapper{max-height:180px;overflow:auto;border:1px solid var(--gray-200);border-radius:var(--radius-sm)}
.imp-csv-table-wrapper td{font-size:.78rem;padding:.25rem .5rem;white-space:nowrap;font-family:'Consolas',monospace}
.imp-preview-card{display:flex;flex-direction:column;gap:1rem}
.imp-preview-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}
.imp-preview-header h3{margin:0}
.imp-preview-stats{display:flex;gap:1.5rem;font-size:.85rem;color:var(--gray-500)}
.imp-table-wrapper{overflow-x:auto;max-height:500px;overflow-y:auto}
.imp-desc-cell{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-category-select{min-width:140px;font-size:.82rem;padding:.25rem .4rem}
.imp-category-select.imp-new-category{border-color:#8b5cf6;background:#f5f3ff;color:#6d28d9}
.imp-new-categories-banner{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem;background:#f5f3ff;border:1px solid #c4b5fd;border-radius:var(--radius-sm);margin-top:.75rem;font-size:.85rem;color:#5b21b6}
.badge-new-category{background:#ede9fe;color:#6d28d9;font-weight:600;padding:.15rem .5rem;border-radius:var(--radius-sm);font-size:.8rem}
.imp-inline-input{font-size:.82rem;padding:.2rem .4rem;border:1px solid var(--gray-200);border-radius:var(--radius-sm);background:transparent;width:100%;box-sizing:border-box}
.imp-inline-input:focus{border-color:var(--primary);outline:none;background:var(--white)}
.imp-amount-input{width:90px;text-align:right;font-variant-numeric:tabular-nums}
.imp-desc-cell input.imp-inline-input{min-width:180px}
input[type="date"].imp-inline-input{width:130px}
.row-duplicate{background:var(--gray-50);opacity:.7}
.row-income{background:#f0fdf4}
.row-return{background:#ecfeff}
.row-transfer{background:#f5f3ff}
.imp-summary{display:flex;flex-wrap:wrap;gap:.75rem}
.imp-summary-item{flex:1 1 160px;display:flex;flex-direction:column;gap:.2rem;padding:.75rem 1rem;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-sm)}
.imp-summary-label{font-size:.78rem;color:var(--gray-500);font-weight:600}
.imp-summary-value{font-size:.95rem;font-weight:700;color:var(--gray-900)}
.imp-filter-tabs{display:flex;gap:.35rem;flex-wrap:wrap}
.imp-merchant-cell{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--gray-800)}
.imp-result-card{text-align:center}
.imp-result-stats{display:flex;justify-content:center;gap:3rem;margin:1.5rem 0}
.imp-result-stats .stat-item{display:flex;flex-direction:column;align-items:center;gap:.25rem}
.imp-result-stats .stat-label{font-size:.85rem;color:var(--gray-500)}
.imp-result-stats .stat-value{font-size:1.3rem;font-weight:700;color:var(--primary)}
.rpt-filters{margin-bottom:1.5rem}
.rpt-filters .form-row{align-items:flex-end}
.rpt-quick-btns{display:flex;flex-direction:column}
.rpt-btn-group{display:flex;gap:.35rem}
.rpt-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}
.rpt-stat{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1.25rem;text-align:center}
.rpt-stat-label{font-size:.85rem;color:var(--gray-500)}
.rpt-stat-value{font-size:1.2rem;font-weight:700;color:var(--primary)}
.rpt-charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.5rem}
.rpt-chart-card{display:flex;flex-direction:column;gap:.75rem}
.rpt-chart-card h3{margin:0;font-size:1rem;font-weight:600}
.rpt-chart-container{position:relative;height:280px}
.rpt-chart-tall{height:240px}
.rpt-chart-wide{margin-bottom:1.5rem}
@media(max-width:480px){
.stats-grid{grid-template-columns:1fr}
.dash-hero{grid-template-columns:1fr;padding:.65rem .75rem}
.dash-hero-value{font-size:1.1rem}
.dash-hero-label{font-size:.65rem}
.auth-card{padding:1.5rem}
.auth-form-wrapper{padding:0 .5rem}
.page-header h2{font-size:1.1rem}
.stat-info .stat-value{font-size:.95rem}
.card{padding:.75rem}
.category-grid{grid-template-columns:1fr}
.flex-between{flex-wrap:wrap;gap:.5rem}
.category-nav-header{flex-wrap:wrap;gap:.5rem}
.main-content{padding:.65rem .5rem}
}
.ntf-bell{position:relative;display:flex;align-items:center;text-decoration:none;padding:.35rem;cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition)}
.ntf-bell:hover{background:rgba(255,255,255,.08)}
.ntf-bell-icon{font-size:1.1rem;line-height:1}
.ntf-bell-badge{position:absolute;top:-.15rem;right:-.3rem;background:var(--danger);color:#fff;font-size:.58rem;font-weight:700;min-width:.9rem;height:.9rem;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;padding:0 .15rem;line-height:1}
.ntf-summary-badges{display:flex;gap:.5rem}
.ntf-filter-bar{display:flex;gap:.35rem;margin-bottom:1rem}
.ntf-list{display:flex;flex-direction:column;gap:.5rem}
.ntf-item{display:flex;align-items:stretch;gap:1rem;cursor:pointer;padding:1rem 1.25rem;transition:all var(--transition)}
.ntf-item:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.ntf-indicator{width:.25rem;border-radius:var(--radius-full);flex-shrink:0}
.ntf-indicator-critical{background:var(--danger)}
.ntf-indicator-warning{background:var(--warning)}
.ntf-indicator-info{background:var(--accent)}
.ntf-content{flex:1;min-width:0}
.ntf-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}
.ntf-title{font-weight:600;font-size:.9rem;color:var(--gray-900)}
.ntf-message{font-size:.85rem;color:var(--gray-600);margin:0}
.ntf-date{font-size:.75rem;color:var(--gray-400);margin-top:.35rem;display:inline-block}
.ntf-arrow{display:flex;align-items:center;color:var(--gray-400);font-size:1.5rem;font-weight:300;padding-left:.5rem}
.invite-loading{text-align:center;padding:2rem 0;color:var(--gray-400)}
.invite-accepted,.invite-invalid{text-align:center;padding:1.5rem 0}
.invite-icon{width:48px;height:48px;border-radius:50%;background:var(--primary-50);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;margin:0 auto .75rem}
.invite-icon-error{background:#fef2f2;color:#dc2626}
.invite-accepted h3,.invite-invalid h3{margin:0 0 .5rem;font-size:1.1rem}
.invite-accepted p,.invite-invalid p{color:var(--gray-400);font-size:.9rem;margin:0 0 1.5rem}
.invite-details{padding:1rem 0}
.invite-household-card{text-align:center;padding:1.25rem;background:var(--primary-50);border-radius:var(--radius);margin-bottom:1.25rem}
.invite-household-card h3{margin:0 0 .25rem;font-size:1.15rem;color:var(--primary-dark)}
.invite-from{margin:0;font-size:.85rem;color:var(--gray-500)}
.invite-desc{text-align:center;font-size:.85rem;color:var(--gray-400);margin:0 0 1rem}

/* -- Environment Banner -- */
.env-banner{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.45rem 1rem;background:linear-gradient(90deg,#e65100,#f57c00);color:#fff;font-size:.85rem;text-align:center;font-weight:600;letter-spacing:.02em}
.env-banner-icon{font-size:1rem}

/* -- Demo Banner -- */
.demo-banner{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.45rem 1rem;background:linear-gradient(90deg,#ff9800,#ff5722);color:#fff;font-size:.85rem;text-align:center;font-weight:500}
.demo-banner strong{font-variant-numeric:tabular-nums;letter-spacing:.03em}
.demo-banner-icon{font-size:1rem}
.demo-banner-expired{background:linear-gradient(90deg,#d32f2f,#c62828);animation:demo-pulse 1.5s ease-in-out infinite}
@keyframes demo-pulse{0%,100%{opacity:1}50%{opacity:.7}}
.demo-cta-btn{margin-left:auto;padding:.25rem .75rem;background:#fff;color:#ff5722;border-radius:var(--radius-full);font-size:.78rem;font-weight:700;text-decoration:none;white-space:nowrap;transition:all var(--transition);border:none;cursor:pointer}
.demo-cta-btn:hover{background:#fff3e0;transform:scale(1.05)}
.demo-cta-card{background:linear-gradient(135deg,var(--primary),#6366f1);border-radius:var(--radius-lg);padding:1.75rem;text-align:center;color:#fff;margin-bottom:1.5rem;position:relative;overflow:hidden}
.demo-cta-card::before{content:'';position:absolute;top:-50%;right:-30%;width:60%;height:200%;background:rgba(255,255,255,.06);border-radius:50%;transform:rotate(-15deg)}
.demo-cta-card h3{margin:0 0 .5rem;font-size:1.15rem;font-weight:700}
.demo-cta-card p{margin:0 0 1.25rem;font-size:.9rem;opacity:.9;max-width:480px;margin-left:auto;margin-right:auto;line-height:1.5}
.demo-cta-card .demo-cta-register{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.75rem;background:#fff;color:var(--primary-dark);border-radius:var(--radius-full);font-size:.95rem;font-weight:700;text-decoration:none;transition:all var(--transition);box-shadow:0 4px 12px rgba(0,0,0,.15)}
.demo-cta-card .demo-cta-register:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.2)}

/* -- Planner -- */
.planner-card{display:flex;flex-direction:column;gap:.5rem}
.planner-card.planner-inactive{opacity:.6}
.planner-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;flex-wrap:wrap}
.planner-header h4{margin:0;font-size:1rem;font-weight:600}
.planner-meta{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.82rem;color:var(--gray-500)}
.planner-occurrences{display:flex;flex-direction:column;gap:.35rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--gray-100)}
.planner-occurrence{display:flex;align-items:center;gap:.5rem;font-size:.82rem;padding:.25rem 0;flex-wrap:wrap}
.planner-occ-completed{opacity:.5}
.planner-occ-skipped{opacity:.4;text-decoration:line-through}
.planner-dash-list{display:flex;flex-direction:column;gap:.5rem}
.planner-dash-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem .75rem;background:var(--gray-50);border-radius:var(--radius-sm);transition:all var(--transition);flex-wrap:wrap}
.planner-dash-item:hover{background:var(--gray-100)}
.planner-dash-info{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.planner-dash-title{font-weight:600;font-size:.88rem;color:var(--gray-800)}
.planner-dash-date{font-size:.78rem;color:var(--gray-500)}
.planner-dash-badges{display:flex;gap:.35rem;flex-wrap:wrap}
.planner-view-toggle{display:flex;gap:.25rem}
.planner-card-overdue{border-left:3px solid var(--danger)!important}
.planner-occ-overdue{background:rgba(239,68,68,.05);border-radius:var(--radius-sm);padding:.25rem .5rem!important}
.planner-row-overdue td{background:rgba(239,68,68,.05)}
.planner-progress{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}
.planner-progress-text{font-size:.78rem;color:var(--gray-500);font-weight:500;white-space:nowrap}
.planner-progress .progress-bar{flex:1;height:.35rem}
.planner-warranty-countdown{padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;margin:.25rem 0}
.planner-warranty-ok{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}
.planner-warranty-warning{background:#fffbeb;color:#92400e;border:1px solid #fde68a}
.planner-warranty-critical{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.planner-warranty-expired{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;opacity:.8}
.planner-warranty-notes{font-size:.82rem;color:var(--gray-600);padding:.35rem .75rem;background:var(--gray-50);border-radius:var(--radius-sm);border-left:3px solid var(--gray-300);margin:.25rem 0}

/* -- Confirm Popup Overlay -- */
.confirm-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .15s ease}
.confirm-dialog{background:var(--surface);border-radius:var(--radius-lg);padding:2rem;max-width:400px;width:90%;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);text-align:center}
.confirm-dialog h3{margin:0 0 .5rem;font-size:1.1rem;font-weight:700;color:var(--gray-900)}
.confirm-dialog p{margin:0 0 1.5rem;font-size:.9rem;color:var(--gray-500);line-height:1.5}
.confirm-dialog-actions{display:flex;gap:.75rem;justify-content:center}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* -- Textarea resize constraint -- */
.form-card textarea.form-input,.form-card .form-input[rows]{resize:vertical;max-height:200px}

/* -- Savings card layout -- */
.savings-header{display:flex;flex-direction:column;gap:.5rem}
.savings-header h3{margin:0;font-size:1.05rem;font-weight:600;width:100%}
.savings-header .category-actions{display:flex;gap:.5rem;flex-wrap:wrap}

/* -- Planner clickable dash items -- */
.planner-dash-item{cursor:pointer}

/* -- User avatar -- */
.user-avatar{width:1.6rem;height:1.6rem;border-radius:50%;object-fit:cover;margin-right:.35rem;vertical-align:middle}
.user-avatar-large{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid var(--gray-200)}
.avatar-upload{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}

/* -- Loan form UX -- */
.loan-form-card{max-width:780px}
.form-section{margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:var(--radius);overflow:hidden}
.form-section-header{display:flex;align-items:center;gap:.5rem;padding:.65rem 1rem;background:var(--gray-50);border-bottom:1px solid var(--gray-200);cursor:pointer;user-select:none;transition:background var(--transition)}
.form-section-header:hover{background:var(--gray-100)}
.form-section-header h4{margin:0;font-size:.85rem;font-weight:600;color:var(--gray-700);flex:1}
.form-section-header .section-icon{font-size:1rem;line-height:1}
.form-section-header .section-toggle{font-size:.7rem;color:var(--gray-400);transition:transform var(--transition)}
.form-section-header .section-toggle.open{transform:rotate(180deg)}
.form-section-body{padding:.75rem 1rem}
.form-section-body.collapsed{display:none}
.quick-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}
.quick-chip{padding:.2rem .55rem;font-size:.72rem;font-weight:600;border:1px solid var(--gray-300);border-radius:var(--radius-full);background:var(--surface);color:var(--gray-600);cursor:pointer;transition:all var(--transition);font-family:inherit;line-height:1.4}
.quick-chip:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-50)}
.quick-chip.active{border-color:var(--primary);color:#fff;background:var(--primary)}
.loan-cost-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;padding:.75rem;margin:.75rem 0;background:linear-gradient(135deg,var(--primary-50),#f0fdf4);border:1px solid var(--primary-100);border-radius:var(--radius)}
.cost-summary-item{text-align:center}
.cost-summary-item .cost-label{display:block;font-size:.7rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.15rem}
.cost-summary-item .cost-value{display:block;font-size:1.05rem;font-weight:700;color:var(--gray-800)}
.cost-summary-item .cost-value.highlight{color:var(--primary)}
.cost-summary-item .cost-value.success{color:var(--success-dark)}
@media(max-width:768px){.loan-form-card{max-width:100%}.loan-cost-summary{grid-template-columns:1fr}.quick-chips{gap:.25rem}}
.google-btn-container{display:flex;justify-content:center;margin:.25rem 0}

/* -- SmartScan UI Enhancements -- */
.scan-steps{display:flex;align-items:center;justify-content:center;gap:0;margin-bottom:1.25rem;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius)}
.scan-step{display:flex;align-items:center;gap:.35rem;font-size:.82rem;font-weight:500;color:var(--gray-400);white-space:nowrap;transition:all var(--transition)}
.scan-step-num{font-size:.95rem}
.scan-step-active{color:var(--primary);font-weight:600}
.scan-step-done{color:var(--success)}
.scan-step-line{width:2.5rem;height:2px;background:var(--gray-200);margin:0 .5rem;transition:background var(--transition)}
.scan-step-line-done{background:var(--success)}
.upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1rem 0;color:var(--gray-400)}
.upload-placeholder p{margin:0;font-size:.9rem;font-weight:500}
.upload-file-info{display:flex;align-items:center;gap:1rem}
.upload-file-info p{margin:0}
.scan-thumb{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--gray-200)}
.scan-mode-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .55rem;border-radius:var(--radius-full);font-size:.72rem;font-weight:600;margin-top:.25rem}
.scan-mode-receipt{background:#fef3c7;color:#92400e}
.scan-mode-bank{background:#e0f2fe;color:#0369a1}
.scan-premium-note{margin-bottom:.5rem;font-size:.85rem;color:var(--gray-500)}
.scan-premium-note summary{cursor:pointer;font-weight:500}
.scan-ai-suggestion{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem 1rem;background:var(--primary-50);border:1px solid var(--primary-100);border-radius:var(--radius-sm);margin:.75rem 0;font-size:.85rem}
.scan-batch-bar{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--primary-50);border:1px solid var(--primary-100);border-radius:var(--radius-sm);margin-bottom:.75rem;font-size:.85rem;font-weight:500;animation:fadeIn .15s ease}
.smart-progress-card{text-align:center;padding:2rem 1.5rem;animation:fadeIn .2s ease}
.smart-progress-header{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1rem}
.smart-progress-icon{font-size:1.5rem}
.smart-progress-title{font-size:1rem;font-weight:600;color:var(--gray-800)}
.smart-progress-card .progress-bar{height:.6rem;margin-bottom:.75rem}
.smart-progress-hint{font-size:.82rem;margin:0}
.row-expandable{cursor:pointer}
.row-expandable:hover{background:var(--primary-50)!important}
.row-highlighted{background:#fff9c4!important;animation:highlight-fade 3s ease-out forwards}
@keyframes highlight-fade{0%{background:#fff176}100%{background:transparent}}
.expense-items-row{background:var(--gray-50)}
.expense-items-row>td{padding:0!important}
.expense-items-panel{padding:.75rem 1.25rem 1rem;border-left:3px solid var(--primary)}
.expense-items-panel h4{margin:0 0 .5rem;font-size:.85rem;font-weight:600;color:var(--gray-700)}
.expense-items-table{width:100%;border-collapse:collapse;font-size:.8rem}
.expense-items-table th{text-align:left;padding:.35rem .5rem;border-bottom:1px solid var(--gray-200);font-weight:600;color:var(--gray-500);font-size:.75rem;text-transform:uppercase}
.expense-items-table td{padding:.35rem .5rem;border-bottom:1px solid var(--gray-100);color:var(--gray-700)}
.expense-items-table tbody tr:last-child td{border-bottom:none}
.items-badge{display:inline-flex;align-items:center;gap:.2rem;padding:.1rem .4rem;border-radius:var(--radius-full);font-size:.7rem;font-weight:600;background:#fef3c7;color:#92400e;margin-left:.35rem;vertical-align:middle}
.onb{min-height:80vh;display:flex;flex-direction:column;align-items:center;padding:2rem 1rem}
.onb-progress-bar{display:flex;align-items:center;gap:0;margin-bottom:2.5rem;max-width:480px;width:100%}
.onb-step-indicator{display:flex;flex-direction:column;align-items:center;gap:.35rem;flex-shrink:0}
.onb-step-dot{width:2rem;height:2rem;border-radius:50%;background:var(--gray-200);color:var(--gray-500);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;transition:all .3s}
.onb-step-indicator.active .onb-step-dot{background:var(--primary);color:#fff;box-shadow:0 0 0 4px rgba(99,102,241,.2)}
.onb-step-indicator.done .onb-step-dot{background:var(--success);color:#fff}
.onb-step-label{font-size:.65rem;color:var(--gray-400);font-weight:500;white-space:nowrap}
.onb-step-indicator.active .onb-step-label{color:var(--primary);font-weight:600}
.onb-step-indicator.done .onb-step-label{color:var(--success)}
.onb-step-line{flex:1;height:2px;background:var(--gray-200);margin:0 .25rem;margin-bottom:1.2rem;transition:background .3s}
.onb-step-line.done{background:var(--success)}
.onb-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:2.5rem;max-width:560px;width:100%;text-align:center}
.onb-animate{animation:onbFadeIn .4s ease}
@keyframes onbFadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.onb-hero-emoji{font-size:3.5rem;margin-bottom:.5rem}
.onb-title{font-size:1.3rem;font-weight:800;margin-bottom:.5rem;color:var(--gray-900)}
.onb-subtitle{color:var(--gray-500);font-size:.9rem;margin-bottom:1.5rem;line-height:1.5}
.onb-currency-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;text-align:left}
.onb-currency-row label{font-weight:600;font-size:.85rem;color:var(--gray-700);white-space:nowrap}
.onb-currency-select{max-width:180px}
.onb-section-title{font-size:1rem;font-weight:700;margin-bottom:1rem;color:var(--gray-800)}
.onb-goals{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1.5rem}
.onb-goal{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1rem .75rem;border-radius:var(--radius);border:2px solid var(--gray-200);background:var(--surface);cursor:pointer;transition:all .2s;text-align:center}
.onb-goal:hover{border-color:var(--primary);background:rgba(99,102,241,.04)}
.onb-goal.selected{border-color:var(--primary);background:rgba(99,102,241,.08);box-shadow:0 0 0 3px rgba(99,102,241,.15)}
.onb-goal-icon{font-size:1.8rem}
.onb-goal strong{font-size:.85rem;color:var(--gray-800)}
.onb-goal-desc{font-size:.72rem;color:var(--gray-500);line-height:1.4}
.onb-btn{width:100%;margin-top:.5rem;padding:.75rem;font-size:1rem;font-weight:600}
.onb-skip{display:block;margin:.75rem auto 0;background:none;border:none;color:var(--gray-400);font-size:.8rem;cursor:pointer;padding:.25rem .5rem}
.onb-skip:hover{color:var(--gray-600)}
.onb-form{text-align:left;margin:1.25rem 0}
.onb-form-group{margin-bottom:1rem}
.onb-form-group label{display:block;font-weight:600;font-size:.8rem;margin-bottom:.3rem;color:var(--gray-700)}
.onb-form-row{display:flex;gap:.75rem}
.onb-form-grow{flex:1}
.onb-nav{display:flex;gap:.75rem;justify-content:center;margin-top:1.5rem}
.onb-success{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:var(--radius);background:rgba(34,197,94,.1);color:var(--success-dark);font-weight:600;font-size:.9rem;margin-top:1rem}
.onb-fin-demo{display:flex;flex-direction:column;gap:.6rem;margin:1.25rem 0;max-width:380px;margin-left:auto;margin-right:auto}
.onb-fin-bubble{padding:.6rem 1rem;border-radius:1rem;font-size:.82rem;line-height:1.45;animation:onbFadeIn .4s ease both}
.onb-fin-bubble-user{background:var(--primary);color:#fff;align-self:flex-end;border-bottom-right-radius:.25rem;max-width:85%}
.onb-fin-bubble-fin{background:var(--gray-100);color:var(--gray-800);align-self:flex-start;border-bottom-left-radius:.25rem;max-width:85%;display:flex;gap:.5rem;align-items:flex-start}
.onb-fin-avatar{font-size:1rem;flex-shrink:0;margin-top:.1rem}
.onb-demo-1{animation-delay:.1s}.onb-demo-2{animation-delay:.5s}.onb-demo-3{animation-delay:1s}.onb-demo-4{animation-delay:1.4s}
.onb-fin-cta{margin-top:1.25rem;padding:1rem;border-radius:var(--radius);background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(139,92,246,.08));border:1px solid rgba(99,102,241,.15)}
.onb-fin-hint{font-size:.82rem;color:var(--gray-600);margin-bottom:.75rem}
.onb-fin-try{background:linear-gradient(135deg,#8b5cf6,#6366f1);border:none;padding:.6rem 1.5rem;font-size:.9rem;border-radius:var(--radius-full)}
.onb-suggestions{display:flex;flex-direction:column;gap:.6rem;margin:1.25rem 0;text-align:left}
.onb-suggestion{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;border-radius:var(--radius);border:1px solid var(--gray-200);cursor:pointer;transition:all .2s}
.onb-suggestion:hover{border-color:var(--primary);background:rgba(99,102,241,.04);transform:translateX(4px)}
.onb-suggestion-icon{font-size:1.4rem;flex-shrink:0}
.onb-suggestion strong{display:block;font-size:.85rem;color:var(--gray-800);margin-bottom:.1rem}
.onb-suggestion span{font-size:.75rem;color:var(--gray-500)}
.onb-suggestion-arrow{margin-left:auto;color:var(--gray-400);font-size:1.1rem}
@media(max-width:480px){.onb-goals{grid-template-columns:1fr}.onb-card{padding:1.5rem 1.25rem}.onb-step-label{display:none}}
.streak-card{display:flex;align-items:center;gap:1rem;background:linear-gradient(135deg,#fff7ed,#fef3c7);border:1px solid #fde68a;border-radius:var(--radius);padding:.75rem 1.25rem;margin-bottom:1rem}
.streak-flame{font-size:2rem}
.streak-info{display:flex;align-items:baseline;gap:.35rem}
.streak-count{font-size:1.3rem;font-weight:800;color:var(--warning-dark)}
.streak-label{font-size:.85rem;color:var(--gray-600);font-weight:500}
.streak-best{font-size:.8rem;color:var(--gray-500);margin-left:auto}
.streak-badge{font-size:.8rem;font-weight:600;padding:.2rem .6rem;border-radius:var(--radius-full);background:#fef3c7;color:#92400e}
.scan-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.35);z-index:9999;animation:fadeIn .15s ease}
.scan-overlay-panel{position:fixed;top:0;right:0;width:520px;max-width:100%;height:100%;background:var(--surface);box-shadow:-4px 0 24px rgba(0,0,0,.12);overflow-y:auto;padding:1.5rem;animation:slideInPanel .2s ease;display:flex;flex-direction:column;gap:1rem}
@keyframes slideInPanel{from{transform:translateX(100%)}to{transform:translateX(0)}}
.scan-overlay-panel .card-header-row{display:flex;justify-content:space-between;align-items:center}
.scan-overlay-panel h3{margin:0;font-size:1rem;font-weight:600}
.scan-overlay-panel h4{margin:0 0 .5rem;font-size:.9rem;font-weight:600}
.scan-overlay-panel .scan-result{border-left:3px solid var(--success);padding:.5rem .75rem;margin:0}
.scan-overlay-panel .form-row{grid-template-columns:1fr 1fr}
.scan-filters{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.75rem}
@media(max-width:768px){.scan-overlay-panel{width:100%}.scan-steps{flex-wrap:wrap;gap:.25rem}.scan-step-line{width:1rem}}

/* Quick-Add FAB */
.fab{position:fixed;bottom:1.5rem;right:1.5rem;width:52px;height:52px;border-radius:50%;background:var(--success);color:#fff;border:none;font-size:1.5rem;cursor:pointer;box-shadow:0 4px 12px rgba(16,185,129,.35);z-index:1000;display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s}
.fab:hover{transform:scale(1.1);background:#059669}
.fab-icon{transition:transform .3s;display:inline-block;line-height:1}
.fab-icon-open{transform:rotate(45deg)}
.quick-add-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:1001}
.quick-add-panel{position:fixed;bottom:5.5rem;right:1.5rem;width:340px;background:var(--card-bg,#fff);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.18);z-index:1002;padding:1.25rem;animation:quick-add-in .2s ease-out}
.quick-add-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}
.quick-add-header h3{margin:0;font-size:1rem;font-weight:600}
.quick-add-panel .form-group{margin-bottom:.6rem}
.quick-add-panel .form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.quick-add-panel .form-actions{margin-top:.75rem;display:flex;gap:.5rem}
@keyframes quick-add-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:480px){.quick-add-panel{right:.5rem;left:.5rem;width:auto;bottom:4.5rem}.fab{bottom:1rem;right:1rem}}
[data-theme="dark"] .card,[data-theme="dark"] .form-card,[data-theme="dark"] .auth-card{background:var(--surface);border-color:var(--gray-200)}
[data-theme="dark"] .auth-form-side{background:var(--background)}
[data-theme="dark"] .auth-form-header h2{color:var(--gray-900)}
[data-theme="dark"] .auth-demo-link{background:var(--gray-100);border-color:var(--gray-200);color:var(--gray-500)}
[data-theme="dark"] .auth-demo-link:hover{background:rgba(99,102,241,.1);border-color:var(--primary-light);color:var(--primary-light)}
[data-theme="dark"] .email-confirm-box{background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.2)}
[data-theme="dark"] .email-confirm-text{color:var(--warning-dark)}
[data-theme="dark"] .dash-hero{background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(6,182,212,.05));border-color:var(--gray-200)}
[data-theme="dark"] .dash-hero-value{color:var(--gray-900)}
[data-theme="dark"] .category-detail-panel{background:var(--gray-100)}
[data-theme="dark"] .sidebar{background:var(--gray-100);border-right:1px solid var(--gray-200)}
[data-theme="dark"] .sidebar-brand{border-color:var(--gray-200)}
[data-theme="dark"] .sidebar-divider{background:var(--gray-200)}
[data-theme="dark"] .sidebar-footer{border-color:var(--gray-200)}
[data-theme="dark"] .sidebar-user-menu{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .form-input,[data-theme="dark"] .form-textarea,[data-theme="dark"] select.form-input{background:var(--gray-100);border-color:var(--gray-200);color:var(--gray-800)}
[data-theme="dark"] .form-input:focus,[data-theme="dark"] .form-textarea:focus{border-color:var(--primary);background:var(--gray-50)}
[data-theme="dark"] .table th{background:var(--gray-100);color:var(--gray-500);border-color:var(--gray-200)}
[data-theme="dark"] .table td{border-color:var(--gray-200);color:var(--gray-800)}
[data-theme="dark"] .table tr:hover{background:rgba(255,255,255,.03)}
[data-theme="dark"] .page-header h2{color:var(--gray-900)}
[data-theme="dark"] .stat-card{background:var(--surface);border-color:var(--gray-200)}
[data-theme="dark"] .stat-card .stat-value{color:var(--gray-900)}
[data-theme="dark"] .stat-card .stat-label{color:var(--gray-400)}
[data-theme="dark"] .quick-add-panel{background:var(--surface);box-shadow:0 8px 32px rgba(0,0,0,.5)}
[data-theme="dark"] .quick-add-panel .quick-add-header h3{color:var(--gray-900)}
[data-theme="dark"] .nav-dropdown{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .nav-dropdown-link:hover{background:rgba(255,255,255,.06)}
[data-theme="dark"] .nav-dropdown-divider{background:var(--gray-200)}
[data-theme="dark"] .hh-context-bar{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .hh-context-tab{color:var(--gray-400);background:transparent;border-color:var(--gray-200)}
[data-theme="dark"] .hh-context-tab-active{background:var(--primary);color:#fff;border-color:var(--primary)}
[data-theme="dark"] .text-muted{color:var(--gray-400)!important}
[data-theme="dark"] .detail-row{border-color:var(--gray-200)}
[data-theme="dark"] .detail-label{color:var(--gray-400)}
[data-theme="dark"] .detail-value{color:var(--gray-800)}
[data-theme="dark"] .alert-success{background:var(--success-light);color:var(--success-dark);border-color:rgba(52,211,153,.2)}
[data-theme="dark"] .alert-error{background:var(--danger-light);color:var(--danger-dark);border-color:rgba(248,113,113,.2)}
[data-theme="dark"] .empty-state{background:var(--surface);border-color:var(--gray-200)}
[data-theme="dark"] .badge{background:var(--gray-100);color:var(--gray-500)}
[data-theme="dark"] .app-footer{color:var(--gray-400)}
/* Modal (receipt gallery etc.) */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1050}
.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:560px;max-height:85vh;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);z-index:1051;display:flex;flex-direction:column;overflow:hidden}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--gray-200)}
.modal-header h3{margin:0;font-size:1.05rem;font-weight:700;color:var(--gray-900)}
.modal-close{background:none;border:none;font-size:1.4rem;cursor:pointer;color:var(--gray-400);padding:0 .25rem;line-height:1}
.modal-close:hover{color:var(--gray-800)}
.modal-body{padding:1.25rem;overflow-y:auto;flex:1}
/* Dark theme — comprehensive fixes */
[data-theme="dark"] .confirm-dialog{background:var(--surface);color:var(--gray-800)}
[data-theme="dark"] .modal{background:var(--surface)}
[data-theme="dark"] .modal-header{border-color:var(--gray-200)}
[data-theme="dark"] .modal-header h3{color:var(--gray-900)}
[data-theme="dark"] .modal-close{color:var(--gray-400)}
[data-theme="dark"] .modal-close:hover{color:var(--gray-800)}
[data-theme="dark"] .btn-secondary{background:var(--gray-100);color:var(--gray-800);border-color:var(--gray-200)}
[data-theme="dark"] .btn-secondary:hover:not(:disabled){background:var(--gray-200);border-color:var(--gray-300)}
[data-theme="dark"] .form-group label{color:var(--gray-500)}
[data-theme="dark"] .data-table td{color:var(--gray-800)}
[data-theme="dark"] .data-table th{background:var(--gray-100);color:var(--gray-500);border-color:var(--gray-200)}
[data-theme="dark"] .data-table tbody tr:hover{background:rgba(255,255,255,.03)}
[data-theme="dark"] .data-table td{border-color:var(--gray-200)}
[data-theme="dark"] .tab-btn{background:var(--gray-100);border-color:var(--gray-200);color:var(--gray-500)}
[data-theme="dark"] .tab-btn:hover{border-color:var(--primary-light);color:var(--primary-light)}
[data-theme="dark"] .tab-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
[data-theme="dark"] .category-item{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .category-name{color:var(--gray-800)}
[data-theme="dark"] .category-bar-label{color:var(--gray-500)}
[data-theme="dark"] .badge-income{background:rgba(52,211,153,.15);color:#6ee7b7}
[data-theme="dark"] .badge-expense{background:rgba(248,113,113,.15);color:#fca5a5}
[data-theme="dark"] .upload-area{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .upload-area:hover{border-color:var(--primary);background:rgba(99,102,241,.08)}
[data-theme="dark"] .ocr-text{background:var(--gray-100);border-color:var(--gray-200);color:var(--gray-800)}
[data-theme="dark"] .pricing-card{background:var(--surface);border-color:var(--gray-200)}
[data-theme="dark"] .pricing-card:hover{border-color:var(--primary-light)}
[data-theme="dark"] .pricing-card.selected{border-color:var(--primary)}
[data-theme="dark"] .price-amount{color:var(--gray-900)}
[data-theme="dark"] .pricing-features li{color:var(--gray-500)}
[data-theme="dark"] .feature-list li{color:var(--gray-500)}
[data-theme="dark"] .trial-banner{background:rgba(99,102,241,.1);border-color:rgba(99,102,241,.2);color:var(--primary-light)}
[data-theme="dark"] .budget-bar-labels{color:var(--gray-500)}
[data-theme="dark"] .loan-header h4{color:var(--gray-900)}
[data-theme="dark"] .tag-input-container{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .tag-chip{background:rgba(99,102,241,.15);color:var(--primary-light)}
[data-theme="dark"] .tag-suggestions{background:var(--surface);border-color:var(--gray-200)}
[data-theme="dark"] .tag-suggestion{color:var(--gray-500)}
[data-theme="dark"] .tag-suggestion:hover{background:rgba(99,102,241,.1);color:var(--primary-light)}
[data-theme="dark"] .storage-bar{color:var(--gray-500)}
[data-theme="dark"] .health-bar-item>span:first-child{color:var(--gray-500)}
[data-theme="dark"] .health-bar-item>span:last-child{color:var(--gray-500)}
[data-theme="dark"] .insight-info{background:rgba(59,130,246,.1)}
[data-theme="dark"] .insight-desc{color:var(--gray-500)}
[data-theme="dark"] .report-card-highlights li{color:var(--gray-500)}
[data-theme="dark"] .whatif-col h4{color:var(--gray-500)}
.theme-toggle{background:transparent;border:1px solid var(--gray-700);color:var(--gray-400);padding:.3rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;transition:all var(--transition);display:flex;align-items:center;line-height:1}
.theme-toggle:hover{color:#fff;border-color:var(--gray-500)}
.pwa-install-banner{position:fixed;bottom:0;left:0;right:0;background:var(--primary);color:#fff;padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;z-index:1100;font-size:.9rem;box-shadow:0 -2px 8px rgba(0,0,0,.15)}
.pwa-install-banner .btn-small{padding:.3rem .75rem;font-size:.8rem}
.pwa-install-banner .btn-primary{background:#fff;color:var(--primary);border-color:#fff}
.pwa-install-banner .btn-primary:hover{background:var(--gray-100)}
.pwa-install-banner .btn-secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.pwa-install-banner .btn-secondary:hover{border-color:#fff}

/* Goals Wizard */
.wizard-steps{display:flex;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--gray-100)}
.wizard-step{font-size:.85rem;color:var(--gray-300);font-weight:500}
.wizard-step.active{color:var(--primary);font-weight:600}
.goal-type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;margin-top:1rem}
.goal-type-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.25rem 1rem;border:2px solid var(--gray-100);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:all .15s ease;font-size:.9rem;color:var(--text)}
.goal-type-card:hover{border-color:var(--primary-light);background:var(--primary-bg,rgba(99,102,241,.04))}
.goal-type-card.selected{border-color:var(--primary);background:var(--primary-bg,rgba(99,102,241,.08));box-shadow:0 0 0 3px rgba(99,102,241,.15)}
.goal-type-icon{font-size:2rem}
[data-theme="dark"] .wizard-step{color:var(--gray-400)}
[data-theme="dark"] .wizard-step.active{color:var(--primary-light)}
[data-theme="dark"] .goal-type-card{border-color:var(--gray-200);background:var(--surface)}
[data-theme="dark"] .goal-type-card:hover{border-color:var(--primary-light);background:rgba(99,102,241,.1)}
[data-theme="dark"] .goal-type-card.selected{border-color:var(--primary);background:rgba(99,102,241,.15)}

/* Receipt Gallery */
.receipt-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.receipt-gallery-card{border:1px solid var(--gray-100);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:all .15s ease;background:var(--surface)}
.receipt-gallery-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-2px)}
.receipt-gallery-card.gallery-dismissed{opacity:.6}
.receipt-gallery-thumb{height:140px;background:var(--gray-50);display:flex;align-items:center;justify-content:center;overflow:hidden}
.receipt-gallery-thumb img{width:100%;height:100%;object-fit:cover}
.receipt-gallery-noimg{font-size:3rem;color:var(--gray-300)}
.receipt-gallery-info{padding:.75rem}
.receipt-gallery-store{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.receipt-gallery-amount{font-size:1.1rem;font-weight:700;color:var(--primary);margin:.25rem 0}
.receipt-gallery-date{font-size:.8rem;color:var(--gray-400)}
.receipt-gallery-badge{display:inline-block;padding:.15rem .5rem;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;margin-top:.35rem}
.badge-success{background:var(--success-light,#d1fae5);color:var(--success-dark,#065f46)}
.badge-warning{background:var(--warning-light,#fef3c7);color:var(--warning-dark,#92400e)}
.badge-muted{background:var(--gray-50);color:var(--gray-400)}
[data-theme="dark"] .receipt-gallery-card{border-color:var(--gray-200);background:var(--surface)}
[data-theme="dark"] .receipt-gallery-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.3)}
[data-theme="dark"] .receipt-gallery-thumb{background:var(--gray-100)}
[data-theme="dark"] .receipt-gallery-noimg{color:var(--gray-400)}

/* -- Fin AI Chat Panel -- */
.fin-fab{position:fixed;bottom:5.5rem;right:1.5rem;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff;border:none;font-size:1.3rem;cursor:pointer;box-shadow:0 4px 16px rgba(99,102,241,.4);z-index:999;display:flex;align-items:center;justify-content:center;transition:transform .2s,opacity .2s}
.fin-fab:hover{transform:scale(1.1)}
.fin-fab-hidden{opacity:0;pointer-events:none;transform:scale(.5)}
.fin-fab-icon{line-height:1}
.fin-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:1003;animation:fadeIn .15s ease}
.fin-panel{position:fixed;bottom:0;right:0;width:420px;height:0;max-height:0;background:var(--card-bg,#fff);border-radius:16px 16px 0 0;box-shadow:0 -4px 32px rgba(0,0,0,.18);z-index:1004;display:flex;flex-direction:column;overflow:hidden;transition:max-height .3s ease,height .3s ease;opacity:0;pointer-events:none}
.fin-panel-open{height:min(75vh,640px);max-height:min(75vh,640px);opacity:1;pointer-events:all}
.fin-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--gray-100);background:linear-gradient(135deg,#f5f3ff,#eef2ff);flex-shrink:0}
.fin-header-title{display:flex;align-items:center;gap:.5rem}
.fin-header h3{margin:0;font-size:1rem;font-weight:700;color:var(--gray-800)}
.fin-logo{font-size:1.2rem}
.fin-subtitle{font-size:.72rem;color:var(--gray-400);font-weight:500}
.fin-messages{flex:1;overflow-y:auto;padding:.75rem 1rem;display:flex;flex-direction:column;gap:.5rem}
.fin-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1.5rem 1rem;gap:.5rem;flex:1}
.fin-empty-icon{font-size:2.5rem;opacity:.6}
.fin-empty-title{margin:0;font-weight:600;font-size:1rem;color:var(--gray-700)}
.fin-empty-desc{margin:0;font-size:.82rem;color:var(--gray-400);line-height:1.5;max-width:280px}
.fin-quick-prompts{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center;margin-top:.5rem}
.fin-chip{padding:.35rem .65rem;font-size:.75rem;font-weight:500;border:1px solid var(--gray-200);border-radius:var(--radius-full);background:var(--surface);color:var(--gray-600);cursor:pointer;transition:all var(--transition);font-family:inherit;white-space:nowrap}
.fin-chip:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-50)}
.fin-msg{display:flex;gap:.5rem;max-width:88%}
.fin-msg-user{align-self:flex-end;flex-direction:row-reverse}
.fin-msg-fin{align-self:flex-start}
.fin-msg-avatar{width:1.5rem;height:1.5rem;border-radius:50%;background:linear-gradient(135deg,#8b5cf6,#6366f1);display:flex;align-items:center;justify-content:center;font-size:.7rem;flex-shrink:0;margin-top:.15rem}
.fin-msg-bubble{padding:.55rem .85rem;border-radius:12px;font-size:.85rem;line-height:1.55;word-wrap:break-word}
.fin-msg-user .fin-msg-bubble{background:var(--primary);color:#fff;border-bottom-right-radius:4px}
.fin-msg-fin .fin-msg-bubble{background:var(--gray-50);color:var(--gray-800);border-bottom-left-radius:4px}
.fin-typing{display:flex;gap:.3rem;padding:.65rem .85rem!important}
.fin-typing span{width:6px;height:6px;border-radius:50%;background:var(--gray-300);animation:finTyping 1.2s infinite}
.fin-typing span:nth-child(2){animation-delay:.2s}
.fin-typing span:nth-child(3){animation-delay:.4s}
@keyframes finTyping{0%,80%,100%{transform:translateY(0)}40%{transform:translateY(-6px)}}
.fin-actions{display:flex;flex-direction:column;gap:.35rem;margin-top:.5rem}
.fin-action-card{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem .65rem;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-sm);font-size:.82rem;flex-wrap:wrap}
.fin-action-btns{display:flex;gap:.35rem;flex-shrink:0}
.fin-action-done{padding:.35rem .65rem;background:#ecfdf5;color:#065f46;border-radius:var(--radius-sm);font-size:.82rem;font-weight:500}
.fin-rate-limit{text-align:center;padding:.25rem;font-size:.7rem;color:var(--gray-400);border-top:1px solid var(--gray-100);flex-shrink:0}
.fin-input-area{display:flex;gap:.5rem;padding:.75rem 1rem;border-top:1px solid var(--gray-100);flex-shrink:0}
.fin-input{flex:1;border:1px solid var(--gray-200);border-radius:var(--radius-full);padding:.55rem 1rem;font-size:.88rem;font-family:inherit;background:var(--surface);color:var(--gray-800);outline:none;transition:border-color var(--transition)}
.fin-input:focus{border-color:var(--primary)}
.fin-send{width:38px;height:38px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:background var(--transition),transform var(--transition);flex-shrink:0}
.fin-send:hover:not(:disabled){background:var(--primary-dark,#2563eb);transform:scale(1.05)}
.fin-send:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:480px){.fin-panel{width:100%;border-radius:16px 16px 0 0}.fin-fab{bottom:5rem;right:1rem}}
[data-theme="dark"] .fin-panel{background:var(--surface);border-color:var(--gray-200)}
[data-theme="dark"] .fin-header{background:linear-gradient(135deg,#1e1b4b,#312e81)}
[data-theme="dark"] .fin-header h3{color:#e0e7ff}
[data-theme="dark"] .fin-msg-fin .fin-msg-bubble{background:var(--gray-100);color:var(--gray-800)}
[data-theme="dark"] .fin-action-card{background:var(--gray-100);border-color:var(--gray-200)}
[data-theme="dark"] .fin-input{background:var(--gray-100);border-color:var(--gray-200);color:var(--gray-800)}
[data-theme="dark"] .badge-success{background:rgba(52,211,153,.15);color:#6ee7b7}
[data-theme="dark"] .badge-warning{background:rgba(251,191,36,.15);color:#fbbf24}
[data-theme="dark"] .badge-muted{background:var(--gray-100);color:var(--gray-400)}

/* Dashboard Widget Toggles */
.widget-toggles{display:flex;flex-wrap:wrap;gap:.75rem}
.widget-toggle-item{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem;padding:.35rem .6rem;border-radius:var(--radius-sm);background:var(--gray-50);transition:background .15s}
.widget-toggle-item:hover{background:var(--gray-100)}
[data-theme="dark"] .widget-toggle-item{background:var(--gray-100)}
[data-theme="dark"] .widget-toggle-item:hover{background:var(--gray-200)}
.planner-family-bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem;padding:.5rem .75rem;background:var(--gray-50);border-radius:var(--radius-sm)}
.planner-member-tag{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem}
.planner-member-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;flex-shrink:0}
[data-theme="dark"] .planner-family-bar{background:var(--gray-100)}

/* Phase 2-4: AI Insights, Health Score, Report Card, Year Review, What-If */
.health-score-card{position:relative}
.health-score-display{display:flex;gap:2rem;align-items:center;margin:.75rem 0;flex-wrap:wrap}
.health-score-circle{display:flex;flex-direction:column;align-items:center;justify-content:center;width:90px;height:90px;border-radius:50%;background:var(--primary-50);border:3px solid var(--primary);flex-shrink:0}
.health-score-number{font-size:2rem;font-weight:800;color:var(--primary);line-height:1}
.health-score-label{font-size:.75rem;color:var(--gray-500)}
.health-grade{font-size:1.5rem;font-weight:800;padding:.25rem .75rem;border-radius:var(--radius-sm);color:#fff}
.health-grade-ap,.health-grade-a{background:var(--success)}
.health-grade-b{background:#3b82f6}
.health-grade-c{background:var(--warning)}
.health-grade-d,.health-grade-f{background:var(--danger)}
.health-breakdown{flex:1;min-width:200px;display:flex;flex-direction:column;gap:.4rem}
.health-bar-item{display:flex;align-items:center;gap:.5rem;font-size:.82rem}
.health-bar-item>span:first-child{width:90px;flex-shrink:0;color:var(--gray-600)}
.health-bar-item>span:last-child{width:28px;text-align:right;font-weight:600;color:var(--gray-700)}
.health-bar-item .progress-bar{flex:1;height:6px}
.health-tips{margin-top:.75rem;display:flex;flex-direction:column;gap:.35rem}
.health-tip{font-size:.85rem;color:var(--gray-600);padding:.4rem .6rem;background:var(--gray-50);border-radius:var(--radius-sm)}
[data-theme="dark"] .health-tip{background:var(--gray-100)}
.insights-list{display:flex;flex-direction:column;gap:.5rem}
.insight-card{display:flex;gap:.75rem;padding:.75rem;border-radius:var(--radius-sm);border-left:3px solid var(--gray-300)}
.insight-warning{border-left-color:var(--warning);background:var(--warning-light)}
.insight-info{border-left-color:#3b82f6;background:rgba(59,130,246,.06)}
.insight-success{border-left-color:var(--success);background:var(--success-light)}
.insight-icon{font-size:1.25rem;flex-shrink:0;line-height:1.4}
.insight-content{flex:1}
.insight-title{font-weight:600;font-size:.9rem;margin-bottom:.15rem}
.insight-desc{font-size:.82rem;color:var(--gray-600);line-height:1.5}
.insight-action{font-size:.8rem;color:var(--primary);font-weight:600;text-decoration:none;margin-top:.25rem;display:inline-block}
.insight-action:hover{text-decoration:underline}
.report-card-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}
.report-card-grade{display:flex;align-items:center;gap:.75rem}
.report-card-highlights{margin-top:.75rem}
.report-card-highlights li{font-size:.85rem;padding:.2rem 0;color:var(--gray-600)}
.year-review-hero{text-align:center;padding:1.5rem;background:linear-gradient(135deg,var(--primary-50),rgba(6,182,212,.08));border-radius:var(--radius-lg);margin-bottom:1rem}
.year-review-hero h3{font-size:1.3rem;font-weight:700;margin-bottom:.5rem}
.year-review-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin:1rem 0}
.year-review-stat{text-align:center;padding:.75rem;background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--gray-200)}
.year-review-stat .stat-val{font-size:1.3rem;font-weight:700;color:var(--primary)}
.year-review-stat .stat-lbl{font-size:.75rem;color:var(--gray-500);display:block}
.whatif-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:1rem}
.whatif-result{padding:1rem;border-radius:var(--radius-sm);margin-top:1rem}
.whatif-sustainable{background:var(--success-light);border:1px solid var(--success)}
.whatif-unsustainable{background:var(--danger-light);border:1px solid var(--danger)}
.whatif-comparison{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:.75rem}
.whatif-col h4{font-size:.85rem;color:var(--gray-500);margin-bottom:.5rem}
.auto-budget-table{width:100%}
.auto-budget-table td,.auto-budget-table th{padding:.4rem .6rem}
.shareable-text{font-size:.82rem;color:var(--gray-500);background:var(--gray-50);padding:.6rem;border-radius:var(--radius-sm);margin-top:.75rem;word-break:break-word}
[data-theme="dark"] .shareable-text{background:var(--gray-100)}
.copy-btn{font-size:.75rem;padding:.2rem .5rem;margin-left:.5rem}

