:root{--bg-primary: #2b4c77;--bg-card: #202f5f;--bg-hover: #0f1736;--text-primary: #eef2ff;--text-secondary: #b7c3e1;--text-muted: #7f8bb1;--border: rgba(255, 255, 255, .08);--accent: #22d3ee;--accent-light: rgba(34, 211, 238, .14);--success: #22c55e;--success-light: rgba(34, 197, 94, .16);--warning: #f59e0b;--warning-light: rgba(245, 158, 11, .16);--danger: #fb7185;--danger-light: rgba(251, 113, 133, .14);--shadow-sm: 0 10px 24px rgba(0, 0, 0, .35);--shadow-md: 0 18px 50px rgba(0, 0, 0, .45);--shadow-lg: 0 28px 80px rgba(0, 0, 0, .55);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--font-sans: "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#1a4e80,#0d9488,#14b8a6)}.login-card{background:linear-gradient(135deg,#1e3472d9,#1e6c91d9);border-radius:var(--radius-lg);box-shadow:0 25px 50px #00000059,inset 0 0 0 1px #ffffff2e;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);width:100%;max-width:440px;overflow:hidden}.login-header{background:linear-gradient(135deg,var(--accent-dark),var(--accent));color:#fff;padding:32px 32px 24px;text-align:center}.login-header h1{font-family:Urbanist,sans-serif;font-size:2.75rem;margin-bottom:8px}.login-header p{opacity:.9;font-size:.95rem}.login-form{padding:32px}.login-form h2{font-size:1.25rem;margin-bottom:24px;text-align:center;color:var(--text)}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:6px;color:var(--text)}.form-group input{width:100%;padding:12px 14px;font-size:1rem;border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color .2s,box-shadow .2s}.form-group input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0d948826}.form-group input:disabled{background:var(--bg);cursor:not-allowed}.btn-auth{width:100%;padding:14px;font-size:1rem;font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .2s,transform .1s}.btn-auth:hover:not(:disabled){background:var(--accent-dark)}.btn-auth:active:not(:disabled){transform:scale(.98)}.btn-auth:disabled{opacity:.7;cursor:not-allowed}.auth-error{background:#fef2f2;color:#dc2626;padding:12px 14px;border-radius:var(--radius-sm);font-size:.875rem;margin-bottom:20px;border:1px solid #fecaca}.auth-message{background:#f0fdf4;color:#16a34a;padding:12px 14px;border-radius:var(--radius-sm);font-size:.875rem;margin-bottom:20px;border:1px solid #bbf7d0}.login-footer{text-align:center;padding:0 32px 24px;color:var(--text-muted);font-size:.875rem}.link-btn{background:none;border:none;color:var(--accent);font-weight:600;cursor:pointer;font-size:inherit}.link-btn:hover{text-decoration:underline}.login-features{background:var(--bg);padding:24px 32px;border-top:1px solid var(--border)}.login-features h3{font-size:.875rem;color:var(--text-muted);margin-bottom:12px}.login-features ul{list-style:none}.login-features li{font-size:.875rem;padding:6px 0;color:var(--text)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}.app{min-height:100vh;display:flex;flex-direction:column}.data-banner{background:linear-gradient(135deg,var(--accent) 0%,#14b8a6 100%);color:#fff;padding:10px 24px;display:flex;align-items:center;justify-content:center;gap:16px;font-size:14px}.btn-small{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:4px 12px;border-radius:6px;font-size:12px;cursor:pointer;transition:all .2s}.btn-small:hover{background:#ffffff4d}.header{background:var(--bg-card);border-bottom:1px solid var(--border);padding:32px 24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:24px}.header-content h1{font-family:Urbanist,sans-serif;font-weight:500;font-size:44px;color:var(--text-primary);margin-bottom:4px}.header-content p{color:var(--text-secondary);font-size:15px}.upload-section{flex-shrink:0}.upload-zone{border:2px dashed var(--border);border-radius:var(--radius-md);padding:16px 24px;text-align:center;transition:all .2s;cursor:pointer;min-width:280px}.upload-zone:hover,.upload-zone.dragging{border-color:var(--accent);background:var(--accent-light)}.upload-zone.uploading{opacity:.7;pointer-events:none}.file-input{display:none}.upload-label{display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}.upload-icon{font-size:24px}.upload-text{font-size:14px;font-weight:500;color:var(--text-primary)}.upload-hint{font-size:12px;color:var(--text-muted)}.upload-error{color:var(--danger);font-size:13px;margin-top:8px;text-align:center}.dashboard{flex:1;padding:24px;max-width:1400px;margin:0 auto;width:100%}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px}.summary-card{background:var(--bg-card);border-radius:var(--radius-md);padding:20px;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:transform .2s,box-shadow .2s}.summary-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.card-icon{font-size:32px;width:56px;height:56px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--bg-hover)}.summary-card.green .card-icon{background:var(--success-light)}.summary-card.red .card-icon{background:var(--danger-light)}.summary-card.blue .card-icon{background:#dbeafe}.card-content{display:flex;flex-direction:column}.card-label{font-size:13px;color:var(--text-secondary);font-weight:500}.card-value{font-size:24px;font-weight:700;color:var(--text-primary)}.summary-card.green .card-value{color:var(--success)}.summary-card.red .card-value{color:var(--danger)}.charts-row{display:grid;grid-template-columns:1fr 2fr;gap:24px;margin-bottom:24px}@media (max-width: 1024px){.charts-row{grid-template-columns:1fr}}.chart-card{background:var(--bg-card);border-radius:var(--radius-md);padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.chart-card h3{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:16px}.chart-container{display:flex;align-items:center;gap:24px}@media (max-width: 600px){.chart-container{flex-direction:column}}.chart-legend{display:flex;flex-direction:column;gap:8px;min-width:140px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-color{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label{flex:1;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-value{font-weight:600;color:var(--text-primary)}.insights-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px}.insight-card{background:var(--bg-card);border-radius:var(--radius-md);padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.insight-card h3{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:16px}.no-data{color:var(--text-muted);font-size:14px;text-align:center;padding:24px 0}.no-data.success{color:var(--success)}.habit-highlight{display:flex;justify-content:space-between;align-items:center;background:var(--accent-light);padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:16px}.habit-merchant{font-weight:600;color:var(--accent);font-size:18px}.habit-visits{font-size:13px;color:var(--text-secondary);background:#fff;padding:4px 10px;border-radius:20px}.habit-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.stat{text-align:center}.stat-label{display:block;font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.stat-value{font-size:16px;font-weight:600;color:var(--text-primary)}.savings-callout{background:linear-gradient(135deg,var(--success) 0%,#0c7036 100%);color:#fff;padding:16px;border-radius:var(--radius-sm);text-align:center}.savings-label{display:block;font-size:12px;opacity:.9;margin-bottom:4px}.savings-value{display:block;font-size:28px;font-weight:700}.savings-hint{display:block;font-size:12px;opacity:.8;margin-top:4px}.subs-summary{display:flex;justify-content:space-around;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}.subs-stat{text-align:center}.subs-stat .subs-count{display:block;font-size:24px;font-weight:700;color:var(--accent)}.subs-stat.warning .subs-count{color:var(--warning)}.subs-stat .subs-label{font-size:12px;color:var(--text-muted)}.subs-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.sub-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg-hover);border-radius:var(--radius-sm);font-size:14px}.sub-left{display:flex;flex-direction:column;gap:2px}.sub-item.unused{background:var(--warning-light)}.sub-name{font-weight:500}.sub-amount{color:var(--text-secondary)}.sub-badge{background:var(--warning);color:#fff;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600}.waste-callout{background:var(--warning-light);padding:12px;border-radius:var(--radius-sm);font-size:13px;color:#a8521d}.anomaly-summary{font-size:14px;color:var(--text-secondary);margin-bottom:16px}.anomaly-list{display:flex;flex-direction:column;gap:12px}.anomaly-item{padding:12px;background:var(--danger-light);border-radius:var(--radius-sm);border-left:3px solid var(--danger)}.anomaly-main{display:flex;justify-content:space-between;margin-bottom:4px}.anomaly-merchant{font-weight:600;color:var(--text-primary)}.anomaly-amount{font-weight:600;color:var(--danger)}.anomaly-reason{font-size:12px;color:var(--text-secondary)}.goal-card{grid-column:span 1}@media (min-width: 1024px){.goal-card{grid-column:span 3}}.goal-inputs{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap}.input-group{flex:1;min-width:140px}.input-group label{display:block;font-size:12px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.input-with-prefix,.input-with-suffix{display:flex;align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.input-with-prefix .prefix,.input-with-suffix .suffix{padding:10px 12px;color:var(--text-muted);background:var(--bg-primary);font-size:14px}.input-with-prefix input,.input-with-suffix input{flex:1;border:none;background:transparent;padding:10px 12px;font-size:16px;font-weight:600;color:var(--text-primary);outline:none;min-width:80px}.btn-primary{background:var(--accent);color:#fff;border:none;padding:12px 24px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;align-self:flex-end}.btn-primary:hover{background:#0f766e;transform:translateY(-1px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.goal-results{border-top:1px solid var(--border);padding-top:20px}.goal-progress{margin-bottom:16px}.progress-bar{height:12px;background:var(--bg-hover);border-radius:6px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;border-radius:6px;transition:width .5s ease}.progress-labels{display:flex;justify-content:space-between;font-size:13px;color:var(--text-secondary)}.goal-verdict{padding:12px 16px;border-radius:var(--radius-sm);font-weight:500;text-align:center;margin-bottom:16px}.goal-verdict.success{background:var(--success-light);color:#065f46}.goal-verdict.warning{background:var(--warning-light);color:#92400e}.recommendations{background:var(--bg-hover);padding:16px;border-radius:var(--radius-sm);margin-bottom:16px}.recommendations h4{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:12px}.recommendation{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.recommendation:last-child{border-bottom:none}.rec-action{font-size:14px;color:var(--text-primary)}.rec-savings{font-size:14px;font-weight:600;color:var(--success)}.confidence-badge{text-align:center;font-size:12px;color:var(--text-muted);padding:8px;background:var(--bg-hover);border-radius:var(--radius-sm)}.goal-metrics{margin-top:12px;display:grid;gap:10px}.metric-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg-hover);border:1px solid var(--border);border-radius:var(--radius-sm)}.metric-label{font-size:13px;color:var(--text-secondary);font-weight:500}.metric-value{font-size:14px;font-weight:700;color:var(--text-primary);white-space:nowrap}.goal-metrics .metric-row:first-child{background:linear-gradient(135deg,var(--accent-light) 0%,#ffffff 100%);border-color:#0d948840}.goal-metrics .metric-row:first-child .metric-value{color:var(--accent)}.metric-row.gap .metric-value{color:var(--warning)}.main-layout{display:flex;gap:1.5rem;padding-right:1.5rem;background:transparent}.main-content{flex:1;min-width:0}.right-sidebar{width:400px;flex-shrink:0;display:flex;flex-direction:column;gap:1rem;padding-top:3rem;align-self:flex-start;background:transparent}.right-sidebar .upload-section{margin:0;margin-top:-1.5rem}.ai-advice-card{background:linear-gradient(135deg,#0f172a,#1e293b);border:1px solid #0d9488;border-radius:12px;padding:1.25rem;min-height:450px}.ai-prompt{text-align:center;padding:1rem 0}.ai-prompt p{color:#94a3b8;margin-bottom:1rem;font-size:.9rem}.ai-loading{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 0;color:#94a3b8}.spinner-small{width:24px;height:24px;border:2px solid #1e293b;border-top-color:#0d9488;border-radius:50%;animation:spin .8s linear infinite}.ai-error{text-align:center;color:#f87171;padding:1rem 0;font-size:.9rem}.ai-error p{margin-bottom:.75rem}.ai-response{display:flex;flex-direction:column;gap:1rem}.advice-content{background:#0d94881a;border-radius:8px;padding:1rem;border-left:3px solid #0d9488;max-height:500px;overflow-y:auto;font-size:.9rem;line-height:1.6}.advice-content p{margin:.5rem 0}.ai-response .btn-outline{align-self:flex-start}@media (max-width: 1024px){.main-layout{flex-direction:column}.right-sidebar{width:100%;flex-direction:row;flex-wrap:wrap}.right-sidebar>*{flex:1;min-width:280px}.ai-advice-card{min-height:auto}}.loading-screen,.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center;gap:16px}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-screen h1{font-size:24px;color:var(--text-primary)}.error-screen p{color:var(--text-secondary);max-width:400px}.loading{padding:40px;text-align:center;color:var(--text-muted)}.footer{background:var(--bg-card);border-top:1px solid var(--border);padding:16px 24px;text-align:center}.footer p{font-size:13px;color:var(--text-muted)}@media (max-width: 768px){.header{flex-direction:column;text-align:center}.upload-zone{min-width:100%}.dashboard{padding:16px}.summary-cards{grid-template-columns:1fr 1fr}.insights-grid{grid-template-columns:1fr}.goal-inputs{flex-direction:column}.btn-primary{width:100%}}@media (max-width: 480px){.summary-cards,.habit-stats{grid-template-columns:1fr}.subs-summary{flex-direction:column;gap:16px}}body{background:radial-gradient(1200px 700px at 15% 5%,rgba(124,58,237,.16),transparent 55%),radial-gradient(900px 600px at 85% 10%,rgba(34,211,238,.12),transparent 55%),linear-gradient(180deg,#060816 0%,var(--bg-primary) 100%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.summary-card,.chart-card,.insight-card{background:linear-gradient(180deg,#ffffff08,#ffffff03);background-color:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.summary-card:hover{box-shadow:var(--shadow-md)}.header,.footer{background:#0b1026a6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-color:var(--border)}.upload-zone{background:#ffffff05;border-color:#ffffff1a}.upload-zone:hover,.upload-zone.dragging{border-color:#22d3ee8c;background:#22d3ee14}.input-with-prefix,.input-with-suffix{background:#ffffff08;border-color:#ffffff1a}.input-with-prefix .prefix,.input-with-suffix .suffix{background:#ffffff05;color:var(--text-muted)}.input-with-prefix:focus-within,.input-with-suffix:focus-within,.upload-zone:focus-within{border-color:#22d3ee8c;box-shadow:0 0 0 4px #22d3ee1f}.btn-primary{background:linear-gradient(135deg,#22d3ee,#0ea5e9 55%,#7c3aed 120%);box-shadow:0 18px 40px #22d3ee24}.btn-primary:hover{filter:brightness(1.04)}.btn-small{background:#ffffff14;border-color:#ffffff29}.habit-highlight{background:#22d3ee1a}.habit-visits{background:#ffffff0f;color:var(--text-secondary)}.sub-item{background:#ffffff08}.sub-item.unused{background:#f59e0b1f}.anomaly-item{background:#fb71851a;border-left-color:var(--danger)}.anomaly-amount{color:var(--danger)}.progress-bar{background:#ffffff0f}.goal-verdict.success{background:#22c55e24;color:#bbf7d0}.goal-verdict.warning{background:#f59e0b24;color:#fde68a}.recommendations,.confidence-badge{background:#ffffff08;border:1px solid rgba(255,255,255,.06)}.chart-card .recharts-cartesian-grid line{stroke:#ffffff14}.mode-toggle .btn-small.active{background:#22d3ee38;border-color:#22d3ee8c;box-shadow:0 0 0 3px #22d3ee1a}.sub-item.review{background:#f59e0b1f;border-left:3px solid var(--warning)}.sub-meta{font-size:12px;color:var(--text-muted)}.sub-meta.flagged{color:#fde68a}.waste-callout .callout-sep{opacity:.8;margin:0 6px}
