:root{--primary: #006c49;--primary-container: #10b981;--primary-fixed: #6ffbbe;--primary-fixed-dim: #4edea3;--on-primary: #ffffff;--on-primary-container: #00422b;--secondary: #0058be;--secondary-container: #2170e4;--secondary-fixed: #d8e2ff;--on-secondary: #ffffff;--tertiary: #b91a24;--tertiary-container: #ff7a73;--on-tertiary: #ffffff;--error: #ba1a1a;--surface: #f7f9fb;--surface-dim: #d8dadc;--surface-bright: #f7f9fb;--surface-container-lowest: #ffffff;--surface-container-low: #f2f4f6;--surface-container: #eceef0;--surface-container-high: #e6e8ea;--surface-container-highest: #e0e3e5;--surface-variant: #e0e3e5;--on-surface: #191c1e;--on-surface-variant: #3c4a42;--outline: #6c7a71;--outline-variant: #bbcabf;--inverse-surface: #2d3133;--inverse-on-surface: #eff1f3;--inverse-primary: #4edea3;--gradient-primary: linear-gradient(135deg, #006c49, #10b981);--gradient-primary-hover: linear-gradient(135deg, #005236, #0ea572);--shadow-sm: 0 2px 8px rgba(25, 28, 30, .04);--shadow-md: 0 4px 16px rgba(25, 28, 30, .06);--shadow-lg: 0 8px 32px rgba(25, 28, 30, .08);--shadow-float: 0 12px 40px rgba(25, 28, 30, .08);--font-headline: "Manrope", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--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;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-med: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background:var(--surface);color:var(--on-surface);line-height:1.5;min-height:100dvh;overflow-x:hidden}#app{max-width:430px;margin:0 auto;min-height:100dvh;position:relative;background:var(--surface)}#main-content{padding:var(--space-8);padding-bottom:calc(80px + var(--space-8));min-height:100dvh;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.display-lg{font-family:var(--font-headline);font-size:3rem;font-weight:800;line-height:1.1;letter-spacing:-.03em;font-feature-settings:"tnum"}.display-md{font-family:var(--font-headline);font-size:2.25rem;font-weight:700;line-height:1.15;letter-spacing:-.02em}.headline-lg{font-family:var(--font-headline);font-size:1.5rem;font-weight:700;line-height:1.25;letter-spacing:-.01em}.headline-md{font-family:var(--font-headline);font-size:1.125rem;font-weight:600;line-height:1.3}.title-md{font-family:var(--font-headline);font-size:1rem;font-weight:600;line-height:1.4}.body-lg{font-family:var(--font-body);font-size:1rem;font-weight:400;line-height:1.5}.body-md{font-family:var(--font-body);font-size:.875rem;font-weight:400;line-height:1.5}.body-sm{font-family:var(--font-body);font-size:.75rem;font-weight:400;line-height:1.4}.label-lg{font-family:var(--font-body);font-size:.875rem;font-weight:600;line-height:1.3;letter-spacing:.02em;text-transform:uppercase}.label-md{font-family:var(--font-body);font-size:.75rem;font-weight:500;line-height:1.3;letter-spacing:.03em;text-transform:uppercase}.mono{font-family:var(--font-body);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.text-primary{color:var(--primary)}.text-secondary{color:var(--secondary)}.text-tertiary{color:var(--tertiary)}.text-muted{color:var(--on-surface-variant)}.text-income{color:var(--primary-container)}.text-expense{color:var(--tertiary)}#bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:430px;background:#ffffffb3;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:var(--space-2) var(--space-4);padding-bottom:max(var(--space-2),env(safe-area-inset-bottom));display:flex;justify-content:space-around;align-items:center;z-index:100;box-shadow:0 -4px 32px #191c1e0f}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);text-decoration:none;color:var(--on-surface-variant);position:relative;-webkit-tap-highlight-color:transparent}.nav-item:hover{background:var(--surface-container-high)}.nav-item.active{color:var(--primary)}.nav-item.active:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:32px;height:3px;background:var(--gradient-primary);border-radius:0 0 var(--radius-full) var(--radius-full)}.nav-item .material-symbols-outlined{font-size:24px;transition:transform var(--transition-fast)}.nav-item.active .material-symbols-outlined{transform:scale(1.1);font-variation-settings:"FILL" 1}.nav-label{font-family:var(--font-body);font-size:.625rem;font-weight:500;letter-spacing:.02em}.nav-fab{width:52px;height:52px;border-radius:var(--radius-xl);background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;color:var(--on-primary);box-shadow:var(--shadow-lg);cursor:pointer;transition:all var(--transition-fast);border:none;margin-top:-20px}.nav-fab:hover{transform:scale(1.05);box-shadow:var(--shadow-float)}.nav-fab:active{transform:scale(.98)}.nav-fab .material-symbols-outlined{font-size:26px;color:#fff}.card{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:var(--space-6);transition:all var(--transition-med);animation:slideUp .4s ease both}.card:hover{box-shadow:var(--shadow-sm)}.card-elevated{background:var(--surface-container-lowest);box-shadow:var(--shadow-sm)}.card-tonal{background:var(--surface-container-low)}.card-hero{background:var(--gradient-primary);color:#fff;border-radius:var(--radius-xl);padding:var(--space-8);position:relative;overflow:hidden}.card-hero:before{content:"";position:absolute;top:-50%;right:-30%;width:200px;height:200px;background:#ffffff14;border-radius:50%}.card-hero:after{content:"";position:absolute;bottom:-30%;left:-20%;width:150px;height:150px;background:#ffffff0d;border-radius:50%}.card-glass{background:#e0e3e599;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-lg);padding:var(--space-5);border:1px solid rgba(187,202,191,.15)}.transaction-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5);background:var(--surface-container-lowest);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);position:relative;animation:slideUp .4s ease both}.transaction-card:hover{background:var(--surface-container-low);transform:translate(4px)}.transaction-card:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:4px;border-radius:var(--radius-full)}.transaction-card.income:before{background:var(--primary-container)}.transaction-card.expense:before{background:var(--tertiary)}.transaction-icon{width:44px;height:44px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.transaction-icon.income{background:#10b9811f;color:var(--primary-container)}.transaction-icon.expense{background:#b91a241a;color:var(--tertiary)}.transaction-info{flex:1;min-width:0}.transaction-concept{font-family:var(--font-headline);font-size:.9375rem;font-weight:600;color:var(--on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.transaction-category{font-size:.75rem;color:var(--on-surface-variant);margin-top:2px}.transaction-amount{font-family:var(--font-body);font-size:1rem;font-weight:700;font-feature-settings:"tnum";white-space:nowrap}.transaction-amount.income{color:var(--primary-container)}.transaction-amount.expense{color:var(--tertiary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:var(--space-3) var(--space-6);border:none;border-radius:var(--radius-xl);font-family:var(--font-headline);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}.btn-primary{background:var(--gradient-primary);color:var(--on-primary);box-shadow:var(--shadow-md)}.btn-primary:hover{background:var(--gradient-primary-hover);box-shadow:var(--shadow-lg);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--surface-container-highest);color:var(--primary)}.btn-secondary:hover{background:var(--surface-container-high)}.btn-ghost{background:transparent;color:var(--on-surface)}.btn-ghost:hover{background:var(--surface-container-high)}.btn-full{width:100%}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-4);font-size:.8125rem;border-radius:var(--radius-lg)}.form-group{margin-bottom:var(--space-6)}.form-label{display:block;font-family:var(--font-body);font-size:.75rem;font-weight:600;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-2)}.form-input{width:100%;padding:var(--space-4);background:var(--surface-container-low);border:none;border-bottom:2px solid rgba(108,122,113,.15);border-radius:var(--radius-md) var(--radius-md) 0 0;font-family:var(--font-body);font-size:1rem;color:var(--on-surface);transition:all var(--transition-fast);outline:none}.form-input:focus{border-bottom-color:var(--primary);background:var(--surface-container-lowest)}.form-input::placeholder{color:var(--outline)}.form-select{width:100%;padding:var(--space-4);background:var(--surface-container-low);border:none;border-bottom:2px solid rgba(108,122,113,.15);border-radius:var(--radius-md) var(--radius-md) 0 0;font-family:var(--font-body);font-size:1rem;color:var(--on-surface);transition:all var(--transition-fast);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%236c7a71'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer}.form-select:focus{border-bottom-color:var(--primary)}.amount-input-wrapper{position:relative}.amount-prefix{position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);font-family:var(--font-headline);font-size:1.5rem;font-weight:700;color:var(--on-surface-variant)}.amount-input{font-family:var(--font-headline);font-size:1.5rem;font-weight:700;padding-left:var(--space-10);font-feature-settings:"tnum"}.toggle-group{display:flex;background:var(--surface-container-low);border-radius:var(--radius-full);padding:3px;gap:2px}.toggle-btn{flex:1;padding:var(--space-3);border:none;border-radius:var(--radius-full);font-family:var(--font-headline);font-size:.875rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);background:transparent;color:var(--on-surface-variant)}.toggle-btn.active-income{background:var(--primary-container);color:#fff;box-shadow:var(--shadow-sm)}.toggle-btn.active-expense{background:var(--tertiary);color:#fff;box-shadow:var(--shadow-sm)}.progress-bar{width:100%;height:8px;background:var(--surface-container-high);border-radius:var(--radius-full);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-full);transition:width .8s cubic-bezier(.4,0,.2,1);background:var(--gradient-primary)}.progress-fill.savings{background:linear-gradient(90deg,var(--secondary),#60a5fa)}.progress-fill.debt{background:linear-gradient(90deg,var(--tertiary),var(--tertiary-container))}.stats-row{display:flex;gap:var(--space-4);margin-top:var(--space-6)}.stat-item{flex:1;text-align:center;padding:var(--space-4);background:#ffffff26;border-radius:var(--radius-md)}.stat-label{font-size:.6875rem;font-weight:500;opacity:.8;text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-1)}.stat-value{font-family:var(--font-headline);font-size:1.125rem;font-weight:700;font-feature-settings:"tnum"}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4);margin-top:var(--space-8)}.section-title{font-family:var(--font-headline);font-size:1.25rem;font-weight:700;color:var(--on-surface)}.section-action{font-family:var(--font-body);font-size:.8125rem;font-weight:600;color:var(--primary);cursor:pointer;background:none;border:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);transition:background var(--transition-fast)}.section-action:hover{background:#006c4914}.transaction-list{display:flex;flex-direction:column;gap:var(--space-4)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.page-header .logo{font-family:var(--font-headline);font-size:1.5rem;font-weight:800;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-header .avatar{width:40px;height:40px;border-radius:var(--radius-full);background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-headline);font-weight:700;font-size:.875rem}.chip-group{display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding:var(--space-1) 0}.chip-group::-webkit-scrollbar{display:none}.chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);background:var(--surface-container-low);font-family:var(--font-body);font-size:.8125rem;font-weight:500;color:var(--on-surface-variant);white-space:nowrap;cursor:pointer;transition:all var(--transition-fast);border:none}.chip.active{background:var(--primary);color:var(--on-primary)}.chip:hover:not(.active){background:var(--surface-container-high)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .2s ease}.modal-sheet{width:100%;max-width:430px;max-height:85dvh;background:var(--surface-container-lowest);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;padding:var(--space-6);overflow-y:auto;animation:slideUp .3s ease}.modal-handle{width:36px;height:4px;background:var(--surface-container-high);border-radius:var(--radius-full);margin:0 auto var(--space-6)}.chart-container{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-4)}.chart-wrapper{position:relative;height:220px}.upload-area{border:2px dashed rgba(108,122,113,.2);border-radius:var(--radius-lg);padding:var(--space-10);text-align:center;cursor:pointer;transition:all var(--transition-fast);background:var(--surface-container-low)}.upload-area:hover{border-color:var(--primary);background:#006c490a}.upload-area .material-symbols-outlined{font-size:48px;color:var(--outline);margin-bottom:var(--space-3)}.scanner-preview{position:relative;border-radius:var(--radius-xl);overflow:hidden;background:var(--inverse-surface);aspect-ratio:3/4;display:flex;align-items:center;justify-content:center}.scanner-preview img{width:100%;height:100%;object-fit:cover}.scanner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);color:#fff}.scanner-controls{display:flex;justify-content:center;gap:var(--space-6);margin-top:var(--space-6)}.scanner-btn{width:56px;height:56px;border-radius:var(--radius-full);background:var(--surface-container-lowest);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);border:none;box-shadow:var(--shadow-md)}.scanner-btn:hover{transform:scale(1.05)}.scanner-btn.primary{width:68px;height:68px;background:var(--gradient-primary);color:#fff}.extracted-data{background:var(--surface-container-lowest);border-radius:var(--radius-xl);padding:var(--space-6);margin-top:var(--space-6);animation:slideUp .5s ease both}.extracted-field{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) 0}.extracted-field+.extracted-field{border-top:1px solid rgba(187,202,191,.15)}.badge{display:inline-flex;align-items:center;padding:2px var(--space-3);border-radius:var(--radius-full);font-size:.6875rem;font-weight:600;letter-spacing:.02em}.badge-warning{background:#b91a241a;color:var(--tertiary)}.badge-success{background:#10b9811f;color:var(--primary)}.badge-info{background:#0058be1a;color:var(--secondary)}.empty-state{text-align:center;padding:var(--space-16) var(--space-8);color:var(--on-surface-variant)}.empty-state .material-symbols-outlined{font-size:64px;margin-bottom:var(--space-4);opacity:.4}.alert-card{padding:var(--space-5);border-radius:var(--radius-lg);display:flex;gap:var(--space-4);align-items:flex-start;animation:slideUp .4s ease both}.alert-card.warning{background:#b91a240f}.alert-card.info{background:#0058be0f}.alert-card.success{background:#10b98114}.alert-card .material-symbols-outlined{font-size:20px;flex-shrink:0;margin-top:2px}.alert-card.warning .material-symbols-outlined{color:var(--tertiary)}.alert-card.info .material-symbols-outlined{color:var(--secondary)}.alert-card.success .material-symbols-outlined{color:var(--primary-container)}.finance-item{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:var(--space-5);transition:all var(--transition-fast);animation:slideUp .4s ease both}.finance-item:hover{box-shadow:var(--shadow-sm)}.finance-item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3)}.finance-item-meta{font-size:.75rem;color:var(--on-surface-variant);margin-top:var(--space-2);display:flex;align-items:center;gap:var(--space-1)}.skeleton{background:linear-gradient(90deg,var(--surface-container-low) 25%,var(--surface-container) 50%,var(--surface-container-low) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.insight-card{background:#e0e3e599;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-6);border:1px solid rgba(187,202,191,.15);display:flex;gap:var(--space-4);align-items:flex-start}.insight-card .material-symbols-outlined{color:var(--primary-container);font-size:22px;flex-shrink:0}@media(min-width:768px){#app{box-shadow:var(--shadow-lg);border-radius:var(--radius-2xl);margin-top:var(--space-8);margin-bottom:var(--space-8);min-height:calc(100dvh - 4rem);overflow:hidden}body{background:var(--surface-container-high)}#bottom-nav{border-radius:0 0 var(--radius-2xl) var(--radius-2xl)}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface-container-high);border-radius:var(--radius-full)}.toast{position:fixed;top:var(--space-6);left:50%;transform:translate(-50%) translateY(-100px);max-width:400px;width:calc(100% - var(--space-8));padding:var(--space-4) var(--space-6);border-radius:var(--radius-lg);font-family:var(--font-body);font-size:.875rem;font-weight:500;z-index:300;transition:transform .3s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.toast.show{transform:translate(-50%) translateY(0)}.toast.success{background:#ffffffe6;color:var(--primary);box-shadow:var(--shadow-lg)}.toast.error{background:#ffffffe6;color:var(--tertiary);box-shadow:var(--shadow-lg)}.btn-delete{background:#b91a2414;color:var(--tertiary);border:none;min-height:48px;padding:var(--space-3) var(--space-6);border-radius:var(--radius-xl);font-family:var(--font-headline);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:var(--space-2)}.btn-delete:hover{background:#b91a2426}.login-container{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - var(--space-16));animation:scaleIn .5s ease}.login-card{width:100%;max-width:360px;text-align:center;padding:var(--space-8) var(--space-6);background:var(--surface-container-lowest);border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg)}.logo-lg{font-family:var(--font-headline);font-size:3rem;font-weight:800;margin-bottom:var(--space-1);background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-footer{margin-top:var(--space-10);font-size:.75rem;color:var(--on-surface-variant);opacity:.7}.fade-in{animation:fadeIn .4s ease forwards}.text-center{text-align:center}.mt-4{margin-top:var(--space-4)}.mb-4{margin-bottom:var(--space-4)}
