@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root{--bg: #0e1014;--bg-panel: #161a21;--bg-panel-2: #1b2029;--line: #262d38;--line-soft: #1f242d;--ink: #e6e9ee;--ink-dim: #8a93a3;--ink-faint: #5a6270;--sig-run: #ffb02e;--sig-ok: #3ddc97;--sig-err: #ff5d5d;--sig-part: #ff9d4d;--sig-idle: #5a6270;--sig-cyan: #4dd2ff;--radius: 4px;--mono: "JetBrains Mono", ui-monospace, monospace;--sans: "Space Grotesk", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}button{font-family:inherit;cursor:pointer}a{color:inherit}.shell{max-width:1180px;margin:0 auto;padding:0 24px 64px}.topbar{display:flex;align-items:center;gap:16px;padding:18px 0 20px;border-bottom:1px solid var(--line);margin-bottom:28px}.brand{display:flex;align-items:baseline;gap:10px;cursor:pointer}.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--sig-run);box-shadow:0 0 #ffb02e80;animation:pulse 2.4s infinite;align-self:center}@keyframes pulse{0%{box-shadow:0 0 #ffb02e73}70%{box-shadow:0 0 0 7px #ffb02e00}to{box-shadow:0 0 #ffb02e00}}.brand h1{font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:-.02em;margin:0}.brand .sub{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.04em}.topbar .spacer{flex:1}.btn{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.02em;padding:9px 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-panel);color:var(--ink);transition:border-color .15s,background .15s}.btn:hover{border-color:var(--sig-cyan)}.btn.primary{background:var(--sig-run);color:#1a1206;border-color:var(--sig-run);font-weight:700}.btn.primary:hover{filter:brightness(1.08)}.btn:disabled{opacity:.45;cursor:not-allowed;border-color:var(--line)}.btn.ghost{background:transparent}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);display:flex;align-items:center;gap:10px;margin:0 0 14px}.eyebrow:after{content:"";flex:1;height:1px;background:var(--line-soft)}.jobs{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-panel)}.job-row{display:grid;grid-template-columns:14px 1fr 168px 150px 132px 96px;align-items:center;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line-soft);cursor:pointer;transition:background .12s}.job-row:last-child{border-bottom:none}.job-row:hover{background:var(--bg-panel-2)}.job-row.head{cursor:default;background:transparent;padding-top:11px;padding-bottom:11px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.job-row.head:hover{background:transparent}.row-actions{display:flex;justify-content:flex-end;align-items:center;cursor:default}.icon-del{font-family:var(--mono);font-size:12px;line-height:1;width:26px;height:26px;border-radius:var(--radius);border:1px solid var(--line);background:transparent;color:var(--ink-faint);opacity:0;transition:opacity .12s,border-color .12s,color .12s,background .12s}.job-row:hover .icon-del{opacity:1}.icon-del:hover{border-color:var(--sig-err);color:var(--sig-err);background:#ff5d5d14}.confirm-del{display:flex;gap:6px}.mini{font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;padding:5px 9px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-panel-2);color:var(--ink-dim);transition:border-color .12s,color .12s,background .12s}.mini:hover:not(:disabled){border-color:var(--sig-cyan);color:var(--ink)}.mini:disabled{opacity:.45;cursor:not-allowed}.mini.danger{border-color:var(--sig-err);color:var(--sig-err);background:#ff5d5d14}.mini.danger:hover:not(:disabled){background:var(--sig-err);color:#1a0606}.job-id{font-family:var(--mono);font-weight:500;font-size:13.5px;color:var(--ink)}.job-id .msg{display:block;font-size:11.5px;color:var(--ink-dim);font-weight:400;margin-top:3px}.signal{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.03em;text-transform:uppercase}.signal .led{width:7px;height:7px;border-radius:50%;flex:none}.signal[data-s=running]{color:var(--sig-run)}.signal[data-s=running] .led{background:var(--sig-run);animation:blink 1.1s steps(2) infinite}.signal[data-s=success]{color:var(--sig-ok)}.signal[data-s=success] .led{background:var(--sig-ok)}.signal[data-s=error]{color:var(--sig-err)}.signal[data-s=error] .led{background:var(--sig-err)}.signal[data-s=partial]{color:var(--sig-part)}.signal[data-s=partial] .led{background:var(--sig-part)}.signal[data-s=pending],.signal[data-s=cancelled]{color:var(--sig-idle)}.signal[data-s=pending] .led,.signal[data-s=cancelled] .led{background:var(--sig-idle)}@keyframes blink{50%{opacity:.25}}.counts{display:flex;gap:12px;font-family:var(--mono);font-size:12px}.counts span{color:var(--ink-faint)}.counts .ok{color:var(--sig-ok)}.counts .ko{color:var(--sig-err)}.when{font-family:var(--mono);font-size:11.5px;color:var(--ink-dim);text-align:right}.bar{position:relative;height:4px;background:var(--line);border-radius:2px;overflow:hidden;margin-top:8px}.bar>i{position:absolute;top:0;right:0;bottom:0;left:0;width:var(--p, 0%);background:var(--sig-run);transition:width .4s ease}.bar.done>i{background:var(--sig-ok)}.bar.part>i{background:var(--sig-part)}.bar.err>i{background:var(--sig-err)}.empty{border:1px dashed var(--line);border-radius:var(--radius);padding:48px 24px;text-align:center;color:var(--ink-dim);font-family:var(--mono);font-size:13px}.empty b{color:var(--ink);font-weight:700;display:block;margin-bottom:8px}.detail-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:8px}.detail-head h2{font-family:var(--mono);font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0}.detail-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:22px;margin-top:26px;align-items:start}@media (max-width: 860px){.detail-grid{grid-template-columns:1fr}}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-panel);overflow:hidden}.panel>header{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);padding:13px 16px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;justify-content:space-between}.panel .body{padding:16px}.kv{display:grid;grid-template-columns:130px 1fr;gap:7px 14px}.kv dt{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.03em;text-transform:uppercase}.kv dd{margin:0;font-family:var(--mono);font-size:12.5px;color:var(--ink);word-break:break-all}.timeline{list-style:none;margin:0;padding:0;max-height:420px;overflow-y:auto}.timeline li{position:relative;padding:0 0 0 22px;margin-bottom:16px;font-family:var(--mono);font-size:12.5px}.timeline li:before{content:"";position:absolute;left:3px;top:4px;width:7px;height:7px;border-radius:50%;background:var(--sig-idle)}.timeline li:after{content:"";position:absolute;left:6px;top:13px;bottom:-16px;width:1px;background:var(--line)}.timeline li:last-child:after{display:none}.timeline li[data-t=status_change]:before{background:var(--sig-cyan)}.timeline li[data-t=external_event]:before{background:var(--sig-run)}.timeline li[data-t=progress]:before{background:var(--ink-faint)}.timeline .et{color:var(--ink)}.timeline .ets{display:block;color:var(--ink-faint);font-size:10.5px;margin-top:2px;letter-spacing:.02em}.timeline.live li:first-child{animation:slideIn .35s ease}@keyframes slideIn{0%{opacity:0;transform:translate(-6px)}}.outputs{list-style:none;margin:0;padding:0}.outputs li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft);font-family:var(--mono);font-size:12.5px}.outputs li:last-child{border-bottom:none}.outputs a{color:var(--sig-cyan);text-decoration:none;font-size:11px;letter-spacing:.03em;border:1px solid var(--line);padding:5px 10px;border-radius:var(--radius)}.outputs a:hover{border-color:var(--sig-cyan)}.errs{list-style:none;margin:0;padding:0}.errs li{font-family:var(--mono);font-size:12px;padding:9px 12px;border-left:2px solid var(--sig-err);background:#ff5d5d0f;margin-bottom:8px;border-radius:0 var(--radius) var(--radius) 0}.errs .item{color:var(--sig-err);font-weight:700}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#08090cb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:64px 20px;z-index:30;animation:fade .15s ease}@keyframes fade{0%{opacity:0}}.modal{width:100%;max-width:560px;background:var(--bg-panel);border:1px solid var(--line);border-radius:var(--radius)}.modal>header{padding:18px 20px;border-bottom:1px solid var(--line-soft);font-family:var(--mono);font-weight:700;letter-spacing:-.01em}.modal .body{padding:20px;display:grid;gap:14px}.dropzone{display:grid;gap:4px;justify-items:center;text-align:center;padding:18px 16px;border:1px dashed var(--line);border-radius:var(--radius);background:var(--bg);cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover{border-color:var(--sig-cyan)}.dropzone.over{border-color:var(--sig-cyan);background:#4dd2ff0f}.dropzone .dz-main{font-family:var(--mono);font-size:12.5px;color:var(--ink)}.dropzone .dz-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint)}.field{display:grid;gap:6px}.field label{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-dim)}.field input{font-family:var(--mono);font-size:13px;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink)}.field input:focus{outline:none;border-color:var(--sig-cyan)}.field .hint{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint)}.modal>footer{padding:16px 20px;border-top:1px solid var(--line-soft);display:flex;justify-content:flex-end;gap:10px}.form-err{font-family:var(--mono);font-size:12px;color:var(--sig-err);padding:10px 12px;border-left:2px solid var(--sig-err);background:#ff5d5d0f}.back{font-family:var(--mono);font-size:12px;color:var(--ink-dim);background:none;border:none;padding:0;margin-bottom:18px}.back:hover{color:var(--sig-cyan)}.live-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--sig-run);text-transform:uppercase}.live-tag .led{width:6px;height:6px;border-radius:50%;background:var(--sig-run);animation:blink 1.1s steps(2) infinite}
