*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f8fafc;color:#1f2937}.dashboard{min-height:100vh;padding:2rem;max-width:1400px;margin:0 auto}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #e5e7eb}.dashboard-header h1{font-size:2.5rem;font-weight:700;color:#111827}.dashboard-meta{display:flex;gap:1rem;align-items:center;font-size:.875rem;color:#6b7280}.refresh-btn{padding:.5rem 1rem;background:#3b82f6;color:#fff;border:none;border-radius:.375rem;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .2s}.refresh-btn:hover:not(:disabled){background:#2563eb}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.settings-btn{padding:.5rem 1rem;background:#6b7280;color:#fff;border:none;border-radius:.375rem;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .2s}.settings-btn:hover{background:#4b5563}.loading-progress{color:#3b82f6;font-weight:500;display:flex;align-items:center;gap:.5rem}.loading-spinner{animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dashboard-controls{display:flex;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.control-group{display:flex;flex-direction:column;gap:.25rem}.filter-input,.state-filter{padding:.75rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:.875rem;background:#fff;min-width:250px}.filter-input:focus,.state-filter:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.jobs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:1.5rem}.job-card{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:transform .2s,box-shadow .2s}.job-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.job-header{margin-bottom:1rem}.job-title{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.job-icon{font-size:1.25rem}.job-title h3{font-size:1.125rem;font-weight:600;color:#111827;line-height:1.4}.job-meta{display:flex;gap:1rem;font-size:.75rem;color:#6b7280}.job-timeline{display:flex;gap:.25rem;margin-bottom:1rem;flex-wrap:wrap}.timeline-item{width:32px;height:20px;border-radius:.25rem;cursor:pointer;transition:transform .2s;border:1px solid rgba(255,255,255,.3)}.timeline-item:hover{transform:scale(1.1);border-color:#0003}.job-stats{display:flex;flex-direction:column;gap:.5rem;font-size:.875rem}.stat{display:flex;justify-content:space-between;align-items:center}.stat-label{color:#6b7280;font-weight:500}.stat-value{font-weight:600;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.loading{display:flex;justify-content:center;align-items:center;height:50vh;font-size:1.125rem;color:#6b7280}.error{display:flex;flex-direction:column;justify-content:center;align-items:center;height:50vh;text-align:center;gap:1rem}.error h2{color:#dc2626;font-size:1.5rem}.error p{color:#6b7280;max-width:500px}.error button{padding:.75rem 1.5rem;background:#3b82f6;color:#fff;border:none;border-radius:.375rem;cursor:pointer;font-weight:500}.error-banner{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:1rem;border-radius:.5rem;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:#dc2626;color:#fff;border:none;padding:.5rem 1rem;border-radius:.25rem;cursor:pointer;font-size:.875rem}.no-results{grid-column:1 / -1;text-align:center;padding:3rem;color:#6b7280;font-size:1.125rem}.dashboard-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:2px solid #e5e7eb;padding-bottom:.5rem}.tab{padding:.75rem 1.5rem;background:#f8fafc;border:1px solid #e5e7eb;border-radius:.5rem .5rem 0 0;cursor:pointer;font-weight:500;transition:all .2s;color:#6b7280}.tab:hover{background:#f1f5f9;color:#374151}.tab.active{background:#fff;color:#3b82f6;border-bottom-color:#fff;margin-bottom:-2px;border-bottom-width:3px}.table-view{width:100%}.table-controls{background:#fff;padding:1rem;border-radius:.5rem;margin-bottom:1rem;border:1px solid #e5e7eb}.control-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:end;margin-bottom:.5rem}.table-controls .control-group{display:flex;flex-direction:column;gap:.25rem}.table-controls label{font-size:.875rem;font-weight:500;color:#374151}.sort-select{padding:.5rem;border:1px solid #d1d5db;border-radius:.25rem;font-size:.875rem;background:#fff;min-width:120px}.table-footer{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem;flex-wrap:wrap}.stats{font-size:.875rem;color:#6b7280}.legend{display:flex;flex-direction:column;gap:.5rem}.legend-title{font-size:.875rem;font-weight:600;color:#374151}.legend-items{display:flex;gap:1rem;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#6b7280}.legend-icon{width:18px;height:18px;border-radius:.25rem;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.6rem;flex-shrink:0}.legend-icon.empty{background:#f3f4f6!important;color:#9ca3af!important}.table-container{background:#fff;border-radius:.5rem;border:1px solid #e5e7eb;overflow:auto;max-height:80vh}.jobs-table{width:100%;border-collapse:collapse;font-size:.875rem}.jobs-table th,.jobs-table td{padding:.5rem;border-bottom:1px solid #f3f4f6;text-align:left}.jobs-table th{background:#f8fafc;font-weight:600;color:#374151;position:sticky;top:0;z-index:10}.job-header{min-width:200px;max-width:300px;position:sticky;left:0;background:#f8fafc!important;z-index:11}.freq-header{width:60px;position:sticky;left:200px;background:#f8fafc!important;z-index:11}.commit-header{width:80px;text-align:center;vertical-align:top}.commit-info{display:flex;flex-direction:column;gap:.25rem;align-items:center}.commit-link{color:#3b82f6;text-decoration:none;font-weight:600}.commit-link:hover{text-decoration:underline}.commit-hash{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.75rem;color:#6b7280}.commit-time{font-size:.75rem;color:#9ca3af}.job-cell{min-width:200px;max-width:300px;position:sticky;left:0;background:#fff;z-index:1;border-right:1px solid #e5e7eb}.freq-cell{width:60px;position:sticky;left:200px;background:#fff;z-index:1;border-right:1px solid #e5e7eb;text-align:center;font-weight:600;color:#6b7280}.commit-cell{width:80px;text-align:center;padding:.25rem}.job-info{display:flex;align-items:center;gap:.5rem}.job-name{font-weight:500;color:#111827;line-height:1.2}.job-step-key{font-size:.75rem;color:#6b7280;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.state-cell{display:block;width:24px;height:24px;border-radius:.25rem;display:flex;align-items:center;justify-content:center;margin:0 auto;text-decoration:none;color:#fff;font-weight:700;font-size:.75rem;cursor:pointer;transition:transform .2s}.state-cell:hover{transform:scale(1.1)}.state-cell.empty{background:#f3f4f6;color:#9ca3af;cursor:default}.state-cell.empty:hover{transform:none}@media (max-width: 768px){.dashboard{padding:1rem}.dashboard-header{flex-direction:column;align-items:flex-start;gap:1rem}.dashboard-meta{flex-direction:column;align-items:flex-start;gap:.5rem}.jobs-grid{grid-template-columns:1fr}.filter-input{min-width:auto;width:100%}.control-row{flex-direction:column;align-items:stretch}.table-controls .control-group{width:100%}.sort-select{min-width:auto;width:100%}.job-header,.job-cell{min-width:150px;max-width:200px}.freq-header,.freq-cell{left:150px}.table-footer{flex-direction:column;align-items:stretch;gap:1rem}.legend-items{gap:.75rem}.legend-item{font-size:.7rem}}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.settings-modal{background:#fff;border-radius:.5rem;box-shadow:0 20px 25px -5px #0000001a;max-width:500px;width:90%;max-height:90vh;overflow:auto}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #e5e7eb}.settings-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#111827}.close-btn{background:none;border:none;font-size:1.5rem;color:#6b7280;cursor:pointer;padding:.25rem;line-height:1}.close-btn:hover{color:#374151}.settings-form{padding:1.5rem}.form-group{margin-bottom:1.5rem}.form-group label{display:flex;align-items:center;gap:.5rem;font-weight:500;color:#374151;margin-bottom:.5rem}.toggle-visibility{background:none;border:none;cursor:pointer;padding:.25rem;font-size:.875rem}.form-group input{width:100%;padding:.75rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:.875rem;background:#fff;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-group small{display:block;margin-top:.25rem;font-size:.75rem;color:#6b7280}.form-group small a{color:#3b82f6;text-decoration:none}.form-group small a:hover{text-decoration:underline}.form-actions{display:flex;justify-content:space-between;align-items:center;margin-top:2rem;padding-top:1rem;border-top:1px solid #e5e7eb}.load-defaults-btn{padding:.5rem 1rem;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:.375rem;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .2s}.load-defaults-btn:hover{background:#e5e7eb}.action-buttons{display:flex;gap:.75rem}.cancel-btn{padding:.5rem 1rem;background:#fff;color:#374151;border:1px solid #d1d5db;border-radius:.375rem;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .2s}.cancel-btn:hover{background:#f9fafb}.save-btn{padding:.5rem 1rem;background:#3b82f6;color:#fff;border:none;border-radius:.375rem;cursor:pointer;font-size:.875rem;font-weight:500;transition:background-color .2s}.save-btn:hover{background:#2563eb}.welcome-screen{display:flex;justify-content:center;align-items:center;min-height:60vh;padding:2rem}.welcome-content{max-width:600px;text-align:center}.welcome-content h2{font-size:2rem;font-weight:700;color:#111827;margin-bottom:1rem}.welcome-content>p{font-size:1.125rem;color:#6b7280;margin-bottom:3rem;line-height:1.6}.welcome-features{display:grid;grid-template-columns:1fr;gap:2rem;margin-bottom:3rem;text-align:left}.feature{display:flex;align-items:flex-start;gap:1rem;padding:1.5rem;background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;box-shadow:0 1px 3px #0000001a}.feature-icon{font-size:2rem;flex-shrink:0}.feature h3{font-size:1.25rem;font-weight:600;color:#111827;margin-bottom:.5rem}.feature p{color:#6b7280;line-height:1.5}.welcome-setup{background:#f8fafc;border:1px solid #e5e7eb;border-radius:.75rem;padding:2rem;text-align:left}.welcome-setup h3{font-size:1.25rem;font-weight:600;color:#111827;margin-bottom:1rem;text-align:center}.welcome-setup ol{margin-bottom:2rem;padding-left:1.5rem}.welcome-setup li{margin-bottom:.5rem;color:#374151;line-height:1.5}.get-started-btn{display:block;margin:0 auto;padding:.75rem 2rem;background:#3b82f6;color:#fff;border:none;border-radius:.5rem;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color .2s}.get-started-btn:hover{background:#2563eb}@media (min-width: 768px){.welcome-features{grid-template-columns:repeat(3,1fr)}.feature{text-align:center;flex-direction:column}.feature-icon{align-self:center}}
