*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background-color:#f5f5f5;color:#333}.app{max-width:1400px;margin:0 auto;padding:20px}.header{margin-bottom:20px}.header h1{font-size:24px;color:#1a1a1a}.tabs{display:flex;gap:4px;margin-bottom:20px;border-bottom:2px solid #e0e0e0}.tab{padding:12px 24px;background:none;cursor:pointer;font-size:14px;font-weight:500;color:#666;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s}.tab:hover{color:#333;background-color:#f0f0f0}.tab.active{color:#1976d2;border-bottom-color:#1976d2}.tab-content{background:#fff;border-radius:8px;padding:24px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.fetch-button{padding:12px 24px;background-color:#1976d2;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s}.fetch-button:hover{background-color:#1565c0}.fetch-button:disabled{background-color:#ccc;cursor:not-allowed}.loading{color:#666;font-style:italic;margin-top:16px}.error{color:#d32f2f;margin-top:16px;padding:12px;background-color:#ffebee;border-radius:4px}.table-container{margin-top:20px;overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}td,th{padding:10px 12px;text-align:left;border-bottom:1px solid #e0e0e0}th{background-color:#f5f5f5;font-weight:600;color:#333;white-space:nowrap}tr:hover{background-color:#f9f9f9}td{color:#555}.empty-state{text-align:center;padding:40px;color:#999}.controls{gap:16px;flex-wrap:wrap}.checkbox-label,.controls{display:flex;align-items:center}.checkbox-label{gap:8px;font-size:14px;color:#555;cursor:pointer}.checkbox-label input[type=checkbox]{width:16px;height:16px;cursor:pointer}.info-banner{background-color:#e3f2fd;color:#1565c0;padding:10px 16px;border-radius:4px;margin-bottom:16px;font-size:14px}.jobs-panel{margin-top:8px}.jobs-list{gap:24px}.client-section,.jobs-list{display:flex;flex-direction:column}.client-section{gap:12px}.client-header{font-size:1.1rem;font-weight:600;text-transform:capitalize;padding-bottom:6px;border-bottom:2px solid #1976d2;margin:0}.environment-section{margin-left:8px;margin-bottom:12px}.environment-header{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;border-radius:4px;font-size:.95rem;font-weight:500;color:#555;transition:background-color .15s}.environment-header:hover{background-color:#f0f0f0}.environment-header.env-production{color:#1b5e20;font-weight:600}.env-expand-icon{font-size:.7rem;width:14px}.env-name{flex:0 0 auto}.env-prod-badge{font-size:.7rem;font-weight:700;padding:1px 6px;border-radius:3px;background-color:#e8f5e9;color:#2e7d32;letter-spacing:.5px}.env-count{font-size:.8rem;color:#999;margin-left:auto}.env-prod-toggle{background:none;border:1px solid #ccc;border-radius:4px;cursor:pointer;font-size:1rem;padding:0 6px;color:#999;transition:all .15s;line-height:1.4}.env-prod-toggle.active,.env-prod-toggle:hover{border-color:#f9a825;color:#f9a825}.env-prod-toggle.active{background-color:#fff8e1}.notifications-panel{display:flex;flex-direction:column;gap:16px}.notif-section h3{margin:0;font-size:1.1rem}.notif-section table th{text-align:left;padding:8px;border-bottom:2px solid #e0e0e0;font-weight:600;font-size:.85rem;color:#666}.notif-section table td{padding:8px;border-bottom:1px solid #f0f0f0}.notif-form label{display:block;font-size:.85rem;font-weight:500;color:#555}.notif-form input[type=email],.notif-form input[type=text]{display:block;margin-top:2px;padding:6px 8px;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.job-card{border:1px solid #e0e0e0;border-radius:6px;overflow:hidden}.job-header{display:flex;align-items:center;gap:12px;padding:14px 16px;background-color:#fafafa;cursor:pointer;transition:background-color .2s}.job-header:hover{background-color:#f0f0f0}.job-expand-icon{font-size:10px;color:#666;width:12px}.job-name{font-weight:600;color:#333;flex:1 1}.job-summary{font-size:13px;color:#666}.failure-count{color:#d32f2f;font-weight:500}.stale-badge{display:inline-block;margin-left:8px;padding:2px 8px;background-color:#ff9800;color:#fff;font-size:11px;font-weight:600;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.job-stale{opacity:.7}.job-stale .job-header{background-color:#f5f5f5}.job-details{padding:16px;border-top:1px solid #e0e0e0;background-color:#fff}.job-section{margin-bottom:20px}.job-section:last-child{margin-bottom:0}.job-section h4{font-size:13px;font-weight:600;color:#333;margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px}.metrics-table{width:auto;min-width:300px}.metrics-table td:first-child{font-weight:500;color:#666;padding-right:24px}.metrics-table td:last-child{color:#333}.failures-table{width:100%}.failures-table th{font-size:12px;text-transform:uppercase;letter-spacing:.5px}.failures-table td{font-size:13px}.transports-panel{margin-top:8px}.view-tabs{display:flex;gap:8px;margin-bottom:20px}.view-tab{padding:8px 16px;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px;cursor:pointer;font-size:13px;color:#666;transition:all .2s}.view-tab:hover{background:#ebebeb}.view-tab.active{background:#1976d2;border-color:#1976d2;color:#fff}.transports-summary{display:flex;flex-direction:column;gap:24px}.stats-row{display:flex;gap:16px}.stat-card{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:8px;padding:20px 24px;text-align:center;min-width:140px}.stat-value{font-size:32px;font-weight:600;color:#333;margin-bottom:4px}.stat-label{font-size:13px;color:#666;text-transform:uppercase;letter-spacing:.5px}.stat-success{color:#388e3c}.stat-warning{color:#f57c00}.charts-row{display:flex;gap:32px;flex-wrap:wrap}.pie-chart-container{flex:1 1;min-width:280px}.pie-chart-container h4{font-size:14px;font-weight:600;color:#333;margin-bottom:12px}.pie-chart-wrapper{display:flex;align-items:center;gap:24px}.pie-chart{width:120px;height:120px}.pie-legend{display:flex;flex-direction:column;gap:8px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-color{width:12px;height:12px;border-radius:2px;flex-shrink:0}.legend-label{color:#333;flex:1 1}.legend-value{color:#666;font-size:12px}.section{margin-top:8px}.section h4{font-size:14px;font-weight:600;color:#333;margin-bottom:12px}.stats-table{width:auto;min-width:400px}.stats-table td.stat-success,.stats-table td.stat-warning{font-weight:500}.hours-panel{margin-top:8px}.hours-controls{gap:16px;margin-bottom:20px;flex-wrap:wrap}.filter-group,.hours-controls{display:flex;align-items:center}.filter-group{gap:8px}.filter-group label{font-size:13px;color:#666}.filter-group select{padding:6px 12px;border:1px solid #e0e0e0;border-radius:4px;font-size:13px;background:#fff;cursor:pointer}.filter-group select:focus{outline:none;border-color:#1976d2}.hours-summary{display:flex;flex-direction:column;gap:24px}.stat-error{color:#d32f2f}.stat-primary{color:#1976d2}.bar-chart-container{flex:1 1;min-width:300px}.bar-chart-container h4{font-size:14px;font-weight:600;color:#333;margin-bottom:12px}.bar-chart{display:flex;flex-direction:column;gap:8px}.bar-row{display:flex;align-items:center;gap:12px}.bar-label{width:100px;font-size:12px;color:#666;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.bar-track{flex:1 1;height:20px;background:#f0f0f0;border-radius:4px;overflow:hidden}.bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.bar-value{width:50px;font-size:12px;color:#333;text-align:right}.download-button{padding:8px 16px;background-color:#388e3c;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:background-color .2s}.download-button:hover{background-color:#2e7d32}.transports-controls{justify-content:space-between;gap:12px}.jobs-controls{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.jobs-controls .info-banner{margin-bottom:0}.alerts-section{margin-bottom:24px}.alerts-section h4{font-size:14px;font-weight:600;color:#333;margin-bottom:12px}.alerts-list{display:flex;flex-direction:column;gap:8px}.alert{padding:10px 14px;border-radius:4px;font-size:13px;border-left:4px solid}.alert-warning{background-color:#fff3e0;border-left-color:#f57c00;color:#e65100}.alert-error{background-color:#ffebee;border-left-color:#d32f2f;color:#c62828}.alert-info{background-color:#e3f2fd;border-left-color:#1976d2;color:#1565c0}.client-card{min-width:180px;text-align:left}.client-card .stat-label{font-size:15px;font-weight:600;margin-bottom:8px;text-transform:none}.client-stats{display:flex;flex-direction:column;gap:4px;font-size:13px;color:#555}.stat-mini-value{font-weight:600;color:#333}.stats-table{width:100%}.stats-table td{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stats-table td.stat-success{color:#388e3c;font-weight:500}.stats-table td.stat-warning{color:#f57c00;font-weight:500}.stats-table td.stat-error{color:#d32f2f;font-weight:500}.tasks-container{display:flex;flex-direction:column;gap:1rem}.task-owner-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden}.task-owner-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f5f5f5;cursor:pointer;transition:background .2s}.task-owner-header:hover{background:#eee}.task-owner-info{display:flex;gap:1rem;align-items:center}.task-owner-name{font-weight:600;font-size:1.1rem}.task-count{color:#666;font-size:.9rem}.task-owner-details{padding:1rem}.status-overdue{color:#d32f2f;font-weight:600}.status-soon{color:#f57c00;font-weight:600}.status-future{color:#388e3c}.status-none{color:#999}.transports-list{display:flex;flex-direction:column;gap:12px}.transport-card{border:1px solid #e0e0e0;border-radius:6px;overflow:hidden;background:#fff}.transport-card.transport-has-error{border-color:#ffcdd2}.transport-header{display:flex;align-items:center;gap:12px;padding:14px 16px;background-color:#fafafa;cursor:pointer;transition:background-color .2s}.transport-header:hover{background-color:#f0f0f0}.transport-has-error .transport-header{background-color:#fff8f8}.transport-has-error .transport-header:hover{background-color:#fff0f0}.transport-expand-icon{font-size:10px;color:#666;width:12px;flex-shrink:0}.transport-info{display:flex;align-items:center;gap:12px;flex:1 1;min-width:0}.transport-id{font-weight:600;color:#333;font-size:14px}.transport-client{color:#1976d2;font-size:13px;font-weight:500}.transport-stack{color:#666;font-size:13px}.transport-summary{display:flex;align-items:center;gap:12px;font-size:13px}.transport-commits-count{color:#666;background:#f0f0f0;padding:2px 8px;border-radius:4px}.transport-issues{color:#555;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.transport-merge-status{padding:3px 10px;border-radius:4px;font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.transport-merge-status.merged{background-color:#e8f5e9;color:#2e7d32}.transport-merge-status.unmerged{background-color:#fff3e0;color:#ef6c00}.transport-error-badge{background-color:#ffebee;color:#c62828;padding:3px 10px;border-radius:4px;font-size:12px;font-weight:500}.transport-details{padding:16px;border-top:1px solid #e0e0e0;background-color:#fff}.transport-meta{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:16px}.transport-meta-item{display:flex;gap:8px;font-size:13px}.transport-meta-item .meta-label{color:#666;font-weight:500}.transport-meta-item .meta-value{color:#333}.transport-meta-item.transport-error .meta-value{color:#c62828}.transport-commits-section h4{font-size:13px;font-weight:600;color:#333;margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px}.commits-table{width:100%;font-size:13px}.commits-table th{font-size:12px;text-transform:uppercase;letter-spacing:.5px;background-color:#f9f9f9}.commits-table td{font-size:13px}.transports-controls{display:flex;align-items:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}.job-type-badge{display:inline-block;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:600;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.job-type-job{background-color:#f3e5f5;color:#6a1b9a}.job-type-process_chain{background-color:#e8f5e9;color:#1b5e20}.manual-badge{display:inline-block;margin-left:8px;padding:2px 8px;background-color:#e3f2fd;color:#1565c0;font-size:11px;font-weight:600;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.configure-button{padding:2px 10px;font-size:.85em;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer}.configure-button:hover{background:#e0e0e0}.clear-override-button{padding:2px 10px;font-size:.85em;background:#fff3e0;border:1px solid #ffcc80;border-radius:4px;cursor:pointer;color:#e65100}.clear-override-button:hover{background:#ffe0b2}.clear-override-button:disabled{opacity:.5;cursor:not-allowed}.override-form{padding:12px;background:#fafafa;border:1px solid #e0e0e0;border-radius:6px;margin-top:8px}.override-form-row{display:flex;gap:16px;margin-bottom:8px}.override-form-row label{display:flex;flex-direction:column;gap:4px;font-size:.9em}.override-form-row input{padding:4px 8px;border:1px solid #ccc;border-radius:4px;width:120px}.override-form-actions{display:flex;gap:8px;margin-top:8px}.cancel-button{padding:4px 12px;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer}.cancel-button:hover{background:#e0e0e0}.cancel-button:disabled{opacity:.5;cursor:not-allowed}