*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#f7f8fa;--color-surface:#fff;--color-surface-dim:#f1f3f5;--color-surface-bright:#e9ecef;--color-surface-container-lowest:#fff;--color-surface-container-low:#f8f9fa;--color-surface-container:#f1f3f5;--color-surface-container-high:#e9ecef;--color-surface-container-highest:#dee2e6;--color-on-surface:#0f172a;--color-on-surface-variant:#64748b;--color-outline:#94a3b8;--color-outline-variant:#cbd5e1;--color-primary:#0d9488;--color-primary-soft:#14b8a6;--color-primary-dim:#0f766e;--color-primary-muted:#0d94881a;--color-secondary:#475569;--color-secondary-soft:#64748b;--color-tertiary:#059669;--color-tertiary-soft:#10b981;--color-error:#dc2626;--color-error-muted:#dc262614;--color-warning:#d97706;--color-success-muted:#05966914;--bg-primary:var(--color-bg);--text-secondary:var(--color-on-surface-variant);--accent-primary:var(--color-primary);--glass-bg:var(--color-surface);--glass-bg-hover:var(--color-surface-container-low);--glass-border:#e2e8f0;--glass-border-bright:#cbd5e1;--glass-blur:0px;--cat-food:#ef4444;--cat-grocery:#22c55e;--cat-loans:#f97316;--cat-emi:#ec4899;--cat-clothing:#a855f7;--cat-leisure:#3b82f6;--cat-shopping:#14b8a6;--cat-transport:#eab308;--cat-utilities:#6366f1;--cat-health:#f472b6;--cat-rent:#c084fc;--cat-investments:#10b981;--cat-misc:#94a3b8;--font-heading:"Sora", system-ui, -apple-system, sans-serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--text-display:clamp(2rem, 1.6rem + 2vw, 3rem);--text-h1:clamp(1.5rem, 1.2rem + 1.5vw, 2rem);--text-h2:clamp(1.15rem, 1rem + .75vw, 1.5rem);--text-h3:1.125rem;--text-body:.9375rem;--text-small:.8125rem;--text-caption:.75rem;--text-data:.875rem;--text-base:1rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--spacing-lg:var(--space-6);--spacing-xl:var(--space-8);--spacing-2xl:var(--space-12);--radius-sm:.375rem;--radius-md:.625rem;--radius-lg:.875rem;--radius-xl:1.25rem;--radius-2xl:1.5rem;--radius-full:9999px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--duration-press:.12s;--duration-ui:.2s;--duration-enter:.32s;--transition-fast:var(--duration-press) var(--ease-out);--transition-base:var(--duration-ui) var(--ease-out);--transition-slow:.3s var(--ease-in-out);--shadow-sm:0 1px 2px #0f172a0d;--shadow-md:0 4px 12px #0f172a0f;--shadow-lg:0 8px 24px #0f172a14;--shadow-card:var(--shadow-sm);--shadow-card-hover:var(--shadow-md);--sidebar-width:260px;--topbar-height:64px}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}body{font-family:var(--font-body);font-size:var(--text-body);color:var(--color-on-surface);background:var(--color-bg);min-height:100vh;line-height:1.6;overflow-x:hidden}body:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(70% 50% at 10% 0,#0d94880a 0%,#0000 55%),radial-gradient(50% 40% at 90% 10%,#3b82f608 0%,#0000 50%);position:fixed;inset:0}#root{min-height:100vh;position:relative}.glass-card{background:var(--color-surface);border:1px solid var(--glass-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);transition:box-shadow var(--transition-base), border-color var(--transition-base), transform var(--transition-base)}.glass-card:hover{border-color:var(--glass-border-bright)}.glass-card--interactive:hover{box-shadow:var(--shadow-card-hover);border-color:var(--color-primary-muted);transform:translateY(-2px)}.glass-card--interactive:active{transition:transform var(--transition-fast);transform:translateY(0)scale(.99)}.glass-card--selected{border-color:var(--color-primary);box-shadow:var(--shadow-md), 0 0 0 3px var(--color-primary-muted)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.03em;color:var(--color-on-surface);font-weight:600;line-height:1.2}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2)}h3{font-size:var(--text-h3)}.text-display{font-family:var(--font-heading);font-size:var(--text-display);letter-spacing:-.04em;color:var(--color-on-surface);font-weight:700;line-height:1.1}.text-data{font-family:var(--font-body);font-size:var(--text-data);letter-spacing:.02em;font-variant-numeric:tabular-nums;font-weight:500}.text-caption{font-size:var(--text-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--color-on-surface-variant);font-weight:600}.text-muted{color:var(--color-on-surface-variant)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary-soft)}.text-tertiary{color:var(--color-tertiary)}.text-error{color:var(--color-error)}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-body);font-size:var(--text-small);border-radius:var(--radius-lg);cursor:pointer;transition:background-color var(--transition-base), border-color var(--transition-base), color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-fast);white-space:nowrap;border:none;font-weight:600;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--color-primary-dim);box-shadow:var(--shadow-md)}.btn-ghost{color:var(--color-on-surface);border:1px solid var(--glass-border);background:0 0}.btn-ghost:hover{background:var(--color-surface-container-low);border-color:var(--glass-border-bright)}.btn-outline{color:var(--color-on-surface);border:1px solid var(--glass-border);background:0 0}.btn-outline:hover{background:var(--color-surface-container-low)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-caption)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--text-body)}.input{font-family:var(--font-body);font-size:var(--text-small);transition:border-color var(--transition-base), box-shadow var(--transition-base);outline:none}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-muted)}.chip{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-caption);letter-spacing:.02em;font-weight:600;display:inline-flex}.app-layout{background:var(--color-bg);min-height:100vh;display:flex}.main-content{margin-left:var(--sidebar-width);padding:var(--space-8);padding-top:calc(var(--topbar-height) + var(--space-8));max-width:calc(100vw - var(--sidebar-width));flex:1}.grid{gap:var(--space-6);display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-dashboard{gap:var(--space-6);grid-template-columns:repeat(12,1fr);display:grid}.col-span-4{grid-column:span 4}.col-span-6{grid-column:span 6}.col-span-8{grid-column:span 8}.col-span-12{grid-column:span 12}.carousel{gap:var(--space-4);padding-bottom:var(--space-4);scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow-x:auto}.carousel::-webkit-scrollbar{display:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-outline-variant);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-outline)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}.animate-in{animation:fadeInUp var(--duration-enter) var(--ease-out) forwards}.animate-in-scale{animation:fadeInScale var(--duration-enter) var(--ease-out) forwards}.animate-in-delay-1{opacity:0;animation-delay:60ms}.animate-in-delay-2{opacity:0;animation-delay:.12s}.animate-in-delay-3{opacity:0;animation-delay:.18s}.animate-in-delay-4{opacity:0;animation-delay:.24s}.chart-row{align-items:stretch;gap:var(--space-6);min-height:480px;display:flex}.chart-row>*{min-width:0;display:flex}.chart-card{flex-direction:column;flex:1;width:100%;height:100%;display:flex}.chart-card-body{flex:1;min-height:280px}.category-legend-btn{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-body);text-align:left;transition:background-color var(--transition-base), border-color var(--transition-base), transform var(--transition-fast);background:0 0;border:1px solid #0000;display:flex}.category-legend-btn:hover{background:var(--color-surface-container-low)}.category-legend-btn:active{transform:scale(.98)}.category-legend-btn--selected{background:var(--color-primary-muted);border-color:#0d948840}.tx-row:hover{background:var(--color-surface-container-low)}.filter-chip{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--color-primary-muted);color:var(--color-primary-dim);font-size:var(--text-caption);letter-spacing:.02em;text-transform:none;font-weight:600;display:inline-flex}.skeleton{background:linear-gradient(90deg, var(--color-surface-container) 25%, var(--color-surface-container-high) 50%, var(--color-surface-container) 75%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.5s infinite shimmer}.loading-spinner{border:3px solid var(--color-surface-container-high);border-top-color:var(--color-primary);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.skeleton{background:var(--color-surface-container);animation:none}}@media (width<=1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.grid-dashboard{grid-template-columns:1fr}.col-span-4,.col-span-6,.col-span-8,.col-span-12{grid-column:span 1}}@media (width<=768px){.main-content{padding:var(--space-4);padding-top:calc(var(--topbar-height) + var(--space-4));max-width:100vw;margin-left:0}.grid-2,.grid-4{grid-template-columns:1fr}}.auth-container{background:var(--color-bg);min-height:100vh;font-family:var(--font-body);display:flex}.auth-left{padding:var(--spacing-2xl);border-right:1px solid var(--glass-border);background:linear-gradient(160deg,#f0fdfa 0%,#f7f8fa 50%,#eff6ff 100%);flex-direction:column;flex:1;justify-content:center;display:none}@media (width>=1024px){.auth-left{display:flex}}.auth-branding{max-width:480px;margin:0 auto}.auth-branding h1{font-family:var(--font-heading);margin-bottom:var(--spacing-lg);color:var(--color-on-surface);letter-spacing:-.03em;animation:slideUp var(--duration-enter) var(--ease-out) forwards;font-size:clamp(2.25rem,2rem + 1.5vw,3.25rem);font-weight:700;line-height:1.1}.auth-branding p{color:var(--color-on-surface-variant);opacity:0;animation:slideUp var(--duration-enter) var(--ease-out) 60ms forwards;font-size:1.125rem;line-height:1.6}.auth-right{padding:var(--spacing-xl);flex:1;justify-content:center;align-items:center;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--glass-border);border-radius:var(--radius-2xl);width:100%;max-width:420px;box-shadow:var(--shadow-lg);animation:scaleIn var(--duration-enter) var(--ease-out) forwards;padding:40px}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.98)translateY(6px)}to{opacity:1;transform:scale(1)translateY(0)}}.auth-header{text-align:center;margin-bottom:32px}.auth-header h2{font-family:var(--font-heading);color:var(--color-on-surface);letter-spacing:-.02em;margin-bottom:8px;font-size:1.75rem;font-weight:700}.auth-header p{color:var(--color-on-surface-variant);font-size:.95rem}.auth-error{background:var(--color-error-muted);color:var(--color-error);border-radius:var(--radius-lg);border:1px solid #dc262626;align-items:center;gap:8px;margin-bottom:24px;padding:12px 16px;font-size:.875rem;display:flex}.auth-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex;position:relative}.form-group label{color:var(--color-on-surface);transition:color var(--transition-base);font-size:.875rem;font-weight:500}.form-group:focus-within label{color:var(--color-primary)}.input-wrapper{align-items:center;display:flex;position:relative}.input-icon{left:var(--space-4);color:var(--color-outline);transition:color var(--transition-base);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.password-toggle{right:var(--space-4);color:var(--color-outline);cursor:pointer;transition:color var(--transition-base);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.password-toggle:hover{color:var(--color-on-surface)}.form-group:focus-within .input-icon{color:var(--color-primary)}.form-group input{background:var(--color-surface-container-low);border:1px solid var(--glass-border);border-radius:var(--radius-lg);width:100%;color:var(--color-on-surface);font-size:1rem;font-family:var(--font-body);transition:border-color var(--transition-base), box-shadow var(--transition-base), background-color var(--transition-base);padding:14px 44px}.form-group input::placeholder{color:var(--color-outline)}.form-group input:focus{background:var(--color-surface);border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-muted);outline:none}.auth-button{background:var(--color-primary);color:#fff;border-radius:var(--radius-lg);width:100%;font-size:1rem;font-weight:600;font-family:var(--font-body);cursor:pointer;transition:background-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-fast);border:none;justify-content:center;align-items:center;gap:8px;margin-top:8px;padding:14px;display:flex}.auth-button:hover:not(:disabled){background:var(--color-primary-dim);box-shadow:var(--shadow-md)}.auth-button:active:not(:disabled){transform:scale(.97)}.auth-button:disabled{opacity:.6;cursor:not-allowed;background:var(--color-outline-variant)}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}.auth-footer{text-align:center;color:var(--color-on-surface-variant);margin-top:32px;font-size:.875rem}.text-button{color:var(--color-primary);cursor:pointer;font-weight:600;font-size:inherit;transition:color var(--transition-base);background:0 0;border:none;padding:0 4px}.text-button:hover{color:var(--color-primary-dim)}@media (prefers-reduced-motion:reduce){.auth-branding h1,.auth-branding p,.auth-card{opacity:1;animation:none}}
