*{box-sizing:border-box;margin:0;padding:0}
:root{
    --bg:#0f172a;
    --card:#1e293b;
    --border:#334155;
    --accent:#3b82f6;
    --green:#22c55e;
    --red:#ef4444;
    --yellow:#eab308;
    --gray:#64748b;
    --text:#e2e8f0;
    --muted:#94a3b8;
}
body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}

/* Header */
.header{background:var(--card);border-bottom:1px solid var(--border);padding:1.25rem 2rem;display:flex;align-items:center;justify-content:space-between}
.header h1{font-size:1.4rem;font-weight:700}
.header h1 span{color:var(--accent)}
.subtitle{color:var(--muted);font-size:.85rem;margin-top:.25rem}
.meta{text-align:right}
.update-time{color:var(--muted);font-size:.8rem;font-family:monospace}

/* Container */
.container{max-width:1200px;margin:1.5rem auto;padding:0 1.5rem}

/* Summary */
.summary-bar{display:flex;gap:.75rem;margin-bottom:2rem;flex-wrap:wrap}
.summary-chip{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:.5rem 1rem;font-size:.85rem;display:flex;align-items:center;gap:.5rem}

/* Dot */
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}
.dot.green{background:var(--green)}
.dot.red{background:var(--red)}
.dot.yellow{background:var(--yellow)}
.dot.gray{background:var(--gray)}

/* Groups */
.group{margin-bottom:2rem}
.group-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}
.group-header h2{font-size:1.1rem;font-weight:600;display:flex;align-items:center;gap:.5rem}
.group-count{color:var(--muted);font-size:.85rem;font-family:monospace}

/* Services Grid */
.services-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}

/* Service Card */
.service-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;transition:border-color .2s}
.service-card.healthy{border-left:3px solid var(--green)}
.service-card.degraded{border-left:3px solid var(--yellow)}
.service-card.unhealthy{border-left:3px solid var(--red)}
.service-card.unknown{border-left:3px solid var(--gray)}
.service-card:hover{border-color:var(--accent)}

.service-top{display:flex;align-items:center;gap:.5rem;margin-bottom:.6rem}
.service-name{font-weight:600;font-size:.95rem;flex:1}
.service-badge{font-size:.7rem;padding:.15rem .5rem;border-radius:4px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.service-badge.healthy{background:rgba(34,197,94,.15);color:var(--green)}
.service-badge.degraded{background:rgba(234,179,8,.15);color:var(--yellow)}
.service-badge.unhealthy{background:rgba(239,68,68,.15);color:var(--red)}
.service-badge.unknown{background:rgba(100,116,139,.15);color:var(--gray)}

.service-details{display:flex;gap:1rem;flex-wrap:wrap}
.detail{font-size:.8rem;color:var(--muted)}
.detail-label{margin-right:.25rem}
.detail-value{color:var(--text);font-family:monospace}
.detail-value.fast{color:var(--green)}
.detail-value.normal{color:var(--yellow)}
.detail-value.slow{color:var(--red)}

.service-error{margin-top:.5rem;font-size:.75rem;color:var(--red);background:rgba(239,68,68,.08);padding:.4rem .6rem;border-radius:4px;word-break:break-all}

/* Empty */
.empty{text-align:center;color:var(--muted);padding:3rem;font-size:1rem}

/* Footer */
.footer{text-align:center;color:var(--muted);font-size:.75rem;padding:2rem 0;border-top:1px solid var(--border);margin-top:2rem}

/* Responsive */
@media(max-width:640px){
    .header{flex-direction:column;align-items:flex-start;gap:.5rem}
    .services-grid{grid-template-columns:1fr}
    .summary-bar{flex-direction:column}
}

/* === Topnav === */
.topnav{display:flex;align-items:center;gap:2rem;padding:.75rem 2rem;background:var(--bg-card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}
.topnav-brand{font-weight:700;color:var(--accent)}
.topnav-links{display:flex;gap:1.25rem}
.topnav-links a{color:var(--muted);text-decoration:none;font-size:.9rem;padding:.4rem .75rem;border-radius:4px;transition:all .15s}
.topnav-links a:hover{color:var(--text);background:rgba(255,255,255,.04)}
.topnav-links a.active{color:var(--accent);background:rgba(99,102,241,.1)}

/* === Pipelines === */
.filters{display:flex;gap:.75rem;margin-bottom:1.25rem;flex-wrap:wrap}
.filter{background:var(--bg-card);color:var(--text);border:1px solid var(--border);padding:.5rem .75rem;border-radius:6px;font-size:.85rem;min-width:160px}
.filter:focus{outline:none;border-color:var(--accent)}

.runs-table{width:100%;border-collapse:collapse;font-size:.85rem;background:var(--bg-card);border-radius:8px;overflow:hidden}
.runs-table th{text-align:left;padding:.7rem .9rem;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border);background:rgba(0,0,0,.15);text-transform:uppercase;font-size:.7rem;letter-spacing:.05em}
.runs-table td{padding:.65rem .9rem;border-bottom:1px solid rgba(255,255,255,.04)}
.runs-table tr:hover{background:rgba(255,255,255,.02)}
.runs-table a{color:var(--accent);text-decoration:none}
.runs-table a:hover{text-decoration:underline}
.runs-table code{background:rgba(255,255,255,.06);padding:.1rem .35rem;border-radius:3px;font-size:.78rem}

.run-badge{display:inline-block;padding:.2rem .55rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.run-badge.success{background:rgba(34,197,94,.15);color:var(--green)}
.run-badge.failure{background:rgba(239,68,68,.15);color:var(--red)}
.run-badge.in-progress{background:rgba(59,130,246,.15);color:#60a5fa}
.run-badge.queued{background:rgba(234,179,8,.15);color:var(--yellow)}
.run-badge.cancelled{background:rgba(156,163,175,.15);color:var(--gray)}
.run-badge.skipped{background:rgba(100,116,139,.1);color:var(--gray)}
.run-badge.unknown{background:rgba(100,116,139,.1);color:var(--gray)}

.run-row.run-failure{box-shadow:inset 3px 0 0 var(--red)}
.run-row.run-in-progress{box-shadow:inset 3px 0 0 #60a5fa}

@media(max-width:640px){
    .topnav{flex-direction:column;align-items:flex-start;padding:.75rem 1rem}
    .runs-table{font-size:.75rem}
    .runs-table th,.runs-table td{padding:.5rem}
}
