:root{
  --ink:#0E141C;--panel:#161F2B;--line:#26374A;--line-soft:#1F2E3E;
  --text:#E7EEF5;--muted:#8798AC;--flow:#46D3C3;--flow-dim:#2A6E6A;
  --ok:#5DD39E;--warn:#E8B04B;--err:#E8685E;--src:#7FA8FF;--dst:#46D3C3;
  --radius:14px;--mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:radial-gradient(1100px 560px at 15% -10%,#14202e 0%,transparent 60%),var(--ink);
  color:var(--text);font-family:'Inter',system-ui,sans-serif;font-size:15px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
h3{font-family:'Space Grotesk',sans-serif;margin:0}
.mono{font-family:var(--mono)}
button{font-family:inherit;cursor:pointer;font-size:15px}
input{font-size:15px}

.topbar{display:flex;align-items:center;gap:14px;padding:16px 26px;border-bottom:1px solid var(--line-soft)}
.brand{display:flex;align-items:center;gap:11px;font-family:'Space Grotesk';font-weight:700;font-size:18px}
.edition{font:700 11px var(--mono);color:var(--flow);border:1px solid var(--flow-dim);padding:2px 8px;border-radius:20px}
.logo-dot{width:11px;height:11px;border-radius:50%;background:var(--flow);box-shadow:0 0 0 4px rgba(70,211,195,.15)}
.ver{margin-left:auto;font:500 12px var(--mono);color:var(--muted);border:1px solid var(--line);padding:2px 8px;border-radius:20px}

.wrap{max-width:1080px;margin:0 auto;padding:34px 24px 80px}

.resume-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;
  background:linear-gradient(180deg,rgba(70,211,195,.08),transparent);
  border:1px solid var(--flow-dim);border-radius:var(--radius);padding:14px 18px;margin-bottom:20px;flex-wrap:wrap}
.rb-text{font-size:14px;color:var(--text)}
.rb-actions{display:flex;gap:10px}
.go.small{padding:9px 18px;font-size:14px}

.conduit{display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch;margin-bottom:22px}
.node{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.node header{display:flex;align-items:center;gap:9px;margin-bottom:16px}
.node .tag{font:700 11px var(--mono);letter-spacing:.12em;text-transform:uppercase}
.node.source .tag{color:var(--src)}.node.dest .tag{color:var(--dst)}
.node .dotmark{width:9px;height:9px;border-radius:50%}
.node.source .dotmark{background:var(--src)}.node.dest .dotmark{background:var(--dst)}
.node label{display:block;font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);margin:12px 0 6px}
.node input{width:100%;background:var(--ink);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:11px 13px;font-family:var(--mono)}
.node input:focus{outline:none;border-color:var(--flow);box-shadow:0 0 0 3px rgba(70,211,195,.12)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:11px}

.link{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 18px;min-width:96px}
.pipe{height:3px;width:100%;border-radius:3px;position:relative;overflow:hidden;background:linear-gradient(90deg,var(--src),var(--dst));opacity:.35}
.pipe::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 8px,rgba(255,255,255,.9) 8px 12px);opacity:0}
body.running .pipe{opacity:1}
body.running .pipe::after{opacity:.55;animation:flow 1s linear infinite}
@keyframes flow{to{transform:translateX(20px)}}
.link .arrow{margin-top:10px;font:700 12px var(--mono);color:var(--muted)}
body.running .link .arrow{color:var(--flow)}

.options{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;margin-bottom:20px;display:flex;flex-wrap:wrap;gap:22px;align-items:center}
.toggle{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.toggle input{appearance:none;width:40px;height:22px;background:var(--line);border-radius:20px;position:relative;transition:.15s;flex:none}
.toggle input:checked{background:var(--flow)}
.toggle.danger input:checked{background:var(--err)}
.warn-txt{color:var(--err);font-size:12px;font-weight:600}
.toggle input::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s}
.toggle input:checked::after{left:20px}
.opt-field{flex:1;min-width:220px}
.opt-field label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-bottom:6px}
.opt-field input{width:100%;background:var(--ink);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:9px 12px;font-family:var(--mono);font-size:13px}

