:root{font-family:system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{margin:0;min-width:320px}#root{width:100%}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,#0f172a,#1e293b);color:#e2e8f0;min-height:100vh}.app{max-width:1400px;margin:0 auto;padding:2rem}.loading{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.5rem;color:#94a3b8}.error-container{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;text-align:center;padding:2rem}.error-container h2{color:#ef4444;margin-bottom:1rem}.error-container p{color:#94a3b8;margin-bottom:.5rem}.error-hint{margin-top:1rem;padding:1rem;background:#1f2937;border-radius:.5rem;border:1px solid #374151}.error-hint code{background:#374151;padding:.125rem .375rem;border-radius:.25rem;color:#10b981}.header{text-align:center;margin-bottom:2rem}.header h1{font-size:2.5rem;background:linear-gradient(90deg,#10b981,#6366f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.5rem}.header p{color:#94a3b8}.filters{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.year-selector{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.year-btn{padding:.5rem 1rem;border:1px solid #374151;background:#1f2937;color:#e2e8f0;border-radius:.5rem;cursor:pointer;transition:all .2s}.year-btn:hover{background:#374151}.year-btn--active{background:#6366f1;border-color:#6366f1}.month-selector{display:flex;justify-content:center}.month-dropdown{padding:.5rem 2rem .5rem 1rem;border:1px solid #374151;background:#1f2937;color:#e2e8f0;border-radius:.5rem;cursor:pointer;font-size:.95rem;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239ca3af' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;min-width:160px}.month-dropdown:hover{border-color:#10b981}.month-dropdown:focus{outline:none;border-color:#10b981;box-shadow:0 0 0 2px #10b98133}.month-dropdown option{background:#1f2937;color:#e2e8f0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:#1f2937;border-radius:1rem;padding:1.5rem;border-left:4px solid}.stat-card--green{border-color:#10b981}.stat-card--red{border-color:#ef4444}.stat-card--blue{border-color:#6366f1}.stat-card--purple{border-color:#8b5cf6}.stat-card__title{font-size:.875rem;color:#94a3b8;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.05em}.stat-card__value{font-size:2rem;font-weight:700}.stat-card--green .stat-card__value{color:#10b981}.stat-card--red .stat-card__value{color:#ef4444}.stat-card--blue .stat-card__value{color:#6366f1}.stat-card--purple .stat-card__value{color:#8b5cf6}.stat-card__subtitle{font-size:.75rem;color:#64748b;margin-top:.5rem}.trend{margin-right:.25rem}.trend--up{color:#10b981}.trend--down{color:#ef4444}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:1.5rem;margin-bottom:2rem}.chart-container{background:#1f2937;border-radius:1rem;padding:1.5rem}.chart-title{font-size:1.125rem;margin-bottom:.5rem}.chart-subtitle{font-size:.75rem;color:#64748b;margin-bottom:1rem}.table-container{background:#1f2937;border-radius:1rem;padding:1.5rem;overflow-x:auto}.transaction-table{width:100%;border-collapse:collapse}.transaction-table th,.transaction-table td{padding:.75rem;text-align:left;border-bottom:1px solid #374151}.transaction-table th{color:#94a3b8;font-size:.75rem;text-transform:uppercase}.transaction-table td.description{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.amount--positive{color:#10b981}.amount--negative{color:#ef4444}.badge{padding:.25rem .5rem;border-radius:.25rem;font-size:.625rem;text-transform:uppercase;font-weight:600}.badge--green{background:#064e3b;color:#10b981}.badge--blue{background:#1e3a5f;color:#60a5fa}.badge--purple{background:#4c1d95;color:#a78bfa}.badge--yellow{background:#713f12;color:#fbbf24}.badge--cyan{background:#164e63;color:#22d3ee}.badge--gray{background:#374151;color:#9ca3af}.badge--red{background:#7f1d1d;color:#f87171}.month-groups{display:flex;flex-direction:column;gap:1.5rem}.month-group{border:1px solid #374151;border-radius:.75rem;overflow:hidden}.month-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;background:#111827;border-bottom:1px solid #374151;flex-wrap:wrap;gap:.5rem}.month-name{font-size:1.125rem;font-weight:600;color:#f1f5f9}.month-totals{display:flex;gap:1.5rem;align-items:center;font-size:.9rem;font-weight:500}.month-income{color:#10b981}.month-outcome{color:#ef4444}.month-net{padding:.25rem .75rem;border-radius:.375rem;font-weight:600}.month-net--positive{background:#064e3b;color:#10b981}.month-net--negative{background:#7f1d1d;color:#f87171}.month-group .transaction-table{margin:0}.month-group .transaction-table td{padding:.625rem 1.25rem;border-bottom:1px solid #1f2937}.month-group .transaction-table tr:last-child td{border-bottom:none}.td-category{width:200px}.td-description{max-width:500px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cbd5e1}.td-amount{text-align:right;font-weight:500;font-variant-numeric:tabular-nums;width:120px}.table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.table-actions{display:flex;gap:.75rem;align-items:center}.upload-container{display:flex;gap:.5rem;align-items:center}.upload-error{color:#ef4444;font-size:.75rem;max-width:200px}.btn{padding:.5rem 1rem;border:none;border-radius:.5rem;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.btn--primary{background:#10b981;color:#fff}.btn--primary:hover{background:#059669}.btn--secondary{background:#374151;color:#e2e8f0}.btn--secondary:hover{background:#4b5563}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000}.modal{background:#1f2937;border-radius:1rem;padding:2rem;width:100%;max-width:450px;border:1px solid #374151}.modal h2{margin-bottom:1.5rem;color:#f1f5f9}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.375rem;font-size:.875rem;color:#94a3b8}.form-group input,.form-group select{width:100%;padding:.625rem .875rem;border:1px solid #374151;border-radius:.5rem;background:#111827;color:#e2e8f0;font-size:.95rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#10b981}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.tr-manual{background:#6366f11a}.td-actions{width:40px;text-align:center}.btn-delete{width:24px;height:24px;border:none;background:#7f1d1d;color:#f87171;border-radius:4px;cursor:pointer;font-size:1rem;line-height:1;transition:all .2s;opacity:.7}.btn-delete:hover{opacity:1;background:#991b1b}@media(max-width:768px){.app{padding:1rem}.charts-grid{grid-template-columns:1fr}.header h1{font-size:1.75rem}.table-header{flex-direction:column;gap:1rem;align-items:stretch}.table-actions,.upload-container{flex-wrap:wrap;justify-content:center}}
