:root{--cp-bg: #0b1220;--cp-surface: #121a2b;--cp-border: #2a3550;--cp-text: #e7edf9;--cp-muted: #9fb0d1;--cp-ok: #22c55e;--cp-warn: #f59e0b;--cp-critical: #ef4444}.chip{display:inline-block;padding:.1rem .4rem;border-radius:999px;border:1px solid var(--cp-border);background:var(--cp-surface);color:var(--cp-text);font-size:.75rem}.capability-chip{margin-right:.2rem}.page-note{color:var(--cp-muted)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:#1a1a2e;color:#eee;min-height:100vh}.header{display:flex;align-items:center;gap:2rem;padding:1rem 1.5rem;background:#16213e;border-bottom:1px solid #0f3460}.header.hidden{display:none}.header h1{margin:0;font-size:1.25rem}.nav{display:flex;gap:1rem}.nav a{color:#e94560;text-decoration:none}.nav a:hover,.nav a.active,.nav a[aria-current=page]{text-decoration:underline}.header-right{margin-left:auto;display:flex;align-items:center;gap:.75rem}.user-pill{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.user-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover}.user-avatar-placeholder{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#0f3460;font-size:.8rem}.user-name{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#content{padding:1.5rem;max-width:1200px;margin:0 auto}#content.content-full-width{max-width:none}.page h2{margin-top:0}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid #0f3460}th{background:#0f3460}tr:hover{background:#16213e}.badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.85rem}.badge.online{background:#0f7d40;color:#fff}.badge.offline{background:#6c757d;color:#fff}.badge.unknown{background:#444;color:#fff}.badge.pending{background:#ffc107;color:#000}.badge.leased{background:#17a2b8;color:#fff}.badge.done{background:#28a745;color:#fff}.badge.failed{background:#dc3545;color:#fff}.btn{display:inline-block;padding:.4rem .8rem;background:#e94560;color:#fff;border:none;border-radius:4px;cursor:pointer;text-decoration:none;font-size:.9rem}.btn:hover{background:#c73e54}.btn-sm{padding:.25rem .5rem;font-size:.8rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.25rem}.form-group input,.form-group select{width:100%;max-width:400px;padding:.4rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px}.card{background:#16213e;border:1px solid #0f3460;border-radius:8px;padding:1rem;margin-bottom:1rem}.error{color:#e94560}.muted{color:#888;font-size:.9rem;margin-bottom:1rem}a[href="#"]{cursor:pointer}code{background:#0f3460;padding:.1rem .3rem;border-radius:3px;font-size:.9em}button.job-single-card,button.job-server-item,button.healthcheck-card-link,summary.job-step-toggle{font:inherit}button.job-single-card,button.job-server-item,button.healthcheck-card-link{border:none;text-align:left}button.healthcheck-card-link{width:100%;padding:0;background:transparent}.servers-toolbar{margin-bottom:.75rem}.servers-filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;font-size:.85rem;color:#888}.servers-filter-row label{margin-right:.25rem}.servers-filter-row select{padding:.25rem .5rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px;font-size:.85rem}.servers-filter-row input{padding:.25rem .5rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px;font-size:.85rem;min-width:180px}#channels-summary{margin-bottom:1rem}.res-ok{color:#8fe3a8}.res-warning{color:#ffd166;font-weight:600}.res-critical{color:#ff6b6b;font-weight:700}.runner-runtime{display:inline-flex;align-items:center;gap:.25rem;white-space:nowrap;font-size:.82rem}.docker-icon{display:inline-flex;align-items:center;color:#4fa3ff;position:relative}.compose-icon{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border:1px solid #6ea8ff;border-radius:3px;color:#93c5fd;font-size:.66rem;font-weight:700;line-height:1;position:relative}.docker-icon.off,.compose-icon.off{color:#7d7d7d;border-color:#666}.docker-icon.off:after,.compose-icon.off:after{content:"";position:absolute;left:-1px;right:-1px;top:50%;height:2px;background:#dc3545;transform:rotate(-20deg)}.runtime-ver{color:#dbeafe;font-weight:600;letter-spacing:.01em}.runtime-sep{color:#6b89b8;margin:0 .1rem}.compose-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-left:.15rem}.compose-dot.up{background:#0f7d40}.compose-dot.down{background:#dc3545}.compose-dot.unknown{background:#777}.compose-label{font-size:.72rem;text-transform:lowercase}.compose-label.up{color:#8fe3a8}.compose-label.down,.compose-label.unknown{color:#ff9c9c}.runtime-tag,.runtime-digest{font-size:.72rem;padding:0 .25rem;border:1px solid #0f3460;border-radius:4px;color:#c8d9ff}.actions-servers-header{display:flex;align-items:center;gap:1rem;margin:1rem 0 .75rem;flex-wrap:wrap}.actions-servers-header .btn{margin-top:-5px}.actions-servers-header h3{margin:0;font-size:1rem;font-weight:600}.actions-channel-filter{display:flex;align-items:center;gap:.4rem}.actions-channel-filter label{font-size:.85rem;color:#888}.actions-channel-filter select{padding:.25rem .5rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px;font-size:.85rem}.actions-servers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem 1rem;margin-bottom:1rem}.actions-server-item{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;cursor:pointer;border-radius:4px}.actions-server-item:hover{background:#16213e}.actions-server-item input[type=checkbox]{flex-shrink:0;margin:0;cursor:pointer}.actions-server-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions-server-item .badge{flex-shrink:0}.actions-form-card{margin-top:.5rem}.actions-extra .form-group{margin-bottom:.75rem}.deploy-toggle{background:none;border:none;color:#e94560;cursor:pointer;padding:.2rem .4rem;font-size:.8rem}.deploy-toggle:hover{color:#fff}.deploy-servers-detail{padding:.75rem 1rem}.deploy-servers-detail table{margin:0}.deploy-servers-detail th{background:#16213e}.jobs-page{width:100%;max-width:none}.jobs-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.jobs-header h2{margin:0;font-size:1.5rem;font-weight:600}.jobs-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:1rem}.jobs-filters{display:flex;gap:.25rem}.filter-pill{padding:.35rem .75rem;border:1px solid #0f3460;background:transparent;color:#aaa;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .15s}.filter-pill:hover{background:#16213e;color:#eee}.filter-pill.active{background:#e94560;border-color:#e94560;color:#fff}.jobs-actions{display:flex;align-items:center;gap:.5rem}.btn-ghost{background:transparent;color:#888}.btn-ghost:hover{background:#16213e;color:#eee}.btn-primary{background:#e94560;color:#fff}.btn-primary:hover{background:#c73e54}.jobs-error{min-height:1.5em;margin-bottom:.5rem}.jobs-layout{display:flex;gap:0;margin-top:.5rem;min-height:70vh}.jobs-channel-row{margin-top:.25rem;display:flex;align-items:center;gap:.5rem}.jobs-channel-row label{font-size:.85rem;color:#888}.jobs-channel-row select{padding:.25rem .5rem;background:#16213e;border:1px solid #0f3460;color:#eee;border-radius:4px;font-size:.85rem}.jobs-sidebar{flex:0 0 280px;min-width:280px;border-right:1px solid #0f3460;background:#0f1629;display:flex;flex-direction:column}.jobs-sidebar-title{padding:.75rem 1rem;font-size:.8rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid #0f3460}.jobs-list{display:flex;flex-direction:column;gap:.25rem;padding:.5rem;overflow:auto;flex:1}.jobs-loading{display:flex;align-items:center;gap:.75rem;padding:2rem;color:#888}.spinner{width:20px;height:20px;border:2px solid #0f3460;border-top-color:#e94560;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.jobs-empty,.jobs-error-state{padding:2.5rem;text-align:center;color:#888}.jobs-empty-icon{font-size:2.5rem;display:block;margin-bottom:.5rem;opacity:.6}.job-group-card{background:#16213e;border:1px solid #0f3460;border-radius:6px;overflow:hidden}.job-group-header{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.35rem .5rem;padding:.5rem .6rem;cursor:default;min-width:0}.job-group-toggle{background:none;border:none;color:#e94560;cursor:pointer;padding:.15rem;font-size:.65rem;flex-shrink:0;line-height:1.2}.job-group-toggle:hover{color:#fff}.job-group-info{flex:1;min-width:0;font-size:.8rem;line-height:1.3}.job-group-title{font-weight:600;word-break:break-word;overflow-wrap:break-word}.job-group-meta{font-size:.75rem;color:#888}.job-group-right{display:flex;align-items:center;gap:.35rem;flex-shrink:0;font-size:.75rem}.job-group-stats{flex-shrink:0}.job-group-time{font-size:.7rem;color:#666;white-space:nowrap}.job-group-body{border-top:1px solid #0f3460}.job-group-body.collapsed{display:none}.job-group-servers{display:flex;flex-wrap:wrap;gap:.35rem;padding:.5rem .6rem}.job-server-item{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .5rem;background:#0f1629;border-radius:4px;text-decoration:none;color:inherit;font-size:.8rem;transition:background .15s;max-width:100%}.job-server-item:hover{background:#1a2744}.job-server-item.active{border:1px solid #e94560}.job-server-name{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-single-card{display:flex;flex-direction:column;gap:.2rem;padding:.5rem .6rem;background:#16213e;border:1px solid #0f3460;border-radius:6px;text-decoration:none;color:inherit;transition:all .15s;min-width:0}.job-single-card:hover{background:#1a2744;border-color:#1a3a5c}.job-single-card.active{border-color:#e94560;background:#1a2744}.job-single-row{min-width:0}.job-single-row-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.job-single-id{font-family:ui-monospace,monospace;font-size:.78rem;color:#888;flex-shrink:0}.job-single-meta{display:flex;align-items:center;gap:.4rem;flex-shrink:0}.job-single-row-desc{font-size:.8rem;color:#c9d1d9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-single-time{font-size:.7rem;color:#666}.badge-sm{padding:.12rem .35rem;font-size:.7rem}.jobs-main{flex:1;min-width:0;overflow:auto;background:#0d1117}.job-detail-content{min-height:200px;padding:1rem}.job-detail-empty{padding:3rem 2rem;text-align:center;color:#666}.job-detail-empty-icon{font-size:2.5rem;display:block;margin-bottom:.75rem;opacity:.5}.job-detail-card{background:transparent;padding:0}.job-detail-title-row{margin-bottom:.25rem}.job-detail-title{margin:0;font-size:1.25rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.job-detail-title-icon{display:inline-flex;width:1.25em}.job-detail-title-icon.done{color:#3fb950}.job-detail-title-icon.failed{color:#e94560}.job-detail-title-icon.leased,.job-detail-title-icon.pending{color:#d4a84b}.job-detail-summary{margin:0 0 1rem;font-size:.9rem;color:#888}.job-detail-meta{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1rem;font-size:.9rem;margin-bottom:1rem}.job-detail-meta dt{color:#888}.job-detail-meta dd{margin:0}.job-steps-list{border:1px solid #21262d;border-radius:6px;overflow:hidden;background:#161b22}.job-step{border-bottom:1px solid #21262d}.job-step:last-child{border-bottom:none}.job-step>summary{list-style:none}.job-step>summary::-webkit-details-marker{display:none}.job-step-toggle{width:100%;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:transparent;border:none;color:#e6edf3;font-size:.9rem;text-align:left;cursor:pointer}.job-step-toggle:hover:not(:disabled){background:#21262d}.job-step-toggle:disabled{cursor:default;opacity:.8}.job-step-chevron{color:#848d97;font-size:.7rem;width:1em;flex-shrink:0}.job-step-icon{flex-shrink:0;width:1.25em;text-align:center;font-weight:700}.job-step-icon.done{color:#3fb950}.job-step-icon.failed{color:#e94560}.job-step-icon.running{color:#d4a84b}.job-step-name{flex:1;min-width:0}.job-step-duration{font-size:.8rem;color:#848d97}.job-step-body{display:none;padding:.75rem 1rem;background:#0d1117;border-top:1px solid #21262d;font-size:.85rem;overflow:auto;max-height:400px}.job-step-body.expanded{display:block}.job-step-body .log-block-content,.job-step-body .log-block-single{font-size:.8rem;line-height:1.45}.job-step-results .job-step-body{max-height:600px}.job-result{margin-top:.75rem}.job-result-status{margin:0 0 .5rem;font-size:.9rem}.job-result-logs-wrap{margin-top:.5rem}.job-result-logs-actions{display:flex;gap:.5rem;margin-bottom:.5rem}.job-result-logs-actions button{padding:.25rem .6rem;font-size:.8rem;background:#0f1629;border:1px solid #0f3460;color:#aaa;border-radius:4px;cursor:pointer}.job-result-logs-actions button:hover{background:#16213e;color:#eee}.job-result-logs{max-height:280px;overflow:auto;font-size:.8rem;line-height:1.45;padding:.75rem;background:#0f1629;border-radius:4px;margin:0;white-space:pre-wrap;word-break:break-word;outline:none}.job-result-logs.expanded{max-height:none}.job-result-logs .log-block{margin-bottom:.75rem}.job-result-logs .log-block:last-child{margin-bottom:0}.log-block-label{font-size:.75rem;font-weight:600;color:#7a9fd6;margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.03em}.log-block-content{margin:0;padding:0;background:transparent;font-size:inherit;line-height:inherit;white-space:pre-wrap;word-break:break-word}.log-block-single{margin:0}.log-line{display:block}.log-line-error{color:#e94560}.log-line-warning{color:#d4a84b}.job-stream{max-height:220px;overflow:auto;font-size:.82rem;margin:.5rem 0}.stream-event{padding:.35rem 0;border-bottom:1px solid #0f3460}.stream-event.stream-failure{color:#e94560}.stream-event .stream-type{color:#888;margin-right:.5rem;font-size:.75rem}.stream-event-msg{margin:.25rem 0 0;padding:0;white-space:pre-wrap;word-break:break-word;font-size:.78rem;line-height:1.4;background:transparent;border:none;overflow:visible}.hidden{display:none!important}.text-muted{color:#888}.text-danger{color:#e94560}.text-end{text-align:right}.fs-5{font-size:1.1rem}.btn-group{display:inline-flex;gap:.25rem}.health-banner.success{border-left:4px solid #198754}.health-banner.warning{border-left:4px solid #ffc107}.healthcheck-card-link{text-decoration:none;color:inherit;display:block}.healthcheck-card-link:hover .healthcheck-card{box-shadow:0 4px 12px #0003}.healthcheck-card{transition:box-shadow .2s ease;margin-bottom:1rem}.healthcheck-card.border-success{border-left:4px solid #198754}.healthcheck-card.border-warning{border-left:4px solid #fd7e14}.healthcheck-card.border-danger{border-left:4px solid #dc3545}.healthcheck-card.border-secondary{border-left:4px solid #6c757d}.healthcheck-card-header{display:flex;justify-content:space-between;align-items:center}.badge.status-ok{background:#198754;color:#fff}.badge.status-degraded{background:#ffc107;color:#000}.badge.status-stale{background:#fd7e14;color:#fff}.badge.status-no_data{background:#6c757d;color:#fff}.svc-status.svc-ok,.svc-ok{color:#198754;font-weight:600}.svc-status.svc-error,.svc-error{color:#dc3545;font-weight:600}.svc-unknown{color:#6c757d}.status-bar-container{display:flex;gap:2px;align-items:flex-end;height:34px}.status-bar{flex:1;min-width:4px;height:100%;border-radius:2px}.status-bar.bg-success{background:#198754}.status-bar.bg-warning{background:#ffc107}.status-bar.bg-danger{background:#dc3545}.status-bar.bg-secondary{background:#444}.healthcheck-detail-header{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.healthcheck-day-selector{display:flex;flex-wrap:wrap;gap:.25rem;padding:0 1rem .5rem}tr.row-missing{background:#dc354514}.healthcheck-day-selector .btn{margin:1px}