.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.go{background:var(--flow);color:#062522;border:none;font-weight:600;padding:13px 26px;border-radius:10px}
.go:disabled{opacity:.5;cursor:not-allowed}
.hint{color:var(--muted);font-size:13px}
.ghost-btn{background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:9px;padding:7px 13px}
.ghost-btn:hover{color:var(--text);border-color:var(--flow-dim)}

.console{display:none;margin-top:24px}
body.has-job .console{display:block}
.overall{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:16px}
.overall .top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.status-pill{font:700 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:5px 11px;border-radius:20px;border:1px solid var(--line)}
.status-pill.running{color:var(--flow);border-color:var(--flow-dim)}
.status-pill.done{color:var(--ok);border-color:#2f6d55}
.status-pill.failed{color:var(--err);border-color:#6d3833}
.stats{display:flex;gap:26px;flex-wrap:wrap;font-family:var(--mono)}
.stat{display:flex;flex-direction:column}
.stat .n{font-size:24px;font-weight:700}
.stat .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.stat.ok .n{color:var(--ok)}.stat.skip .n{color:var(--muted)}.stat.fail .n{color:var(--err)}
.bar{height:8px;background:var(--line-soft);border-radius:8px;overflow:hidden;margin-top:16px}
.bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--src),var(--dst));border-radius:8px;transition:width .3s}

.folders{display:grid;gap:8px;margin-bottom:16px}
.folder{background:var(--panel);border:1px solid var(--line-soft);border-radius:11px;padding:12px 16px}
.folder .fh{display:flex;justify-content:space-between;gap:12px;font-family:var(--mono);font-size:13px}
.folder .fname{color:var(--text)}.folder .fcount{color:var(--muted)}
.folder .fbar{height:5px;background:var(--line-soft);border-radius:5px;overflow:hidden;margin-top:9px}
.folder .fbar>i{display:block;height:100%;width:0;background:var(--flow);transition:width .3s}
.toolbar{display:flex;justify-content:flex-end}

.issues{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}
.issues summary{cursor:pointer;padding:14px 18px;font:600 14px 'Inter',sans-serif;list-style:none;user-select:none}
.issues summary::-webkit-details-marker{display:none}
.issues summary::before{content:"▸";display:inline-block;margin-right:9px;color:var(--muted);transition:transform .15s}
.issues[open] summary::before{transform:rotate(90deg)}
.issues summary small{color:var(--muted);font-weight:400}
.issues.fail summary{color:var(--err)}
.issues.skip summary{color:var(--muted)}
.issue-list{max-height:280px;overflow:auto;border-top:1px solid var(--line-soft)}
.issue{display:grid;grid-template-columns:130px 1fr 1fr auto;gap:12px;padding:9px 18px;
  font-family:var(--mono);font-size:12px;border-bottom:1px solid var(--line-soft);align-items:baseline}
.issue .ifolder{color:var(--src);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.issue .isubj{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.issue .ifrom{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.issue .ireason{color:var(--warn);white-space:nowrap;font-size:11px}
.issues.fail .issue .ireason{color:var(--err)}
.issue.more{color:var(--muted);justify-content:center;display:block;text-align:center}
@media (max-width:760px){
  .issue{grid-template-columns:1fr;gap:2px}
  .issue .ireason{font-size:11px}
}

@media (max-width:760px){
  .conduit{grid-template-columns:1fr;gap:12px}
  .link{flex-direction:row;padding:4px 0;min-width:0}
  .link .pipe{width:60%}.link .arrow{margin:0 0 0 10px;transform:rotate(90deg)}
  .row2{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  body.running .pipe::after{animation:none}
  .bar>i,.folder .fbar>i{transition:none}
}
