:root{--page: #070b15;--surface: #0d1424;--surface-2: #131c30;--surface-3: #1a2540;--border: rgba(148, 163, 184, .13);--border-strong: rgba(148, 163, 184, .24);--ink: #f2f6fd;--ink-2: #b9c5da;--ink-3: #7e8ca6;--grid: rgba(148, 163, 184, .12);--accent: #6d8dff;--accent-2: #8b5cf6;--cyan: #22d3ee;--accent-soft: rgba(109, 141, 255, .15);--accent-glow: rgba(109, 141, 255, .35);--violet: #a78bfa;--good: #34d399;--good-soft: rgba(52, 211, 153, .13);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .13);--critical: #f87171;--critical-soft: rgba(248, 113, 113, .13);--sky: #38bdf8;--sky-soft: rgba(56, 189, 248, .14);--grad-brand: linear-gradient(120deg, #6d8dff, #8b5cf6 55%, #22d3ee);--grad-btn: linear-gradient(120deg, #5b7cfa, #7c5cf6);--mono: "SFMono-Regular", ui-monospace, "Cascadia Code", Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", sans-serif;--radius: 12px;--radius-sm: 7px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:radial-gradient(900px 480px at 12% -8%,rgba(99,102,241,.14),transparent 60%),radial-gradient(800px 460px at 95% 0%,rgba(34,211,238,.07),transparent 55%),radial-gradient(1000px 700px at 55% 115%,rgba(139,92,246,.08),transparent 60%),var(--page);background-attachment:fixed;color:var(--ink-2);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;min-height:100vh}.sidebar{width:228px;flex-shrink:0;padding:20px 12px;border-right:1px solid var(--border);background:linear-gradient(180deg,rgba(99,102,241,.07),rgba(13,20,36,.4) 30%,transparent);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;font-weight:700;font-size:17px;letter-spacing:.01em;background:var(--grad-brand);-webkit-background-clip:text;background-clip:text;color:transparent}.brand svg{flex-shrink:0}.brand small{color:var(--ink-3);font-weight:400;font-size:11px;margin-left:auto}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--ink-2);font-weight:480}.nav-link:hover{background:var(--surface-2);text-decoration:none}.nav-link.active{background:linear-gradient(90deg,#6d8dff33,#8b5cf614);color:var(--ink);box-shadow:inset 2.5px 0 0 var(--accent),0 0 18px #6d8dff14}.nav-link .icon{width:17px;height:17px;color:var(--ink-3)}.nav-link.active .icon{color:var(--accent);filter:drop-shadow(0 0 6px var(--accent-glow))}.sidebar-footer{margin-top:auto;padding:10px;font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:8px}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 3px var(--good-soft);animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.history-bars{display:inline-flex;align-items:flex-end;gap:3px;height:22px}.history-bars span{width:6px;border-radius:2px;min-height:6px;background:var(--surface-3)}.history-bars span.completed{background:var(--good)}.history-bars span.failed{background:var(--critical)}.history-bars span.running{background:var(--sky);animation:pulse 1.4s ease-in-out infinite}.history-bars span.cancelled,.history-bars span.pending{background:var(--surface-3)}.progress-track{height:7px;border-radius:999px;background:var(--surface-3);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--sky),var(--accent));box-shadow:0 0 12px #38bdf880;transition:width .4s ease}.running-banner{display:flex;align-items:center;gap:14px;padding:13px 18px;border:1px solid rgba(56,189,248,.3);border-radius:var(--radius);background:linear-gradient(90deg,#38bdf817,#6d8dff0d);margin-bottom:20px}.running-banner .progress-track{flex:1}.main{flex:1;min-width:0;padding:28px 32px 64px;max-width:1280px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.page-head h1{margin:0;font-size:22px;font-weight:650;color:var(--ink);letter-spacing:-.01em}.page-head p{margin:4px 0 0;color:var(--ink-3)}.crumbs{font-size:13px;color:var(--ink-3);margin-bottom:6px}.crumbs a{color:var(--ink-3)}.crumbs a:hover{color:var(--accent)}.card{background:linear-gradient(180deg,#94a3b80b,#94a3b802 42%) var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:inset 0 1px #ffffff0d,0 8px 24px -12px #020612b3}.card+.card,.section{margin-top:20px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}.card-head h2{margin:0;font-size:14px;font-weight:600;color:var(--ink)}.card-body{padding:18px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:20px}.tile{position:relative;background:linear-gradient(180deg,#94a3b80d,#94a3b802 50%) var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px 15px;box-shadow:inset 0 1px #ffffff0d,0 8px 24px -12px #020612b3;overflow:hidden;transition:border-color .15s ease,transform .15s ease}.tile:before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--grad-brand);opacity:.55}.tile:hover{border-color:var(--border-strong);transform:translateY(-1px)}.tile .label{font-size:11.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.tile .value{font-size:30px;font-weight:700;letter-spacing:-.02em;margin-top:6px;line-height:1.1;background:linear-gradient(180deg,#fff,#b9c5da);-webkit-background-clip:text;background-clip:text;color:transparent}.tile .sub{font-size:12px;color:var(--ink-3);margin-top:5px}.tile.accent:before{background:linear-gradient(90deg,var(--sky),var(--accent));opacity:1}.tile.accent .value{background:linear-gradient(120deg,var(--sky),var(--accent));-webkit-background-clip:text;background-clip:text}.tile.good:before{background:linear-gradient(90deg,#34d399,#22d3ee);opacity:1}.tile.good .value{background:linear-gradient(120deg,#4ade9d,#22d3ee);-webkit-background-clip:text;background-clip:text}.tile.bad:before{background:linear-gradient(90deg,#f87171,#fbbf24);opacity:1}.tile.bad .value{background:linear-gradient(120deg,#f87171,#fbbf24);-webkit-background-clip:text;background-clip:text}table{width:100%;border-collapse:collapse;font-size:13.5px}th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:550;padding:10px 18px;border-bottom:1px solid var(--border)}td{padding:11px 18px;border-bottom:1px solid rgba(255,255,255,.05);color:var(--ink-2);vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr.rowlink{cursor:pointer}tbody tr.rowlink:hover{background:var(--surface-2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--ink-3)}.empty{padding:40px 18px;text-align:center;color:var(--ink-3)}.empty .hint{font-size:12.5px;margin-top:6px}.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 8px;border-radius:999px;font-size:12px;font-weight:550;white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill.completed{color:var(--good);background:var(--good-soft);box-shadow:inset 0 0 0 1px #34d39940}.pill.completed:before{box-shadow:0 0 8px #34d399e6}.pill.running{color:var(--sky);background:var(--sky-soft);box-shadow:inset 0 0 0 1px #38bdf84d}.pill.running:before{animation:pulse 1.6s ease-in-out infinite;box-shadow:0 0 8px #38bdf8e6}.pill.failed{color:var(--critical);background:var(--critical-soft);box-shadow:inset 0 0 0 1px #f8717147}.pill.failed:before{box-shadow:0 0 8px #f87171cc}.pill.pending{color:var(--ink-2);background:var(--surface-3)}.pill.cancelled{color:var(--ink-3);background:var(--surface-3)}.runtime-badge{display:inline-block;padding:1px 8px;border-radius:5px;font-size:11.5px;font-weight:650;font-family:var(--mono)}.runtime-badge.python{color:#67c3f8;background:#38bdf821;box-shadow:inset 0 0 0 1px #38bdf840}.runtime-badge.typescript{color:#b8a6fc;background:#a78bfa21;box-shadow:inset 0 0 0 1px #a78bfa40}.runtime-badge.javascript{color:#fcd34d;background:#fbbf241c;box-shadow:inset 0 0 0 1px #fbbf2438}.trigger-chip{font-size:11.5px;color:var(--ink-3);border:1px solid var(--border);padding:1px 8px;border-radius:999px}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--ink);font-size:13px;font-weight:550;font-family:var(--sans);cursor:pointer;transition:background .12s ease}.btn:hover{background:var(--surface-3)}.btn.primary{background:var(--grad-btn);border-color:transparent;color:#fff;box-shadow:0 4px 16px -4px var(--accent-glow),inset 0 1px #ffffff2e}.btn.primary:hover{filter:brightness(1.12);box-shadow:0 6px 22px -4px var(--accent-glow),inset 0 1px #ffffff2e}.btn.danger{color:#ef8a8a}.btn.danger:hover{background:var(--critical-soft)}.btn.sm{padding:4px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}label.field{display:block;margin-bottom:14px}label.field span{display:block;font-size:12px;font-weight:550;color:var(--ink-2);margin-bottom:6px}input[type=text],select,textarea{width:100%;background:var(--page);color:var(--ink);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;font-family:var(--sans)}textarea.code{font-family:var(--mono);font-size:12.5px;line-height:1.6;min-height:180px;resize:vertical;white-space:pre;-moz-tab-size:4;tab-size:4}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-row{display:flex;gap:14px}.form-row>*{flex:1}.error-banner{background:var(--critical-soft);border:1px solid rgba(208,59,59,.4);color:#ef8a8a;border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:14px;font-size:13px;white-space:pre-wrap;word-break:break-word}.logview{background:var(--page);font-family:var(--mono);font-size:12.5px;line-height:1.7;padding:14px 18px;max-height:420px;overflow-y:auto}.logview .line{display:flex;gap:12px;white-space:pre-wrap;word-break:break-word}.logview .tag{color:var(--violet);flex-shrink:0;min-width:88px}.logview .ts{color:var(--ink-3);flex-shrink:0}.feed{max-height:380px;overflow-y:auto}.feed-item{display:flex;align-items:baseline;gap:10px;padding:9px 18px;border-bottom:1px solid rgba(255,255,255,.05);font-size:13px}.feed-item .ts{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:12px;flex-shrink:0}.dag-wrap{overflow-x:auto;padding:10px 0}.dag-node{cursor:default}.dag-node rect{fill:var(--surface-2);stroke:var(--border-strong);rx:8}.dag-node.completed rect{stroke:var(--good)}.dag-node.running rect{stroke:var(--sky);stroke-width:1.8;animation:node-glow 1.6s ease-in-out infinite}@keyframes node-glow{0%,to{filter:drop-shadow(0 0 3px rgba(56,189,248,.4))}50%{filter:drop-shadow(0 0 10px rgba(56,189,248,.85))}}.dag-node.failed rect{stroke:var(--critical)}.dag-node.cancelled rect{stroke:var(--border);opacity:.6}.dag-node text{fill:var(--ink);font-size:12.5px;font-weight:550;font-family:var(--sans)}.dag-node text.rt{fill:var(--ink-3);font-size:10.5px;font-weight:400;font-family:var(--mono)}.dag-edge{stroke:var(--grid);stroke-width:1.5;fill:none}.dag-edge.done{stroke:var(--good);opacity:.55}.dag-edge.active{stroke:var(--sky);stroke-width:2;stroke-dasharray:7 5;stroke-linecap:round;animation:edge-flow .8s linear infinite;filter:drop-shadow(0 0 4px rgba(56,189,248,.65))}@keyframes edge-flow{to{stroke-dashoffset:-12}}.task-row{display:grid;grid-template-columns:200px 110px 90px 1fr;gap:14px;align-items:center;padding:11px 18px;border-bottom:1px solid rgba(255,255,255,.05)}.task-row:last-child{border-bottom:none}.task-row .tname{color:var(--ink);font-weight:550;display:flex;align-items:center;gap:8px}.result-json{font-family:var(--mono);font-size:12px;color:var(--ink-2);background:var(--page);border-radius:var(--radius-sm);padding:10px 12px;overflow-x:auto;white-space:pre;margin:0}details.task-detail{border-bottom:1px solid rgba(255,255,255,.05)}details.task-detail summary{list-style:none;cursor:pointer}details.task-detail summary::-webkit-details-marker{display:none}details.task-detail[open] summary .task-row{background:var(--surface-2)}.task-detail-body{padding:6px 18px 18px;display:grid;gap:12px}.chart-wrap svg,.activity-chart,.gantt{width:100%;height:auto;display:block}.chart-grid{stroke:var(--grid);stroke-width:1}.chart-tick{fill:var(--ink-3);font-size:10.5px;font-family:var(--sans)}.chart-axis-label{fill:var(--ink-3);font-size:10.5px;font-family:var(--mono)}.gantt-label{fill:var(--ink-2);font-size:11.5px;font-family:var(--mono)}.gantt-ms{fill:var(--ink-3);font-size:10.5px;font-family:var(--mono)}.legend{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}.legend-swatch{display:inline-block;width:10px;height:10px;border-radius:3px}.result-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:10px;font-size:12.5px}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.seg button{background:transparent;border:none;color:var(--ink-3);padding:3px 12px;font-size:12px;cursor:pointer;font-family:var(--sans)}.seg button+button{border-left:1px solid var(--border)}.seg button.on{background:var(--accent-soft);color:var(--ink)}.seg button:disabled{opacity:.4;cursor:not-allowed}.inline-select{display:inline-flex;align-items:center;gap:6px;color:var(--ink-3);font-size:12px}.inline-select select{width:auto;padding:3px 8px;font-size:12px}.result-table{overflow:auto;max-height:380px;border:1px solid var(--border);border-radius:var(--radius-sm)}.result-table th{position:sticky;top:0;background:var(--surface-2);z-index:1}.connector-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border-strong);border-radius:999px;padding:3px 12px;font-size:12.5px;color:var(--ink)}.connector-chip button{background:none;border:none;color:var(--ink-3);cursor:pointer;padding:0;font-size:12px}.connector-chip button:hover{color:#ef8a8a}.notebook-title{background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--ink);font-size:22px;font-weight:650;font-family:var(--sans);padding:4px 8px;margin-left:-8px;width:50%;min-width:240px}.notebook-title:hover{border-color:var(--border)}.notebook-title:focus{outline:none;border-color:var(--accent)}.cell{display:flex;gap:10px;margin-bottom:14px}.cell-gutter{flex:0 0 34px;padding-top:34px}.cell-run{width:30px;height:30px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--accent);font-size:11px;cursor:pointer;transition:all .12s ease}.cell-run:hover{background:var(--accent);color:#fff;border-color:transparent}.cell-run:disabled{opacity:.6;cursor:wait}.cell-kind-dot{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;color:var(--ink-3);border:1px dashed var(--border);border-radius:50%;font-size:13px}.cell-main{flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 14px 14px;box-shadow:0 1px 2px #00000040}.cell.markdown .cell-main{background:transparent;border-color:transparent;box-shadow:none}.cell.markdown .cell-main:hover{border-color:var(--border)}.cell-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:11.5px;color:var(--ink-3);opacity:.85}.cell-toolbar select{width:auto;padding:2px 8px;font-size:11.5px}.cell-kind{text-transform:uppercase;letter-spacing:.08em;font-weight:600;font-size:10px;color:var(--ink-3)}.cell-actions{margin-left:auto;display:inline-flex;gap:4px;opacity:0;transition:opacity .12s ease}.cell:hover .cell-actions{opacity:1}.cell-actions button{background:transparent;border:none;color:var(--ink-3);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px}.cell-actions button:hover{background:var(--surface-3);color:var(--ink)}textarea.cell-editor{min-height:0;border-color:var(--border);background:var(--page)}.cell-output{margin-top:10px;display:grid;gap:10px}.cell-logs{color:var(--ink-3);max-height:160px;overflow-y:auto}.add-cell-row{display:flex;align-items:center;gap:8px;padding:14px 0 6px 44px;border-top:1px dashed var(--border)}.cm-host{border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--page);transition:border-color .12s ease,box-shadow .12s ease;width:100%;min-width:0;display:block}.cm-host .cm-editor{min-width:0;width:100%}.cm-host .cm-scroller{overflow:auto}.cm-host:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.token.comment,.token.prolog,.token.cdata{color:var(--ink-3);font-style:italic}.token.keyword,.token.atrule,.token.important{color:var(--violet)}.token.string,.token.char,.token.attr-value,.token.regex{color:#5eead4}.token.number,.token.boolean,.token.constant,.token.symbol{color:var(--warning)}.token.function,.token.selector,.token.tag{color:var(--sky)}.token.class-name,.token.builtin,.token.namespace{color:var(--cyan)}.token.operator,.token.punctuation,.token.combinator{color:#8ea3c4}.token.property,.token.attr-name,.token.variable,.token.parameter{color:#93b4ff}.token.decorator,.token.annotation{color:var(--warning)}.token.url,.token.link{color:var(--accent);text-decoration:underline}.token.title,.token.bold{color:var(--ink);font-weight:650}.token.italic{font-style:italic}.token.deleted{color:var(--critical)}.token.inserted{color:var(--good)}.markdown{color:var(--ink-2);line-height:1.65;padding:2px 0}.markdown h2,.markdown h3,.markdown h4,.markdown h5{color:var(--ink);margin:10px 0 6px;letter-spacing:-.01em}.markdown h2{font-size:22px}.markdown h3{font-size:17px}.markdown p{margin:6px 0}.markdown code{background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-family:var(--mono);font-size:12.5px}.markdown pre{background:var(--page);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;overflow-x:auto}.markdown pre code{background:none;border:none;padding:0}.markdown ul{margin:6px 0;padding-left:22px}.cell-name{width:110px;padding:2px 8px;font-family:var(--mono);font-size:11.5px;color:var(--cyan);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm)}.cell-name::placeholder{color:var(--ink-3)}.cell-name:hover{border-color:var(--border)}.cell-name:focus{outline:none;border-color:var(--accent);background:var(--surface-2)}.cell-inputs{font-family:var(--mono);font-size:11px;color:var(--ink-3);border:1px dashed var(--border-strong);border-radius:999px;padding:1px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.wb-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.wb-tabs{display:inline-flex;gap:2px;padding:3px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.wb-tabs button{border:none;background:transparent;color:var(--ink-3);font-size:12px;font-weight:600;padding:4px 14px;border-radius:5px;cursor:pointer}.wb-tabs button.on{background:var(--surface-3);color:var(--ink)}.task-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;margin-bottom:12px}.task-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.task-card-head select{width:auto;padding:3px 8px;font-size:12px}.task-id{width:160px;padding:4px 10px;font-family:var(--mono);font-size:12.5px;font-weight:650;color:var(--ink);background:var(--page);border:1px solid var(--border-strong);border-radius:var(--radius-sm)}.task-id:focus{outline:none;border-color:var(--accent)}.dep-picker{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1}.dep-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.dep-chip{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);background:transparent;border:1px dashed var(--border-strong);border-radius:999px;padding:2px 10px;cursor:pointer}.dep-chip:hover{color:var(--ink-2);border-color:var(--accent)}.dep-chip.on{color:var(--cyan);border:1px solid rgba(34,211,238,.45);background:#22d3ee1a}.task-remove{margin-left:auto;border:none;background:transparent;color:var(--ink-3);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:5px}.task-remove:hover{color:var(--critical);background:var(--critical-soft)}.wb-actions{display:flex;align-items:center;gap:12px;margin:4px 0 14px}.wb-preview{border-top:1px solid var(--border);padding-top:12px}.wb-preview-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);margin-bottom:8px}.fn-code-wrap{position:relative}.fn-code{max-height:300px;overflow:auto}.fn-edit-btn{position:absolute;top:8px;right:8px;background:var(--surface-2)}.fn-edit-bar{display:flex;align-items:center;gap:8px;margin-bottom:10px}.fn-edit-bar select{width:auto;padding:3px 8px;font-size:12px}@media(max-width:900px){.sidebar{display:none}.main{padding:20px 16px 48px}}
