:root{--bg-primary: #0f1419;--bg-secondary: #1a1f26;--bg-card: #242b33;--text-primary: #e7e9ea;--text-secondary: #8b98a5;--accent-blue: #1d9bf0;--status-healthy: #00ba7c;--status-warning: #f7931a;--status-critical: #f4212e;--status-idle: #8b98a5;--border-color: #2f3336}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-card{background:var(--bg-card);border-radius:16px;padding:40px;width:100%;max-width:400px;border:1px solid var(--border-color)}.login-card h1{font-size:24px;margin-bottom:8px;text-align:center}.login-card p{color:var(--text-secondary);text-align:center;margin-bottom:24px}.login-card input{width:100%;padding:14px 16px;border-radius:8px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);font-size:16px;margin-bottom:16px}.login-card input:focus{outline:none;border-color:var(--accent-blue)}.login-card button{width:100%;padding:14px;border-radius:8px;border:none;background:var(--accent-blue);color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .2s}.login-card button:hover{opacity:.9}.login-card button:disabled{opacity:.5;cursor:not-allowed}.login-error{color:var(--status-critical);text-align:center;margin-bottom:16px;font-size:14px}.dashboard{display:flex;flex-direction:column;min-height:100vh}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.dashboard-header h1{font-size:20px;display:flex;align-items:center;gap:12px}.overall-status{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:14px;font-weight:500}.overall-status.healthy{background:#00ba7c33;color:var(--status-healthy)}.overall-status.warning{background:#f7931a33;color:var(--status-warning)}.overall-status.critical{background:#f4212e33;color:var(--status-critical)}.header-actions{display:flex;align-items:center;gap:16px}.refresh-btn,.logout-btn{padding:8px 16px;border-radius:8px;border:1px solid var(--border-color);background:transparent;color:var(--text-primary);font-size:14px;cursor:pointer;transition:background .2s}.refresh-btn:hover,.logout-btn:hover{background:var(--bg-card)}.last-updated{color:var(--text-secondary);font-size:12px}.dashboard-content{display:flex;flex:1;overflow:hidden}.services-panel{flex:1;padding:24px;overflow-y:auto}.services-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.service-card{background:var(--bg-card);border-radius:12px;padding:20px;border:1px solid var(--border-color)}.service-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.service-card-header h3{font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px}.status-indicator{width:10px;height:10px;border-radius:50%}.status-indicator.healthy{background:var(--status-healthy)}.status-indicator.warning{background:var(--status-warning)}.status-indicator.critical,.status-indicator.error{background:var(--status-critical)}.status-indicator.idle{background:var(--status-idle)}.status-badge{padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500;text-transform:uppercase}.status-badge.healthy{background:#00ba7c33;color:var(--status-healthy)}.status-badge.warning{background:#f7931a33;color:var(--status-warning)}.status-badge.critical,.status-badge.error{background:#f4212e33;color:var(--status-critical)}.status-badge.idle{background:#8b98a533;color:var(--status-idle)}.service-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.metric{display:flex;flex-direction:column;gap:4px}.metric-label{font-size:12px;color:var(--text-secondary)}.metric-value{font-size:20px;font-weight:600}.metric-value.warning{color:var(--status-warning)}.metric-value.critical{color:var(--status-critical)}.chat-panel{width:400px;border-left:1px solid var(--border-color);display:flex;flex-direction:column;background:var(--bg-secondary)}.chat-header{padding:16px;border-bottom:1px solid var(--border-color);font-weight:600}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.message{padding:12px 16px;border-radius:12px;max-width:85%;font-size:14px;line-height:1.5}.message.user{background:var(--accent-blue);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}.message.assistant{background:var(--bg-card);align-self:flex-start;border-bottom-left-radius:4px}.message.system{background:var(--bg-card);color:var(--text-secondary);font-size:12px;align-self:center}.chat-input-container{padding:16px;border-top:1px solid var(--border-color)}.chat-input-form{display:flex;gap:8px}.chat-input{flex:1;padding:12px 16px;border-radius:24px;border:1px solid var(--border-color);background:var(--bg-card);color:var(--text-primary);font-size:14px}.chat-input:focus{outline:none;border-color:var(--accent-blue)}.chat-send-btn{padding:12px 20px;border-radius:24px;border:none;background:var(--accent-blue);color:#fff;font-weight:600;cursor:pointer}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.loading{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-secondary)}.tab-nav{display:flex;gap:4px;padding:0 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.tab-btn{padding:12px 20px;background:transparent;border:none;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;transition:all .2s;display:flex;align-items:center;gap:8px}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue)}.tab-badge{background:var(--status-critical);color:#fff;font-size:11px;padding:2px 6px;border-radius:10px;font-weight:600}.main-panel{flex:1;padding:24px;overflow-y:auto}.list-view{display:flex;flex-direction:column;gap:16px}.list-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.list-title{display:flex;align-items:center;gap:12px}.list-title h2{font-size:18px;font-weight:600}.count-badge{font-size:13px;color:var(--text-secondary)}.stalled-badge,.failed-badge{margin-left:8px;color:var(--status-critical);font-weight:600}.list-filters{display:flex;gap:8px;align-items:center}.list-filters select{padding:8px 12px;border-radius:6px;border:1px solid var(--border-color);background:var(--bg-card);color:var(--text-primary);font-size:13px}.list-error{padding:12px 16px;background:#f4212e1a;border:1px solid var(--status-critical);border-radius:8px;color:var(--status-critical);font-size:14px}.list-table{overflow-x:auto}.list-table table{width:100%;border-collapse:collapse}.list-table th,.list-table td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--border-color)}.list-table th{background:var(--bg-card);font-weight:600;font-size:12px;text-transform:uppercase;color:var(--text-secondary)}.list-table tr:hover{background:var(--bg-card)}.job-name,.task-name{font-weight:500}.job-id,.task-id{font-size:11px;color:var(--text-secondary);font-family:monospace}.stalled-row{background:#f4212e0d}.stalled-indicator{margin-left:8px;font-size:10px;padding:2px 6px;background:var(--status-critical);color:#fff;border-radius:4px;font-weight:600}.empty-row,.empty-state{text-align:center;color:var(--text-secondary);padding:40px}.state-badge{padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase}.state-badge.running{background:#1d9bf033;color:var(--accent-blue)}.state-badge.pending{background:#f7931a33;color:var(--status-warning)}.state-badge.succeeded{background:#00ba7c33;color:var(--status-healthy)}.state-badge.failed{background:#f4212e33;color:var(--status-critical)}.action-btn{padding:6px 12px;border-radius:6px;border:1px solid var(--border-color);background:var(--bg-card);color:var(--text-primary);font-size:12px;cursor:pointer;transition:all .2s}.action-btn:hover{background:var(--bg-secondary)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.action-btn.cancel,.action-btn.danger{border-color:var(--status-critical);color:var(--status-critical)}.action-btn.resolve{border-color:var(--status-healthy);color:var(--status-healthy)}.action-btn.ignore{border-color:var(--text-secondary);color:var(--text-secondary)}.action-btn.external{border-color:var(--accent-blue);color:var(--accent-blue);text-decoration:none}.task-section{margin-top:24px}.task-section h3{font-size:14px;font-weight:600;margin-bottom:12px;color:var(--text-secondary)}.clickable-row{cursor:pointer}.traceback-row td{background:var(--bg-primary)}.traceback{font-family:monospace;font-size:12px;overflow-x:auto;white-space:pre-wrap;word-break:break-all;color:var(--status-critical);padding:12px;background:#0000004d;border-radius:4px;max-height:300px;overflow-y:auto}.queue-summary,.workers-summary{background:var(--bg-card);border-radius:8px;padding:16px;margin-bottom:16px}.queue-summary h3,.workers-summary h3{font-size:13px;font-weight:600;margin-bottom:12px;color:var(--text-secondary)}.queue-grid,.workers-grid{display:flex;flex-wrap:wrap;gap:12px}.queue-item,.worker-item{display:flex;gap:8px;align-items:center;padding:8px 12px;background:var(--bg-secondary);border-radius:6px}.queue-name,.worker-name{font-size:13px;color:var(--text-secondary)}.queue-count{font-weight:600;font-size:14px}.queue-count.warning{color:var(--status-warning)}.worker-stats{font-size:12px;color:var(--text-secondary)}.errors-list{display:flex;flex-direction:column;gap:12px}.error-card{background:var(--bg-card);border-radius:8px;border:1px solid var(--border-color);overflow:hidden}.error-card-header{display:flex;justify-content:space-between;align-items:flex-start;padding:16px;cursor:pointer;transition:background .2s}.error-card-header:hover{background:var(--bg-secondary)}.error-main{display:flex;gap:12px;align-items:flex-start}.level-badge{padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase}.level-badge.error{background:#f4212e33;color:var(--status-critical)}.level-badge.warning{background:#f7931a33;color:var(--status-warning)}.level-badge.info{background:#1d9bf033;color:var(--accent-blue)}.error-title-section{display:flex;flex-direction:column;gap:4px}.error-title{font-size:14px;font-weight:500}.error-culprit{font-size:12px;color:var(--text-secondary);font-family:monospace}.error-meta{display:flex;gap:12px;align-items:center;font-size:12px;color:var(--text-secondary)}.error-count,.error-users{font-weight:500}.error-card-details{padding:16px;border-top:1px solid var(--border-color);background:var(--bg-secondary)}.exception-info{margin-bottom:16px}.exception-info h5{font-size:12px;color:var(--text-secondary);margin-bottom:8px}.exception-type{font-weight:600;color:var(--status-critical);font-family:monospace}.exception-value{font-size:13px;margin-top:4px;color:var(--text-primary)}.stacktrace{margin-top:12px}.stacktrace h5{font-size:12px;color:var(--text-secondary);margin-bottom:8px}.stack-frame{padding:8px;background:var(--bg-primary);border-radius:4px;margin-bottom:4px;font-family:monospace;font-size:12px}.frame-location{display:flex;gap:4px;flex-wrap:wrap}.frame-file{color:var(--accent-blue)}.frame-line{color:var(--status-warning)}.frame-function{color:var(--text-secondary)}.frame-context{margin-top:4px;padding:4px 8px;background:#0000004d;border-radius:2px;color:var(--text-primary)}.event-tags{margin-bottom:16px}.event-tags h5{font-size:12px;color:var(--text-secondary);margin-bottom:8px}.tags-grid{display:flex;flex-wrap:wrap;gap:8px}.tag-item{display:flex;font-size:11px;background:var(--bg-primary);border-radius:4px;overflow:hidden}.tag-key{padding:4px 8px;background:var(--bg-card);color:var(--text-secondary)}.tag-value{padding:4px 8px;color:var(--text-primary)}.timing-info{display:flex;gap:24px;margin-bottom:16px}.timing-item{display:flex;flex-direction:column;gap:4px}.timing-label{font-size:11px;color:var(--text-secondary)}.timing-value{font-size:13px;font-weight:500}.error-actions{display:flex;gap:8px}.error-message{color:var(--status-critical);font-size:13px;max-width:300px;overflow:hidden;text-overflow:ellipsis}.actions-list{display:flex;flex-direction:column;gap:8px}.action-item{background:var(--bg-card);border-radius:8px;border:1px solid var(--border-color);overflow:hidden;cursor:pointer}.action-item.error{border-left:3px solid var(--status-critical)}.action-item.success{border-left:3px solid var(--status-healthy)}.action-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.action-main{display:flex;gap:12px;align-items:center}.action-time{font-size:12px;color:var(--text-secondary);font-family:monospace}.action-tool{padding:2px 8px;background:var(--bg-secondary);border-radius:4px;font-size:11px;font-weight:600;color:var(--accent-blue)}.action-name{font-size:13px;font-weight:500}.action-meta{display:flex;gap:12px;align-items:center}.action-duration{font-size:12px;color:var(--text-secondary)}.action-error-badge{font-size:10px;padding:2px 6px;background:var(--status-critical);color:#fff;border-radius:4px;font-weight:600}.action-details{padding:16px;border-top:1px solid var(--border-color);background:var(--bg-secondary)}.action-section{margin-bottom:12px}.action-section:last-child{margin-bottom:0}.action-section h5{font-size:11px;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase}.action-section pre{font-family:monospace;font-size:12px;padding:12px;background:var(--bg-primary);border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.action-section.error pre{color:var(--status-critical)}@media (max-width: 900px){.dashboard-content{flex-direction:column}.chat-panel{width:100%;height:400px;border-left:none;border-top:1px solid var(--border-color)}.tab-nav{overflow-x:auto}.list-header{flex-direction:column;align-items:flex-start}}
