: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-top{display:flex;justify-content:space-between;align-items:center;gap:1rem}.header-spacer{flex:1}.header-title{text-align:center;flex:2}.header-actions{flex:1;display:flex;justify-content:flex-end}.private-area-link{color:#94a3b8;text-decoration:none;font-size:.875rem;padding:.5rem 1rem;border:1px solid #374151;border-radius:.5rem;background:#1f2937;transition:all .2s}.private-area-link:hover{color:#e2e8f0;border-color:#6366f1;background:#374151}.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}.currency-rates{display:flex;flex-direction:row;gap:.5rem;justify-content:center;margin-bottom:1rem}.currency-rate{display:flex;align-items:center;gap:.5rem;background:#1f2937;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;border:1px solid #374151}.currency-value{display:flex;align-items:center}.currency-loading{color:#94a3b8;font-size:.875rem}.currency-icon{width:20px;height:20px;border-radius:4px}.currency-label{color:#94a3b8;font-weight:500;margin-right:.25rem}.currency-buy{color:#10b981}.currency-sell{color:#ef4444}.currency-separator{color:#64748b}.currency-nbu{color:#60a5fa}.currency-eur{color:#a78bfa;margin-left:.5rem}.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}.currency-clickable{cursor:pointer;transition:all .2s;padding:.125rem .25rem;border-radius:.25rem;margin:-.125rem -.25rem}.currency-clickable:hover{background:#6366f133}.rate-history-overlay{position:fixed;inset:0;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem}.rate-history-modal{background:#1a1a2e;border-radius:1rem;padding:1.5rem;width:100%;max-width:900px;max-height:90vh;overflow-y:auto;border:1px solid #333;box-shadow:0 25px 50px -12px #00000080}.rate-history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.rate-history-header h2{font-size:1.25rem;color:#f1f5f9;margin:0}.rate-history-close{background:none;border:none;color:#94a3b8;font-size:1.75rem;cursor:pointer;line-height:1;padding:.25rem;transition:color .2s}.rate-history-close:hover{color:#f1f5f9}.rate-history-periods{display:flex;gap:.5rem;margin-bottom:1.5rem;justify-content:center}.rate-history-period{padding:.5rem 1rem;border:1px solid #374151;background:#1f2937;color:#e2e8f0;border-radius:.5rem;cursor:pointer;font-size:.875rem;transition:all .2s}.rate-history-period:hover{background:#374151}.rate-history-period.active{background:#6366f1;border-color:#6366f1}.rate-history-chart{min-height:400px;display:flex;align-items:center;justify-content:center}.rate-history-loading,.rate-history-error,.rate-history-empty{color:#94a3b8;font-size:1rem}.rate-history-error{color:#ef4444}.login-page{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:2rem}.login-container{background:#1f2937;border-radius:1rem;padding:2.5rem;width:100%;max-width:400px;border:1px solid #374151}.login-container h1{font-size:1.75rem;margin-bottom:.5rem;color:#f1f5f9;text-align:center}.login-subtitle{color:#94a3b8;text-align:center;margin-bottom:2rem}.login-form{display:flex;flex-direction:column;gap:1rem}.login-error{background:#7f1d1d;color:#fca5a5;padding:.75rem 1rem;border-radius:.5rem;font-size:.875rem}.login-btn{width:100%;padding:.75rem;margin-top:.5rem}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-back-link{display:block;text-align:center;margin-top:1.5rem;color:#94a3b8;text-decoration:none;font-size:.875rem}.login-back-link:hover{color:#e2e8f0}.private-page{max-width:1400px;margin:0 auto;padding:2rem}.private-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #374151}.private-header h1{font-size:2rem;background:linear-gradient(90deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.private-content{background:#1f2937;border-radius:1rem;padding:2rem;border:1px solid #374151}.private-welcome{text-align:center;margin-bottom:2rem}.private-welcome h2{color:#f1f5f9;margin-bottom:.5rem}.private-welcome p{color:#94a3b8}.private-content .btn{display:inline-block;text-decoration:none}.private-nav{display:flex;gap:1rem;margin-bottom:2rem}.private-nav-link{padding:1rem 1.5rem;background:#1f2937;border:1px solid #374151;border-radius:.5rem;color:#e2e8f0;text-decoration:none;transition:all .2s}.private-nav-link:hover{border-color:#6366f1;background:#374151}.tax-page{max-width:1400px;margin:0 auto;padding:2rem}.tax-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #374151}.tax-header-left{display:flex;align-items:center;gap:1.5rem}.tax-header h1{font-size:2rem;background:linear-gradient(90deg,#10b981,#6366f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin:0}.back-link{color:#94a3b8;text-decoration:none;font-size:.875rem}.back-link:hover{color:#e2e8f0}.tax-upload-section{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.tax-upload-input{display:none}.tax-upload-label{cursor:pointer}.tax-file-name{color:#94a3b8;font-size:.875rem}.tax-error{color:#ef4444;font-size:.875rem}.tax-period{color:#94a3b8;font-size:.875rem;margin-bottom:1.5rem}.tax-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.tax-summary-card{background:#1f2937;border-radius:.75rem;padding:1.25rem;border:1px solid #374151}.tax-summary-title{color:#94a3b8;font-size:.75rem;text-transform:uppercase;margin-bottom:.5rem}.tax-summary-value{font-size:1.5rem;font-weight:600}.tax-summary-value.positive{color:#10b981}.tax-summary-value.negative{color:#ef4444}.tax-stats{color:#94a3b8;font-size:.875rem;margin-bottom:2rem}.tax-section{margin-bottom:2rem}.tax-section h2{font-size:1.25rem;color:#f1f5f9;margin-bottom:1rem}.tax-table-container{background:#1f2937;border-radius:.75rem;overflow-x:auto;border:1px solid #374151}.tax-table{width:100%;border-collapse:collapse;font-size:.875rem}.tax-table th,.tax-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid #374151}.tax-table th{color:#94a3b8;font-weight:500;text-transform:uppercase;font-size:.75rem;background:#111827}.tax-table tr:last-child td{border-bottom:none}.tax-table td.positive{color:#10b981}.tax-table td.negative{color:#ef4444}.tax-table td.buy{color:#10b981}.tax-table td.sell{color:#ef4444}@media(max-width:768px){.app{padding:1rem}.charts-grid{grid-template-columns:1fr}.header h1{font-size:1.75rem}.header-top{flex-direction:column;gap:.5rem}.header-spacer{display:none}.header-title{flex:none}.header-actions{flex:none;justify-content:center}.table-header{flex-direction:column;gap:1rem;align-items:stretch}.table-actions,.upload-container{flex-wrap:wrap;justify-content:center}.currency-rates{flex-wrap:wrap}.rate-history-modal{padding:1rem}.rate-history-header h2{font-size:1rem}.rate-history-periods{flex-wrap:wrap}.private-header{flex-direction:column;gap:1rem}}
