:root{--bg: #fbfafd;--surface: #ffffff;--surface-2: #f5f5fa;--sidebar: #f5f5fa;--text: #333238;--muted: #626168;--line: #dcdcde;--line-strong: #bfbfc3;--accent: #1f75cb;--accent-dark: #1068bf;--accent-soft: #e9f3fc;--active-bg: #dce6f9;--bad: #dd2b0e;--warn: #ab6100;--good: #108548;--radius: 4px;--shadow: 0 1px 2px rgba(31, 30, 36, .08);color-scheme:light}*{box-sizing:border-box}body{margin:0;font:14px/1.5 GitLab Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0;font-size:22px}h2{margin:0 0 16px;font-size:20px;font-weight:600}h3{margin:0 0 10px;font-size:15px;font-weight:600}code,.mono{font-family:ui-monospace,JetBrains Mono,Consolas,monospace}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--bad)}.nowrap{white-space:nowrap}.end{text-align:right;justify-content:flex-end}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);grid-template-rows:48px 1fr;min-height:100vh}.shell.collapsed{grid-template-columns:56px minmax(0,1fr)}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:16px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.logo{display:flex;align-items:center;gap:8px;color:var(--text);font-weight:600;font-size:15px;min-width:208px}.logo:hover{text-decoration:none}.topsearch{flex:1;max-width:440px;margin:0 auto;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:0 10px;height:32px;color:var(--muted)}.topsearch:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}.topsearch input{flex:1;border:0!important;outline:0!important;background:transparent!important;padding:0!important;height:100%;color:var(--text);box-shadow:none!important}kbd{font:11px ui-monospace,Consolas,monospace;border:1px solid var(--line);border-radius:4px;padding:0 6px;color:var(--muted);background:var(--surface-2)}.topright{min-width:208px;display:flex;justify-content:flex-end}.usermenu{position:relative}.avatar{width:32px;height:32px;border-radius:50%;padding:0;border:0;background:linear-gradient(135deg,#c33ea2,#6b4fbb);color:#fff;font-weight:700;cursor:pointer}.avatar:hover:not(:disabled){background:linear-gradient(135deg,#c33ea2,#6b4fbb);filter:brightness(1.08)}.dropdown{position:absolute;right:0;top:40px;width:230px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 16px #00000029;padding:6px 0;z-index:10}.dd-head{display:flex;flex-direction:column;padding:8px 14px;border-bottom:1px solid var(--line);margin-bottom:4px}.dd-item{display:block;width:100%;text-align:left;border:0;border-radius:0;padding:8px 14px;background:none}.dd-item:hover:not(:disabled){background:var(--surface-2)}aside{background:var(--sidebar);border-right:1px solid var(--line);padding:14px 8px;display:flex;flex-direction:column;gap:4px;position:sticky;top:48px;height:calc(100vh - 48px)}.nav-title{font-weight:600;font-size:14px;padding:4px 10px 10px}aside nav{display:flex;flex-direction:column;gap:2px;flex:1}aside nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius);color:var(--text)}aside nav a svg{flex:none;color:var(--muted)}aside nav a:hover{background:color-mix(in srgb,var(--text) 7%,transparent);text-decoration:none}aside nav a.active{background:var(--active-bg);font-weight:600}aside nav a.active svg{color:var(--accent)}.collapse{display:flex;align-items:center;gap:10px;border:0;background:none;color:var(--muted);padding:8px 10px}.collapse:hover:not(:disabled){background:color-mix(in srgb,var(--text) 7%,transparent)}.collapsed .nav-title,.collapsed aside nav a span,.collapsed .collapse span{display:none}.collapsed aside nav a,.collapsed .collapse{justify-content:center}.collapsed .collapse svg{transform:rotate(180deg)}main{padding:0;min-width:0}.crumbs{display:flex;align-items:center;gap:6px;padding:10px 24px;font-size:13px;color:var(--muted);flex-wrap:wrap}.crumbs i{font-style:normal;margin-right:6px;opacity:.6}.crumbs a{color:var(--muted)}.crumbs b{font-weight:600;color:var(--text)}.content{padding:4px 24px 60px;max-width:1320px}@media (max-width: 860px){.shell,.shell.collapsed{grid-template-columns:1fr;grid-template-rows:48px auto 1fr}aside{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;border-right:0;border-bottom:1px solid var(--line)}aside nav{flex-direction:row;flex-wrap:wrap}.nav-title,.collapse,.topsearch,.logo span{display:none}.logo,.topright{min-width:0}.topbar{justify-content:space-between}.content,.crumbs{padding-left:14px;padding-right:14px}}.card,table.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:16px;box-shadow:var(--shadow)}table.card{padding:4px 0;overflow:hidden}.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:20px}.tile{display:flex;flex-direction:column-reverse;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:var(--shadow)}.tile-label{background:var(--surface-2);color:var(--muted);padding:8px 16px;font-size:13px;border-bottom:1px solid var(--line)}.tile-value{font-size:30px;font-weight:600;padding:10px 16px 14px}.tile.good .tile-value{color:var(--good)}.tile.warn .tile-value{color:var(--warn)}.tile.bad .tile-value{color:var(--bad)}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;padding:10px 16px;background:var(--surface-2);border-bottom:1px solid var(--line)}td{padding:10px 16px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:hover td,table tr:hover>td{background:color-mix(in srgb,var(--accent) 5%,transparent)}tr:last-child td{border-bottom:0}td.wide{width:45%}input,select,button{font:inherit}input:not([type=checkbox]),select{height:34px;padding:4px 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);min-width:0}td input:not([type=checkbox]){width:100%}input::placeholder{color:var(--muted);opacity:.85}input:focus,select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;vertical-align:-2px;margin-right:6px}button{height:34px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;font-weight:500}button:hover:not(:disabled){background:var(--surface-2);border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}button:focus-visible{outline:0;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent)}button.primary{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#0b5cad;border-color:#0b5cad}button.danger{color:var(--bad);border-color:var(--bad);background:var(--surface)}button.danger:hover:not(:disabled){background:color-mix(in srgb,var(--bad) 10%,var(--surface));border-color:var(--bad)}button.icon,button.link{border:0;background:none;padding:2px 6px;height:auto}button.link{color:var(--muted);text-align:left}.toolbar,.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.row.between{justify-content:space-between;align-items:flex-start}.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:10px}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;align-items:center}.grid-form h3,.grid-form p{grid-column:1 / -1;margin:0}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.dot.on{background:var(--good)}.dot.off{background:var(--muted);opacity:.5}.pill{display:inline-block;padding:1px 10px;border-radius:999px;font-size:12px;font-weight:500;background:var(--surface-2);border:1px solid var(--line)}.pill.success{color:var(--good);background:color-mix(in srgb,var(--good) 10%,var(--surface));border-color:color-mix(in srgb,var(--good) 35%,var(--line))}.pill.failed{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--surface));border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}.pill.pending,.pill.sent{color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--surface));border-color:color-mix(in srgb,var(--warn) 35%,var(--line))}.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin:16px 0}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;background:none;height:40px;padding:0 16px;color:var(--text)}.tabs button:hover:not(:disabled){background:none;border-bottom-color:var(--line-strong)}.tabs button.active{border-bottom-color:var(--accent);color:var(--text);font-weight:600}dl{display:grid;grid-template-columns:130px 1fr;gap:8px 12px;margin:0 0 12px}dt{color:var(--muted)}dd{margin:0}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.chip{background:var(--accent-soft);color:var(--text);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:999px;padding:2px 4px 2px 12px;display:inline-flex;align-items:center;gap:2px}.checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:6px 16px;margin-top:10px}.check{display:block}.empty{color:var(--muted);padding:28px;text-align:center;background:var(--surface);border:1px dashed var(--line-strong);border-radius:8px}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;padding:16px;z-index:30}.modal{background:var(--surface);border-radius:8px;padding:20px;width:min(520px,100%);max-height:88vh;overflow:auto;box-shadow:0 8px 32px #0000004d}.modal-head{display:flex;justify-content:space-between;align-items:center}.pick-list{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px;margin:12px 0;display:flex;flex-direction:column;gap:6px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:#333238;color:#fff;padding:10px 18px;border-radius:8px;z-index:40;max-width:90vw;box-shadow:0 4px 16px #0000004d}.toast.bad{background:var(--bad);color:#fff}.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:var(--bg)}.login .card{width:min(400px,100%);display:flex;flex-direction:column;gap:12px;align-items:stretch;padding:28px}.login .card svg{align-self:center}.login h1{text-align:center;font-size:22px}.login .muted{text-align:center;margin:0}.banner{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:var(--radius);padding:8px 14px;margin:0 0 14px;font-size:13px}.modal .stack input,.modal .stack select{width:100%}.pill.critical{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--surface));border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}.pill.warning{color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--surface));border-color:color-mix(in srgb,var(--warn) 35%,var(--line))}.pill.info{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.usage-chart{width:100%;height:auto;display:block}.usage-legend{display:flex;gap:16px;font-size:12px;color:var(--muted);margin-bottom:6px}.usage-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:baseline}tr.selected td{background:var(--accent-soft)}.pill.running{color:var(--accent-dark);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.pill.completed,.pill.online{color:var(--good);background:color-mix(in srgb,var(--good) 10%,var(--surface));border-color:color-mix(in srgb,var(--good) 35%,var(--line))}.pill.paused,.pill.planned{color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--surface));border-color:color-mix(in srgb,var(--warn) 35%,var(--line))}.pill.halted{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,var(--surface));border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}.stagebar{display:flex;height:10px;border-radius:5px;overflow:hidden;background:var(--surface-2);border:1px solid var(--line);min-width:120px}.stagebar i{display:block;height:100%}.stagebar .s-success{background:var(--good)}.stagebar .s-sent{background:var(--accent)}.stagebar .s-failed{background:var(--bad)}.stage-card{border-left:4px solid var(--line-strong)}.stage-card.current{border-left-color:var(--accent)}.stage-card.done{border-left-color:var(--good)}
