:root{--bg: #0f1720;--panel: #16212e;--panel2: #1d2b3a;--border: #2a3a4d;--text: #e6edf3;--muted: #8b9cb0;--accent: #2f81f7;--ok: #2ea043;--warn: #d4a017;--late: #db6d28;--fail: #e5484d;--none: #6b7684}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}header{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:600;cursor:pointer}.user{color:var(--muted);font-size:13px}main{padding:24px;max-width:1100px;margin:0 auto}footer{text-align:center;color:var(--muted);font-size:12px;padding:24px}.meta{color:var(--muted);font-size:12px;margin-bottom:12px}.loading,.err{color:var(--muted);padding:24px 0}.loading.full{text-align:center;margin-top:20vh}.err{color:var(--fail)}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;color:#fff;white-space:nowrap}.badge.ok{background:var(--ok)}.badge.warn{background:var(--warn);color:#1a1200}.badge.late{background:var(--late)}.badge.fail{background:var(--fail)}.badge.none{background:var(--none)}.table-wrap{overflow-x:auto}.matrix{width:100%;border-collapse:collapse}.matrix th,.matrix td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border)}.matrix th{color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.matrix .row{cursor:pointer}.matrix .row:hover{background:var(--panel)}.cname{font-weight:600}.cell .cellmeta{color:var(--muted);font-size:11px;margin-top:4px;line-height:1.3}.back{background:none;border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 12px;cursor:pointer}.back:hover{background:var(--panel)}.detail-title{display:flex;align-items:center;gap:12px;margin:16px 0 20px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.card{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--none);border-radius:10px;padding:16px}.card.ok{border-left-color:var(--ok)}.card.warn{border-left-color:var(--warn)}.card.late{border-left-color:var(--late)}.card.fail{border-left-color:var(--fail)}.card.none{border-left-color:var(--none)}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-head h3{margin:0;font-size:16px}.card dl{margin:0}.card dl>div{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px dashed var(--border)}.card dt{color:var(--muted)}.card dd{margin:0;text-align:right}.artifacts{width:100%;border-collapse:collapse;margin-top:12px;font-size:12px}.artifacts th{color:var(--muted);text-align:left;font-weight:500;padding:4px 6px}.artifacts td{padding:4px 6px;border-top:1px solid var(--border);vertical-align:top}.artifacts td.v{color:var(--ok)}.artifacts td.x{color:var(--fail)}.err-cell{color:var(--fail);font-size:11px}.history{margin-top:12px;color:var(--muted);font-size:11px}.history span{color:var(--text)}.login{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:40px;text-align:center;width:340px}.login-card .logo{font-size:40px}.login-card h1{margin:8px 0 4px}.login-card p{color:var(--muted);margin:0 0 24px}.btn{display:inline-block;background:var(--accent);color:#fff;padding:10px 20px;border-radius:8px;font-weight:600}.btn:hover{text-decoration:none;opacity:.92}
