:root{--warm-50: 12 3% 98%;--warm-300: 12 3% 80%;--warm-500: 12 3% 64%;--warm-700: 12 4% 17%;--warm-800: 12 4% 13%;--warm-850: 12 4% 11%;--warm-900: 12 5% 9%;--warm-950: 12 6% 6%;--orange-500: 24 94% 56%;--orange-400: 27 96% 65%;--green-500: 142 70% 52%;--red-500: 0 84% 60%;--amber-300: 48 96% 60%;--blue-400: 213 94% 68%;--background: var(--warm-900);--card: var(--warm-800);--terminal: var(--warm-950);--foreground: var(--warm-50);--muted-foreground: var(--warm-500);--soft-foreground: var(--warm-300);--border: 0 0% 100% / .1;--input: 0 0% 100% / .1;--accent: var(--orange-500);--accent-soft: var(--orange-400);--accent-foreground: var(--warm-950);--success: var(--green-500);--destructive: var(--red-500);--cancelled: var(--amber-300);--info: var(--blue-400);--sidebar: var(--warm-850);--radius: .75rem;--radius-md: calc(var(--radius) - 2px);--radius-sm: calc(var(--radius) - 4px);--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:hsl(var(--background));color:hsl(var(--foreground));font-family:var(--font-sans);font-size:.875rem;line-height:1.5;color-scheme:dark}.text-h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0}.text-h2{font-size:1.25rem;font-weight:600;letter-spacing:-.015em;line-height:1.3;margin:0}.text-label{font-weight:500}.text-caption{font-size:.75rem;color:hsl(var(--muted-foreground))}.text-muted{color:hsl(var(--muted-foreground))}.mono{font-family:var(--font-mono)}.shell{display:grid;grid-template-rows:3rem 1fr 2rem;grid-template-columns:13rem 1fr;grid-template-areas:"header header" "sidebar content" "footer footer";height:100%}.shell-header{grid-area:header;display:flex;align-items:center;gap:.75rem;padding:0 1rem;border-bottom:1px solid hsl(var(--border));background:hsl(var(--sidebar))}.wordmark{font-family:var(--font-mono);font-weight:600;font-size:.9375rem;color:hsl(var(--foreground));text-decoration:none}.wordmark .glyph{color:hsl(var(--accent));margin-right:.375rem}.env-badge{font-family:var(--font-mono);font-size:.6875rem;padding:.125rem .5rem;border-radius:999px;border:1px solid hsl(var(--border));color:hsl(var(--soft-foreground))}.shell-header .spacer{flex:1}.shell-sidebar{grid-area:sidebar;border-right:1px solid hsl(var(--border));background:hsl(var(--sidebar));padding:.75rem .5rem;display:flex;flex-direction:column;gap:.125rem}.side-link{display:flex;align-items:center;gap:.5rem;padding:.4375rem .625rem;border-radius:var(--radius-sm);color:hsl(var(--soft-foreground));text-decoration:none;border-left:2px solid transparent}.side-link:hover{background:hsl(var(--warm-700));color:hsl(var(--foreground))}.side-link.active{background:hsl(var(--warm-700));color:hsl(var(--accent-soft));border-left-color:hsl(var(--accent));font-weight:500}.shell-content{grid-area:content;overflow-y:auto;padding:1.5rem}.page{width:100%;display:flex;flex-direction:column;gap:1rem}.shell-footer{grid-area:footer;display:flex;align-items:center;gap:1rem;padding:0 1rem;border-top:1px solid hsl(var(--border));font-family:var(--font-mono);font-size:.6875rem;color:hsl(var(--muted-foreground));background:hsl(var(--sidebar))}.dot{display:inline-block;width:.5rem;height:.5rem;border-radius:999px;background:hsl(var(--muted-foreground))}.dot.ok{background:hsl(var(--success))}.dot.bad{background:hsl(var(--destructive))}@media(max-width:640px){.shell{grid-template-columns:1fr;grid-template-areas:"header" "content" "footer"}.shell-sidebar{display:none}}.card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:1rem}.input{width:100%;height:2.5rem;padding:0 .75rem;border:none;border-radius:var(--radius-md);background:hsl(var(--background));color:hsl(var(--foreground));font:inherit;box-shadow:inset 0 0 0 1px hsl(var(--input));transition:box-shadow .1s ease-in}.input::placeholder{color:hsl(var(--muted-foreground))}.input:focus{outline:none;box-shadow:inset 0 0 0 2px hsl(var(--accent))}.input.has-error{box-shadow:inset 0 0 0 1px hsl(var(--destructive))}.input.has-error:focus{box-shadow:inset 0 0 0 2px hsl(var(--destructive))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:2.25rem;padding:0 .875rem;border:none;border-radius:var(--radius-md);font:inherit;font-weight:500;cursor:pointer;transition:background .1s ease-in,opacity .1s ease-in}.btn:disabled{opacity:.55;cursor:default}.btn:focus-visible{outline:2px solid hsl(var(--accent));outline-offset:2px}.btn-primary{background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.btn-primary:hover:not(:disabled){background:hsl(var(--accent-soft))}.btn-ghost{background:transparent;color:hsl(var(--soft-foreground));box-shadow:inset 0 0 0 1px hsl(var(--border))}.btn-ghost:hover:not(:disabled){background:hsl(var(--warm-700));color:hsl(var(--foreground))}.btn-danger{background:transparent;color:hsl(var(--destructive));box-shadow:inset 0 0 0 1px hsl(var(--destructive) / .4)}.btn-danger:hover:not(:disabled){background:hsl(var(--destructive) / .12)}.tag{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:.6875rem;padding:.0625rem .5rem;border-radius:999px;border:1px solid hsl(var(--border));color:hsl(var(--soft-foreground))}.tag-running{color:hsl(var(--accent-soft));border-color:hsl(var(--accent) / .4)}.tag-done{color:hsl(var(--success));border-color:hsl(var(--success) / .4)}.tag-failed{color:hsl(var(--destructive));border-color:hsl(var(--destructive) / .4)}.tag-cancelled{color:hsl(var(--cancelled));border-color:hsl(var(--cancelled) / .4)}.progress-track{background:hsl(var(--warm-700));border-radius:999px;height:.5rem;overflow:hidden}.progress-track.has-count{position:relative;height:1.1rem}.progress-count{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.68rem;color:hsl(var(--foreground))}.progress-fill{height:100%;border-radius:999px;background:hsl(var(--accent));transition:width .3s}.progress-fill.status-done{background:hsl(var(--success))}.progress-fill.status-failed{background:hsl(var(--destructive))}.progress-fill.status-cancelled{background:hsl(var(--cancelled))}.terminal{background:hsl(var(--terminal));border:1px solid hsl(var(--border));border-radius:var(--radius-md);padding:.75rem;height:15rem;overflow-y:auto;font-family:var(--font-mono);font-size:.75rem;line-height:1.6;color:hsl(var(--soft-foreground));white-space:pre-wrap;margin:0}.terminal .cursor{display:inline-block;width:.5em;color:hsl(var(--accent));animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.terminal .cursor{animation:none}}.result-block{background:hsl(var(--terminal));border:1px solid hsl(var(--success) / .3);border-radius:var(--radius-md);padding:.75rem;font-family:var(--font-mono);font-size:.75rem;color:hsl(var(--soft-foreground));white-space:pre-wrap;margin:0}.error-text{color:hsl(var(--destructive));margin:0}.login-screen{height:100%;display:flex;align-items:center;justify-content:center;padding:1rem}.login-card{width:100%;max-width:22rem;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:2rem;display:flex;flex-direction:column;gap:1rem}.login-card .wordmark{font-size:1.125rem;text-align:center}.job-table{width:100%;border-collapse:collapse;font-size:.8125rem}.job-table th{text-align:left;font-weight:500;color:hsl(var(--muted-foreground));padding:.375rem .625rem;border-bottom:1px solid hsl(var(--border))}.job-table td{padding:.4375rem .625rem;border-bottom:1px solid hsl(var(--border))}.job-table tr:last-child td{border-bottom:none}.kv{display:grid;grid-template-columns:10rem 1fr;gap:.25rem 1rem}.kv dt{color:hsl(var(--muted-foreground))}.kv dd{margin:0;font-family:var(--font-mono)}.tag-interrupted{color:hsl(var(--cancelled));border-color:hsl(var(--cancelled) / .4);border-style:dashed}.tag-skipped{color:hsl(var(--muted-foreground))}.tag-origin-local{color:hsl(var(--info));border-color:hsl(var(--info) / .4)}.progress-fill.status-interrupted{background:hsl(var(--cancelled))}.warn-text{color:hsl(var(--cancelled));margin:0}.card-toggle{display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.card-toggle .chevron{font-family:var(--font-mono);color:hsl(var(--muted-foreground))}.card-toggle:hover .chevron{color:hsl(var(--foreground))}.modal-overlay{position:fixed;inset:0;background:hsl(var(--warm-950) / .7);display:flex;align-items:flex-start;justify-content:center;padding:3rem 1rem;z-index:50;overflow-y:auto}.modal{width:100%;max-width:64rem;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:1rem;display:flex;flex-direction:column;gap:1rem}.bind-row{border:1px solid hsl(var(--border));border-radius:var(--radius-md);padding:.625rem;display:flex;flex-direction:column;gap:.375rem}.bind-line{display:flex;flex-wrap:wrap;gap:.375rem .75rem;align-items:center}.bind-line .input{width:auto;min-width:12rem;height:2rem}.input-area{height:auto;min-height:16rem;padding:.5rem .75rem;font-family:var(--font-mono);font-size:.75rem;line-height:1.5;resize:vertical}.graph-scroll{overflow-x:auto;position:relative}.graph-svg text{font-family:var(--font-mono);fill:hsl(var(--foreground));pointer-events:none}.graph-svg .glabel{font-size:11px}.graph-svg .gcaption{font-size:9px;fill:hsl(var(--muted-foreground))}.gedge{fill:none;stroke:hsl(var(--warm-500) / .45);stroke-width:1.25}.gedge-marker{stroke:hsl(var(--warm-500) / .25);stroke-dasharray:3 4}.gmarker rect{fill:none;stroke:hsl(var(--muted-foreground) / .6);stroke-dasharray:4 4}.gmarker text{font-size:10px;fill:hsl(var(--muted-foreground));letter-spacing:.1em}.gnode rect{fill:hsl(var(--warm-850));stroke:hsl(var(--warm-500) / .5)}.gnode.has-artifact rect{stroke:hsl(var(--success) / .7)}.gnode.is-output rect{stroke-width:2}.gnode.is-table rect{fill:hsl(var(--warm-800))}.gdisplay rect{fill:hsl(var(--warm-800));stroke:hsl(var(--warm-500) / .5);stroke-dasharray:5 4}.gedge-display{stroke:hsl(var(--warm-500) / .3);stroke-dasharray:4 4}.graph-svg .gtable-line{font-size:9px;fill:hsl(var(--soft-foreground))}.graph-svg .gtable-head{font-size:9px;font-weight:600;fill:hsl(var(--muted-foreground))}.gtable-sep{stroke:hsl(var(--border))}.gnode.is-start rect{stroke:hsl(var(--success));stroke-width:2.5}.gnode.is-end rect{stroke:hsl(var(--destructive));stroke-width:2.5}.gstep rect{fill:hsl(var(--warm-700));stroke:hsl(var(--border))}.gstep.clickable{cursor:pointer}.gstep.selected rect{stroke:hsl(var(--accent));stroke-width:2}.gstep.status-running rect{stroke:hsl(var(--accent))}.gstep.status-done rect{stroke:hsl(var(--success) / .7)}.gstep.status-failed rect{stroke:hsl(var(--destructive))}.gstep.status-cancelled rect,.gstep.status-interrupted rect{stroke:hsl(var(--cancelled))}.gstep.status-skipped{opacity:.45}.gpopover{position:absolute;z-index:10;width:21rem;max-height:20rem;overflow-y:auto;background:hsl(var(--warm-850));border:1px solid hsl(var(--border));border-radius:var(--radius-md);padding:.625rem .75rem;box-shadow:0 10px 28px hsl(var(--warm-950) / .7);font-size:.75rem;line-height:1.45}.gpop-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem}.gpop-doc{margin:.375rem 0 0;color:hsl(var(--soft-foreground))}.gpop-section{margin-top:.5rem;padding-top:.5rem;border-top:1px solid hsl(var(--border))}.gpop-title{margin:0 0 .125rem;font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:hsl(var(--muted-foreground))}.gpop-line{overflow-wrap:anywhere}.gpop-row{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}.gspinner{fill:none;stroke:hsl(var(--accent));stroke-width:2;stroke-dasharray:22 10;stroke-linecap:round;transform-box:fill-box;transform-origin:center;animation:gspin .9s linear infinite}@keyframes gspin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.gspinner{animation:none}}
