.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;justify-content:center;margin:0;min-height:100vh;padding:0}.login-card{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001a;max-width:400px;padding:3rem;text-align:center;width:90%}.login-icon{font-size:3rem;margin-bottom:1rem}.login-card h1{color:#333;font-size:2rem;margin-bottom:1rem}.login-card p{color:#666;line-height:1.6;margin-bottom:2rem}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;display:inline-block;height:20px;width:20px}.auth-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:0 0 10px 10px;color:#fff;display:flex;justify-content:space-between;margin:-20px -20px 20px;padding:1rem 2rem}.auth-header-title{font-size:1.5rem;margin:0}.user-info{align-items:center;display:flex;gap:1rem}.user-avatar{border:2px solid #ffffff4d;border-radius:50%;height:40px;width:40px}.user-details{display:flex;flex-direction:column}.user-name{font-size:1.1rem;font-weight:600}.user-email{font-size:.9rem;opacity:.8}.logout-btn{background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:.5rem 1rem;transition:all .2s}.logout-btn:hover{background:#ffffff4d}.provider-fractions-bar{align-items:center;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;display:flex;font-size:1rem;gap:2rem;justify-content:flex-start;margin-bottom:24px;margin-top:18px;padding:1rem 2rem}.fractions-label{color:#333;font-size:1.1rem;font-weight:600;margin-right:1.5rem}.provider-text{color:#764ba2}.provider-fraction{font-weight:500}.provider-fraction.fal{color:#007bff}.provider-fraction.modal{color:#ffc107}.provider-fraction.cerebrium{color:#28a745}.editable-fraction{border-radius:3px;color:#333;cursor:pointer;padding:2px 4px;transition:background-color .2s}.editable-fraction:hover,.fal .editable-fraction:hover{background-color:#e3f2fd}.modal .editable-fraction:hover{background-color:#fff3cd}.cerebrium .editable-fraction:hover{background-color:#d4edda}.editable-fraction.changed{background-color:#fff3cd;font-weight:700}.fraction-input{background:#fff;border:2px solid #007bff;border-radius:3px;color:inherit;font-size:inherit;font-weight:inherit;outline:none;padding:2px 4px;width:60px}.confirm-btn{margin-left:auto;padding:.5rem 1rem}.hint-text{margin-left:1rem}.shared-volume-bar{align-items:center;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;display:flex;font-size:1rem;gap:2rem;justify-content:flex-start;margin-bottom:16px;padding:1rem 2rem}.volume-label{color:#333;font-size:1.05rem;font-weight:600;margin-right:1.5rem}.provider-volume{font-weight:500}.empty-text,.error-text,.loading-text{color:#6c757d;font-style:italic}.shared-volume-bar.error{border-color:#dc3545}.buffers-container{display:flex;flex-wrap:wrap;gap:30px;justify-content:center;margin-top:20px}.buffer-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;min-width:400px;overflow:hidden}.buffer-table-header{font-size:.9rem;font-weight:700;padding:8px 12px;text-align:center}.buffer-table-header.prod{background:#28a745;color:#fff}.buffer-table-header.canary{background:#ffc107;color:#212529}.buffer-table{border-collapse:collapse;font-size:.85rem;width:100%}.buffer-table thead tr{background:#495057;color:#fff}.buffer-table th{border-bottom:2px solid #dee2e6;padding:8px 12px;text-align:center}.buffer-table th:first-child{text-align:left;width:100px}.buffer-table th:not(:first-child){width:80px}.buffer-table tbody tr:nth-child(2n){background:#f8f9fa}.model-cell{font-size:.85rem;font-weight:600}.buffer-cell,.model-cell{border-bottom:1px solid #dee2e6;padding:8px 12px}.buffer-cell{text-align:center}.editable-buffer{border-radius:3px;cursor:pointer;display:inline-block;font-weight:700;min-width:30px;padding:2px 6px;transition:all .2s}.editable-buffer.positive{background:#e8f5e8;color:#28a745}.editable-buffer.zero{background:#ffe6e6;color:#dc3545}.editable-buffer:hover{box-shadow:0 2px 4px #0003;transform:scale(1.05)}.editable-buffer.changed{background:#fff3cd!important;color:#856404!important;font-weight:700}.buffer-input{border:2px solid #007bff;border-radius:3px;font-size:inherit;font-weight:inherit;outline:none;padding:2px 4px;text-align:center;width:50px}.buffer-actions{align-items:center;display:flex;gap:10px;justify-content:center;margin-top:15px}.buffer-info{color:#6c757d;font-size:.9rem;margin-left:10px}.confirm-btn{background:#6c757d;border:none;border-radius:4px;color:#fff;cursor:not-allowed;font-size:.85rem;font-weight:500;opacity:.6;padding:.4rem .8rem;transition:all .2s}.confirm-btn.enabled{background:#28a745;cursor:pointer;opacity:1}.confirm-btn.enabled:hover{background:#218838}.hint-text{color:#6c757d;font-size:.8rem;font-style:italic}.buffer-cell.loading{animation:none!important;background-color:#fff3cd!important;border-radius:0!important;display:table-cell!important;position:static!important}.buffer-cell.error{background-color:#f8d7da!important}.buffer-cell.just-loaded .editable-buffer{color:#28a745!important;font-weight:700;transition:color 2s ease-out}.buffer-cell.loading .editable-buffer{cursor:wait}.buffer-cell.error .editable-buffer{cursor:not-allowed}.buffer-input:disabled{background-color:#f8f9fa;cursor:not-allowed;opacity:.6}.test-runner-container{margin-bottom:2rem}.test-runner-form{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.test-runner-form select{min-width:150px}.test-runner-form button{min-width:120px}.analytics-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:2rem 0}.metric-card{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:1px solid #dee2e6;border-radius:8px;padding:1.5rem;text-align:center;transition:transform .2s ease,box-shadow .2s ease}.metric-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.metric-value{color:#495057;font-size:2rem;font-weight:700;margin-bottom:.5rem}.metric-label{color:#6c757d;font-size:.9rem;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.provider-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:1rem;overflow:hidden;width:100%}.provider-table thead{background:#495057;color:#fff}.provider-table td,.provider-table th{border-bottom:1px solid #dee2e6;padding:.75rem;text-align:left}.provider-table th{font-size:.9rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.provider-table tbody tr:hover,.provider-table tbody tr:nth-child(2n){background-color:#f8f9fa}.provider-table td{font-size:.9rem}.provider-table td:first-child{font-weight:600}.charts-grid{display:flex;flex-wrap:wrap;gap:20px;margin-top:20px}.chart-container{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;flex:1 1;min-width:400px;padding:15px}.chart-container.prod .chart-title{color:#28a745}.chart-container.canary .chart-title{color:#ffc107}.chart-title{font-size:1.1rem;font-weight:600;margin-bottom:15px;text-align:center}.chart-wrapper{height:400px;position:relative}.metrics-section{margin-top:30px}.metrics-section h3{color:#333;margin-bottom:20px}.metrics-section .chart-container{background:#fff}.metrics-section .chart-wrapper{height:350px}.metrics-section .chart-title{font-size:1rem;margin-bottom:10px}@media (max-width:768px){.charts-grid{flex-direction:column}.chart-container{min-width:auto}.chart-wrapper{height:300px}.metrics-section .chart-wrapper{height:250px}}.filters-section{margin-bottom:1.5rem}.filter-row{align-items:end;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.filter-group{display:flex;flex-direction:column;gap:.25rem}.filter-group label{color:#555;font-size:.9rem;font-weight:600}.filter-group select{min-width:150px}.filter-status{background:#f8f9fa;border:1px solid #e9ecef;border-radius:4px;color:#495057;font-size:.9rem;padding:.75rem}.jobs-container{background:#fff;border:1px solid #e9ecef;border-radius:8px;max-height:600px;overflow-y:auto;padding:1rem}.job{background:#f9f9f9;border:1px solid #ddd;border-radius:5px;cursor:pointer;margin-bottom:10px;padding:15px;transition:transform .2s ease,box-shadow .2s ease}.job:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.job.running{background:#fff3cd;border-color:#ffc107}.job.completed{background:#d4edda;border-color:#28a745}.job.failed{background:#f8d7da;border-color:#dc3545}.job.pending{background:#e2e3e5;border-color:#6c757d}.status-badge{border-radius:3px;font-size:12px;font-weight:700;margin-left:1rem;padding:4px 8px;text-transform:uppercase}.status-badge.pending,.status-badge.running{background-color:#ffc107}.status-badge.completed{background-color:#28a745}.status-badge.failed{background-color:#dc3545}.job-click-hint{background:#f8f9fa;border:1px dashed #dee2e6;border-radius:4px;color:#6c757d;font-size:.8rem;font-style:italic;margin-top:.75rem;padding:.5rem;text-align:center}.job-details-container{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin:0 auto;max-width:1200px;overflow:hidden}.job-details-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem;text-align:center}.job-details-header h1{color:#fff;font-size:2rem;font-weight:600;margin:0}.job-id{background:#fff3;border-radius:6px;display:inline-block;font-family:Monaco,Consolas,monospace;font-size:1.1rem;margin-top:1rem;padding:.5rem 1rem}.job-details-content{padding:2rem}.back-button{background:#007bff;border-radius:6px;color:#fff;display:inline-block;font-weight:500;margin-bottom:2rem;padding:.75rem 1.5rem;text-decoration:none;transition:background .2s}.back-button:hover{background:#0056b3;color:#fff;text-decoration:none}.status-section{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2rem}.status-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:1rem;text-align:center}.status-value{color:#333;font-size:1.2rem;font-weight:700;margin-bottom:.5rem}.status-label{color:#6c757d;font-size:.9rem;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.status-badge{border-radius:20px;color:#fff;display:inline-block;font-size:.875rem;font-weight:500;padding:.25rem .75rem}.logs-section{margin-top:2rem}.log-block{border:1px solid #e9ecef;border-radius:8px;margin-bottom:1.5rem;overflow:hidden}.log-header{background:#495057;color:#fff;font-size:.9rem;font-weight:600;padding:.75rem 1rem}.log-content{background:#fff;color:#212529;font-family:Monaco,Consolas,monospace;font-size:.875rem;max-height:400px;overflow-y:auto;padding:1rem;white-space:pre-wrap}.empty-log{color:#6c757d;font-style:italic;padding:2rem;text-align:center}.error-message{color:#dc3545}.error-container,.loading-container{align-items:center;color:#6c757d;display:flex;font-size:1.2rem;height:50vh;justify-content:center}body{background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.App{min-height:100vh}.container{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;margin-bottom:20px;padding:30px}h1,h2,h3{color:#333;margin-bottom:30px}.form-group{align-items:center;display:flex;flex-wrap:wrap;gap:15px;margin-bottom:20px}label{color:#555;display:inline-block;font-weight:600;margin-bottom:0;white-space:nowrap}button,select{border:1px solid #ddd;border-radius:5px;font-size:16px;padding:12px}select{width:200px}button{background-color:#007bff;border:none;color:#fff;cursor:pointer;transition:background-color .2s}button:hover{background-color:#0056b3}button:disabled{background-color:#ccc;cursor:not-allowed}.loading{animation:spin 2s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;display:inline-block;height:20px;margin-left:10px;width:20px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.primary-button{background:#007bff}.primary-button:hover{background:#0056b3}.secondary-button{background:#6c757d}.secondary-button:hover{background:#545b62}.success-button{background:#28a745}.success-button:hover{background:#218838}