.fx-page{padding:0}.fx-head{height:auto;min-height:52px;justify-content:space-between;align-items:center}.fx-head>div h1{margin:0}.fx-head-actions{display:flex;align-items:center;gap:8px}.fx-new-wrap{position:relative}.fx-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:40;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;padding:6px;min-width:240px;box-shadow:0 14px 40px #00000073}.fx-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--text);padding:8px 10px;border-radius:7px;cursor:pointer;font-size:12.5px}.fx-menu button:hover{background:var(--bg-3)}.fx-menu-sep{height:1px;background:var(--border);margin:5px 4px}.fx-layout{flex:1;display:grid;grid-template-columns:248px 1fr 340px;min-height:0}.fx-sidebar{border-right:1px solid var(--border);background:var(--panel);overflow:auto;padding:12px 10px}.fx-side-title{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin:2px 6px 8px;font-weight:700}.fx-tree-row{display:flex;align-items:center;gap:5px;padding:5px 6px;border-radius:7px;cursor:pointer;font-size:12.5px;white-space:nowrap}.fx-tree-row:hover{background:var(--bg-3)}.fx-tree-row.active{background:#ff362121;color:var(--text)}.fx-tree-caret{width:12px;display:inline-flex;justify-content:center;color:var(--text-faint);font-size:10px}.fx-tree-ico{width:16px}.fx-tree-label{overflow:hidden;text-overflow:ellipsis}.fx-tree-count{margin-left:auto;font-size:10px;color:var(--text-faint);background:var(--bg-3);border-radius:8px;padding:0 6px}.fx-recent{display:flex;flex-direction:column;gap:2px}.fx-recent-empty{font-size:11.5px;color:var(--text-faint);padding:4px 6px}.fx-recent-item{display:flex;align-items:center;gap:7px;background:transparent;border:none;color:var(--text-dim);padding:5px 6px;border-radius:7px;cursor:pointer;font-size:12px;text-align:left}.fx-recent-item:hover{background:var(--bg-3);color:var(--text)}.fx-recent-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-main{position:relative;overflow:auto;padding:14px 18px 22px;min-width:0}.fx-main.drag{outline:2px dashed var(--accent);outline-offset:-10px}.fx-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.fx-crumbs{display:flex;align-items:center;flex-wrap:wrap;font-size:12.5px}.fx-crumb{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:3px 5px;border-radius:6px;font-size:12.5px}.fx-crumb:hover{background:var(--bg-3);color:var(--text)}.fx-crumb.cur{color:var(--text);font-weight:600}.fx-crumb-sep{color:var(--text-faint);margin:0 1px}.fx-search{display:flex;align-items:center;gap:6px;background:var(--bg-2);border:1px solid var(--border);border-radius:9px;padding:5px 10px;min-width:220px}.fx-search input{background:transparent;border:none;outline:none;color:var(--text);font-size:12.5px;width:100%}.fx-search-x{background:transparent;border:none;color:var(--text-faint);cursor:pointer}.fx-drop-overlay{position:absolute;top:8px;right:8px;bottom:8px;left:8px;z-index:20;display:flex;align-items:center;justify-content:center;background:#ff362114;border:2px dashed var(--accent);border-radius:14px;color:var(--text);font-weight:600;pointer-events:none}.fx-empty{text-align:center;color:var(--text-dim);padding:60px 20px;display:flex;flex-direction:column;align-items:center;gap:6px}.fx-empty .hint{font-size:12px;color:var(--text-faint)}.fx-list{width:100%;border-collapse:collapse;font-size:12.5px}.fx-list thead th{text-align:left;color:var(--text-faint);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:6px 10px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg)}.fx-row{border-bottom:1px solid var(--border);cursor:pointer}.fx-row:hover{background:var(--bg-2)}.fx-row.sel{background:#2f9bff1a}.fx-row td{padding:7px 10px;vertical-align:middle}.fx-ico{width:26px;text-align:center}.fx-name{background:transparent;border:none;color:var(--text);cursor:pointer;font-size:12.5px;font-weight:500;padding:0;text-align:left}.fx-name:hover{color:var(--blue);text-decoration:underline}.fx-tablecell{display:inline-flex;align-items:center;gap:4px}.fx-kebab{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:16px;line-height:1;padding:2px 6px;border-radius:6px}.fx-kebab:hover{background:var(--bg-3);color:var(--text)}.fx-import-results{margin-top:18px;border:1px solid var(--border);border-radius:12px;overflow:hidden}.fx-import-head{background:var(--bg-2);padding:9px 14px;font-size:12px;font-weight:600;border-bottom:1px solid var(--border)}.fx-import-row{display:flex;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid var(--border);cursor:pointer}.fx-import-row:last-child{border-bottom:none}.fx-import-row:hover{background:var(--bg-2)}.fx-import-row .muted{margin-left:auto}.fx-details{border-left:1px solid var(--border);background:var(--panel);overflow:auto;padding:14px 14px 22px}.fx-details-empty{text-align:center;color:var(--text-dim);padding:50px 14px;display:flex;flex-direction:column;align-items:center;gap:6px}.fx-details-empty .hint{font-size:11.5px;color:var(--text-faint)}.fx-det-head{display:flex;align-items:center;gap:9px;margin-bottom:14px}.fx-det-ico{font-size:22px}.fx-det-title{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-det-section{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);font-weight:700;margin:16px 0 8px}.fx-meta{width:100%;border-collapse:collapse;font-size:12px}.fx-meta td{padding:4px 0;vertical-align:top}.fx-meta td:first-child{color:var(--text-faint);width:78px}.fx-meta code{font-family:var(--mono);font-size:11px;word-break:break-all}.fx-det-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.fx-integrations{display:grid;grid-template-columns:1fr 1fr;gap:6px}.fx-integrations button{display:flex;align-items:center;gap:6px;background:var(--bg-2);border:1px solid var(--border);color:var(--text);padding:7px 9px;border-radius:8px;cursor:pointer;font-size:11.5px}.fx-integrations button:hover{border-color:var(--border-2);background:var(--bg-3)}.fx-preview{border:1px solid var(--border);border-radius:10px;overflow:hidden}.fx-preview-msg{padding:18px;font-size:12px;display:flex;align-items:center;gap:8px}.fx-preview-code{margin:0;padding:12px;font-family:var(--mono);font-size:11px;max-height:320px;overflow:auto;white-space:pre;color:var(--text)}.fx-preview-img{max-width:100%;display:block}.fx-ctx-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.fx-ctx{position:fixed;z-index:51;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;padding:6px;min-width:200px;box-shadow:0 16px 44px #00000080}.fx-ctx-head{font-size:11px;color:var(--text-dim);padding:5px 9px 7px;border-bottom:1px solid var(--border);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-ctx button{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--text);padding:7px 10px;border-radius:7px;cursor:pointer;font-size:12.5px}.fx-ctx button:hover{background:var(--bg-3)}.fx-ctx button.danger{color:#ff6b5e}.fx-modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#00000080;display:flex;align-items:center;justify-content:center}.fx-modal{background:var(--bg-2);border:1px solid var(--border-2);border-radius:14px;padding:22px;width:440px;max-width:92vw;box-shadow:0 20px 60px #00000080}.fx-modal h3{margin:0 0 6px}.fx-modal>input{width:100%;background:var(--bg);border:1px solid var(--border-2);border-radius:9px;padding:9px 11px;color:var(--text);font-size:13px;margin-top:10px}.fx-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.fx-move-list{max-height:240px;overflow:auto;margin-top:10px;display:flex;flex-direction:column;gap:3px}.fx-move-opt{text-align:left;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:8px 11px;border-radius:8px;cursor:pointer;font-size:12px}.fx-move-opt:hover{border-color:var(--border-2)}.fx-move-opt.sel{border-color:var(--accent);background:#ff36211a}.fx-import-drop{margin-top:14px;border:2px dashed var(--border-2);border-radius:12px;padding:30px 18px;text-align:center;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px}.fx-import-drop:hover{border-color:var(--accent);background:#ff36210a}.fx-import-drop .hint{font-size:11.5px;color:var(--text-faint)}:root[data-theme=light] .fx-sidebar,:root[data-theme=light] .fx-details{background:#f7f9fc}:root[data-theme=light] .fx-row.sel{background:#eaf3ff}:root[data-theme=light] .fx-list thead th{background:#fff}.ing-page .page-head{gap:16px}.ing-tabs{display:flex;gap:4px;background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:3px}.ing-tabs button{background:transparent;border:none;color:var(--text-dim);padding:6px 12px;border-radius:8px;cursor:pointer;font-size:12.5px;white-space:nowrap}.ing-tabs button:hover{color:var(--text)}.ing-tabs button.on{background:var(--accent);color:#fff}.ing-body{flex:1;overflow:auto;padding:22px}.ing-add-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.ing-add-head h2{margin:0 0 2px;font-size:17px}.ing-add-head p{margin:0}.ing-search{display:flex;align-items:center;gap:7px;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;padding:8px 12px;min-width:280px}.ing-search input{background:transparent;border:none;outline:none;color:var(--text);font-size:13px;width:100%}.ing-search button{background:transparent;border:none;color:var(--text-faint);cursor:pointer}.ing-cat{margin-bottom:22px}.ing-cat-title{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);font-weight:700;margin:0 0 10px}.ing-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:12px}.ing-conn-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:16px;cursor:pointer;transition:border-color .12s,transform .12s}.ing-conn-card:hover{border-color:var(--accent);transform:translateY(-1px)}.ing-conn-ico{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;font-size:20px;margin-bottom:8px}.ing-conn-ico.success{background:#34d05826;color:var(--green)}.ing-conn-ico.failed{background:#ff503c26;color:#ff6b5e}.ing-conn-name{font-weight:600;font-size:13px;color:var(--text)}.ing-conn-modes{font-size:11px;color:var(--text-faint);text-transform:capitalize}.ing-empty{text-align:center;color:var(--text-dim);padding:50px 20px;background:var(--bg-2);border:1px dashed var(--border-2);border-radius:12px}.ing-list{width:100%;border-collapse:collapse;font-size:12.5px}.ing-list thead th{text-align:left;color:var(--text-faint);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:9px 12px;border-bottom:1px solid var(--border)}.ing-list td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.ing-list tr:last-child td{border-bottom:none}.ing-run-row{cursor:pointer}.ing-run-row:hover{background:var(--bg-2)}.ing-row-src{display:inline-flex;align-items:center;gap:8px}.ing-row-ico{font-size:15px}.ing-desc,.ing-msg{font-size:11px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ing-badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:10.5px;font-weight:600;text-transform:capitalize}.ing-badge.connected,.ing-badge.success{background:#34d05829;color:var(--green)}.ing-badge.failed{background:#ff503c29;color:#ff6b5e}.ing-badge.untested,.ing-badge.running{background:var(--bg-3);color:var(--text-dim)}button.sm{padding:4px 10px;font-size:11.5px}button.sm.danger,.ing-list .danger{color:#ff6b5e}.ing-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:22px}.ing-stat{background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:4px}.ing-stat-n{font-size:24px;font-weight:700}.ing-stat-n.ok{color:var(--green)}.ing-stat span:last-child{font-size:11.5px;color:var(--text-faint)}.ing-modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#00000080;display:flex;align-items:center;justify-content:center;padding:20px}.ing-modal{background:var(--bg-2);border:1px solid var(--border-2);border-radius:16px;padding:22px;width:560px;max-width:96vw;max-height:90vh;overflow:auto;box-shadow:0 24px 70px #0000008c}.ing-modal-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.ing-modal-head h3{margin:0;font-size:16px}.ing-form{display:grid;grid-template-columns:1fr 1fr;gap:13px}.ing-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-dim)}.ing-form label.wide{grid-column:1 / -1}.ing-form input,.ing-form select,.ing-form textarea{background:var(--bg);border:1px solid var(--border-2);color:var(--text);border-radius:9px;padding:9px 11px;font-size:13px;font-family:var(--sans)}.ing-form textarea{resize:vertical;font-family:var(--mono);font-size:11.5px}.ing-form .req{color:var(--accent);margin-left:2px}.ing-form .lock{font-size:10px}.ing-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.ing-logs{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;margin:0;font-family:var(--mono);font-size:11.5px;white-space:pre-wrap;max-height:360px;overflow:auto;color:var(--text);line-height:1.55}:root[data-theme=light] .ing-conn-card,:root[data-theme=light] .ing-stat{background:#f7f9fc}:root[data-theme=light] .ing-run-row:hover{background:#eef2f7}@media (max-width: 900px){.ing-form{grid-template-columns:1fr}.ing-tabs button{padding:6px 9px;font-size:12px}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.nb-header{flex-shrink:0;background:var(--bg-2);border-bottom:1px solid var(--border);position:relative}.nb-tabs{display:flex;align-items:flex-end;gap:6px;height:38px;padding:0 10px;background:var(--bg);border-bottom:1px solid var(--border)}.nb-tab{display:flex;align-items:center;gap:8px;height:30px;padding:0 12px;background:var(--bg-2);border:1px solid var(--border);border-bottom:none;border-radius:8px 8px 0 0;max-width:340px}.nb-tab.active{background:var(--panel);border-color:var(--border-2)}.nb-tab-ico{font-size:13px}.nb-tab-title{background:transparent;border:none;outline:none;color:var(--text);font-weight:600;font-size:13px;width:200px;min-width:90px;padding:0}.nb-tab-title:focus{border-bottom:1px solid var(--blue)}.nb-tab-dot{width:8px;height:8px;border-radius:50%;background:var(--amber);flex-shrink:0}.nb-tab-dot.saved{background:var(--green)}.nb-newtab{background:transparent;border:none;color:var(--text-dim);font-size:17px;line-height:1;cursor:pointer;padding:2px 8px;border-radius:6px;height:28px}.nb-newtab:hover{background:var(--bg-3);color:var(--text)}.nb-menubar{display:flex;align-items:center;justify-content:space-between;gap:12px;height:46px;padding:0 12px}.nb-menus{display:flex;align-items:center;gap:2px;min-width:0}.nb-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.nb-menu-wrap{position:relative}.nb-menu-btn{background:transparent;border:none;color:var(--text);cursor:pointer;padding:5px 10px;border-radius:6px;font-size:13px}.nb-menu-btn:hover,.nb-menu-btn.on{background:var(--bg-3)}.nb-menu-pop{position:absolute;top:calc(100% + 5px);left:0;z-index:60;min-width:232px;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;padding:6px;box-shadow:0 16px 44px #00000073;display:flex;flex-direction:column}.nb-menu-pop.right{left:auto;right:0;min-width:210px}.nb-menu-pop button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;background:transparent;border:none;color:var(--text);padding:7px 10px;border-radius:7px;cursor:pointer;font-size:12.5px}.nb-menu-pop button:hover{background:var(--bg-3)}.nb-menu-pop button.on{color:var(--text);font-weight:600}.nb-menu-sep{height:1px;background:var(--border);margin:5px 4px}.nb-menu-head{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-weight:700;padding:4px 8px 6px}.nb-menu-info{font-size:11.5px;color:var(--text-dim);padding:5px 10px;line-height:1.5}.nb-menu-pop kbd,.nb-menu-info kbd{font-family:var(--mono);font-size:10px;background:var(--bg-3);border:1px solid var(--border-2);border-radius:4px;padding:1px 5px;color:var(--text-dim)}.nb-div{width:1px;height:20px;background:var(--border);margin:0 8px}.nb-lang{background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);border-radius:7px;padding:4px 8px;font-size:12px;cursor:pointer}.nb-status{font-size:11.5px;color:var(--text-faint);margin-left:10px;white-space:nowrap}.nb-status.ok{color:var(--green)}.nb-run-all{display:inline-flex;align-items:center;gap:6px;font-weight:600}.nb-compute{display:inline-flex;align-items:center;gap:7px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);border-radius:8px;padding:6px 11px;font-size:12.5px;cursor:pointer;white-space:nowrap}.nb-compute:hover{border-color:var(--text-faint)}.nb-dot-green{width:8px;height:8px;border-radius:50%;background:var(--green);flex-shrink:0;box-shadow:0 0 0 2px #34d0582e}.nb-caret{font-size:9px;color:var(--text-dim)}.nb-act{background:transparent;border:1px solid var(--border-2);color:var(--text);border-radius:8px;padding:6px 12px;font-size:12.5px;cursor:pointer;white-space:nowrap}.nb-act:hover{background:var(--bg-3)}.nb-share{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.nb-share:hover{background:var(--accent-2);border-color:var(--accent-2)}.nb-menu-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55}.nb-open-anchored{position:absolute;top:calc(100% - 2px);left:12px;z-index:60}.nb-sched-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.nb-sched-form label:first-child{grid-column:1 / -1}.nb-sched-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-dim)}.nb-sched-form select,.nb-sched-form input{background:var(--bg);border:1px solid var(--border-2);color:var(--text);border-radius:8px;padding:8px 10px;font-size:13px}.nb-share-link{display:flex;gap:8px;margin:12px 0}.nb-share-link input{flex:1;background:var(--bg);border:1px solid var(--border-2);color:var(--text-dim);border-radius:8px;padding:9px 11px;font-family:var(--mono);font-size:11.5px}.nb-share-perms{border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:6px}.nb-share-row{display:flex;align-items:center;justify-content:space-between;padding:9px 13px;font-size:12.5px;border-bottom:1px solid var(--border)}.nb-share-row:last-child{border-bottom:none}@media (max-width: 1180px){.nb-status{display:none}.nb-act{padding:6px 10px}}@media (max-width: 1000px){.nb-lang,.nb-div{display:none}.nb-compute span:not(.nb-dot-green):not(.nb-caret){display:none}.nb-run-all span,.nb-act{font-size:12px}}:root[data-theme=light] .nb-tabs{background:#eef1f6}:root[data-theme=light] .nb-tab{background:#e4e9f0}:root[data-theme=light] .nb-tab.active{background:#fff}:root[data-theme=light] .nb-menu-btn:hover,:root[data-theme=light] .nb-menu-btn.on{background:#e7ebf1}:root{--bg: #0e1116;--bg-2: #151a21;--bg-3: #1b222b;--panel: #11161d;--border: #262d38;--border-2: #313a47;--text: #e6edf3;--text-dim: #8b97a7;--text-faint: #5d6776;--accent: #ff3621;--accent-2: #ff5a47;--blue: #2f9bff;--green: #34d058;--amber: #ffb020;--mono: "JetBrains Mono", "Cascadia Code", Consolas, monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);background:var(--bg);color:var(--text);font-size:13px;overflow:hidden}.app{display:flex;flex-direction:column;height:100vh}.workspace{display:flex;flex:1;min-height:0}.sidebar{width:280px;border-right:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column;flex-shrink:0;position:relative}.panel-resizer{position:absolute;top:0;bottom:0;width:9px;z-index:6;cursor:col-resize;touch-action:none}.panel-resizer.right{right:-5px}.panel-resizer.left{left:-5px}.panel-resizer:after{content:"";position:absolute;top:0;bottom:0;left:4px;width:1px;background:transparent;transition:background .12s,width .12s,left .12s}.panel-resizer:hover:after,.panel-resizer.dragging:after{background:var(--accent);width:3px;left:3px}.main{flex:1;display:flex;flex-direction:column;min-width:0}.assistant{width:360px;border-left:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column;flex-shrink:0}.topbar{height:48px;display:flex;align-items:center;gap:16px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--bg-2)}.logo{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:.2px}.logo .mark{width:22px;height:22px;border-radius:5px;background:linear-gradient(135deg,var(--accent),var(--accent-2));display:grid;place-items:center;font-size:13px}.logo small{color:var(--text-dim);font-weight:500}.spacer{flex:1}.tabs{display:flex;gap:4px}.tab{padding:6px 14px;border-radius:7px;cursor:pointer;color:var(--text-dim);font-weight:600;border:1px solid transparent}.tab:hover{background:var(--bg-3);color:var(--text)}.tab.active{background:var(--bg-3);color:var(--text);border-color:var(--border-2)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim);background:var(--bg-3);padding:4px 10px;border-radius:20px;border:1px solid var(--border)}.dot{width:7px;height:7px;border-radius:50%;background:var(--green)}.dot.off{background:var(--text-faint)}select,input,textarea{background:var(--bg-3);color:var(--text);border:1px solid var(--border-2);border-radius:6px;padding:6px 9px;font-family:var(--sans);font-size:12px;outline:none}select:focus,input:focus,textarea:focus{border-color:var(--blue)}button{font-family:var(--sans);cursor:pointer;border-radius:6px;font-weight:600;border:1px solid var(--border-2);background:var(--bg-3);color:var(--text);padding:7px 12px;font-size:12px;display:inline-flex;align-items:center;gap:6px}button:hover{background:#222a34}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-2)}button:disabled{opacity:.5;cursor:not-allowed}.panel-head{padding:10px 14px;font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-faint);font-weight:700;display:flex;align-items:center;gap:8px}.tree{overflow-y:auto;flex:1;padding:4px 6px 16px}.nbpanel-sort{display:flex;align-items:center;gap:8px;padding:4px 12px 8px;border-bottom:1px solid var(--border)}.nbpanel-sort .mp-label{font-size:10px;color:var(--text-faint);font-weight:700;text-transform:uppercase;letter-spacing:.4px}.nbpanel-sort select{flex:1;font-size:12px;padding:4px 6px;border-radius:6px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text)}.nbpanel-list{overflow-y:auto;flex:1;padding:6px;display:flex;flex-direction:column;gap:2px}.nbpanel-empty{color:var(--text-faint);font-size:12px;text-align:center;padding:24px 12px;line-height:1.6}.nbpanel-item{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:8px;cursor:pointer;border:1px solid transparent}.nbpanel-item:hover{background:var(--bg-3)}.nbpanel-item.active{background:var(--bg-3);border-color:var(--accent)}.nbpanel-ico{font-size:15px;flex-shrink:0}.nbpanel-meta{display:flex;flex-direction:column;min-width:0;flex:1}.nbpanel-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nbpanel-sub{font-size:10.5px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nbpanel-del{opacity:0;flex-shrink:0}.nbpanel-item:hover .nbpanel-del{opacity:1}.nbpanel-kebab{opacity:0;flex-shrink:0;font-size:14px;padding:2px 6px}.nbpanel-item:hover .nbpanel-kebab,.nbpanel-folder:hover .nbpanel-kebab{opacity:1}.nbpanel-folder{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.nbpanel-folder:hover{background:var(--bg-3)}.nbpanel-chev{font-size:10px;color:var(--text-faint);transition:transform .12s;flex-shrink:0;width:10px}.nbpanel-chev.open{transform:rotate(90deg)}.nbpanel-fname{font-size:13px;font-weight:600;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nbpanel-fcount{font-size:10.5px;color:var(--text-faint);background:var(--bg-3);border-radius:9px;padding:0 6px}.nbpanel-folder-empty{font-size:11px;color:var(--text-faint);font-style:italic;padding:4px 0}.nb-add-wrap{position:relative}.nb-add-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:50;min-width:168px;background:var(--panel);border:1px solid var(--border-2);border-radius:9px;box-shadow:0 8px 26px #00000052;padding:5px}.nb-add-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;padding:8px 10px;border-radius:6px;color:var(--text);font-size:13px}.nb-add-menu button:hover{background:var(--bg-3)}.ctx-scroll{max-height:240px;overflow-y:auto}.ctx-menu button.danger{color:#ff6b5e}.node{-webkit-user-select:none;user-select:none}.node-row{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:5px;cursor:pointer;white-space:nowrap}.node-row:hover{background:var(--bg-3)}.node-row .chev{width:12px;color:var(--text-faint);font-size:10px;transition:transform .12s}.node-row .chev.open{transform:rotate(90deg)}.node-row .ico{font-size:12px}.node-children{margin-left:14px;border-left:1px solid var(--border);padding-left:4px}.col-row{display:flex;align-items:center;gap:6px;padding:3px 6px 3px 22px;color:var(--text-dim);font-family:var(--mono);font-size:11px}.col-row .ctype{color:var(--text-faint);margin-left:auto}.pk-badge{color:var(--amber);font-size:10px}.editor-wrap{display:flex;flex-direction:column;flex:1;min-height:0}.editor-toolbar{height:44px;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--border);background:var(--bg-2)}.editor-toolbar .meta{color:var(--text-dim);font-size:11px}.monaco-host{flex:1;min-height:120px}.results{height:46%;border-top:1px solid var(--border);display:flex;flex-direction:column;background:var(--bg)}.results-bar{height:34px;display:flex;align-items:center;gap:12px;padding:0 14px;border-bottom:1px solid var(--border);color:var(--text-dim);font-size:11px}.grid-scroll{overflow:auto;flex:1}table.grid{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:12px}table.grid th{position:sticky;top:0;background:var(--bg-3);text-align:left;padding:6px 12px;border-bottom:1px solid var(--border-2);color:var(--text);white-space:nowrap;z-index:1}table.grid td{padding:5px 12px;border-bottom:1px solid var(--border);white-space:nowrap;color:var(--text)}table.grid tr:hover td{background:var(--bg-2)}.rownum{color:var(--text-faint)}.error-box{padding:14px;color:#ff8b80;font-family:var(--mono);font-size:12px;white-space:pre-wrap}.empty{padding:24px;color:var(--text-faint);text-align:center}.chat{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px}.msg{display:flex;flex-direction:column;gap:6px}.msg .who{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);font-weight:700}.bubble{background:var(--bg-3);border:1px solid var(--border);border-radius:9px;padding:10px 12px;line-height:1.5}.bubble.user{background:#14202c;border-color:#1d3346}.bubble pre{margin:8px 0 0;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:9px;overflow-x:auto;font-family:var(--mono);font-size:11.5px;color:#c8e1ff}.bubble .acts{display:flex;gap:6px;margin-top:8px}.chat-input{border-top:1px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--bg-2)}.chat-input textarea{resize:none;height:60px;width:100%}.suggest{display:flex;flex-wrap:wrap;gap:6px;padding:0 10px 10px}.chip{font-size:11px;padding:4px 9px;border-radius:14px;background:var(--bg-3);border:1px solid var(--border);color:var(--text-dim);cursor:pointer}.chip:hover{color:var(--text);border-color:var(--border-2)}.ai-banner{margin:10px;padding:10px 12px;border-radius:8px;background:#2a1d12;border:1px solid #4a3115;color:var(--amber);font-size:11.5px;line-height:1.5}.pipe-view{flex:1;display:flex;min-height:0}.pipe-canvas{flex:1;position:relative}.pipe-side{width:320px;border-left:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column}.pipe-toolbar{height:44px;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--border);background:var(--bg-2)}.field{display:flex;flex-direction:column;gap:5px;padding:12px 14px}.field label{font-size:11px;color:var(--text-dim);font-weight:600}.field textarea{font-family:var(--mono);height:130px;resize:vertical}.run-step{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border);font-size:12px}.badge{font-size:10px;padding:2px 7px;border-radius:10px;font-weight:700;text-transform:uppercase}.badge.success{background:#11321c;color:var(--green)}.badge.error{background:#3a1414;color:#ff6b5e}.badge.skipped{background:#2a2a2a;color:var(--text-faint)}.react-flow__node-dataStep{background:var(--bg-3);border:1px solid var(--border-2);border-radius:9px;padding:10px 14px;color:var(--text);font-size:12px;font-weight:600;min-width:150px;box-shadow:0 4px 14px #0000004d}.react-flow__node-dataStep.selected{border-color:var(--accent)}.react-flow__node-dataStep .sub{font-size:10px;color:var(--text-faint);font-weight:500;margin-top:3px}.spinner{width:13px;height:13px;border:2px solid var(--text-faint);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.muted{color:var(--text-dim)}.body{display:flex;flex:1;min-height:0;min-width:0;overflow:hidden}.navrail{width:224px;background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0}.nav-group{padding:10px 0 4px}.nav-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.9px;color:var(--text-faint);font-weight:700;padding:6px 18px 4px}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 18px;cursor:pointer;color:var(--text-dim);font-weight:500;border-left:2px solid transparent}.nav-item:hover{background:var(--bg-3);color:var(--text)}.nav-item.active{background:var(--bg-3);color:var(--text);border-left-color:var(--accent);font-weight:600}.nav-item .nico{font-size:15px;width:18px;text-align:center}a.nav-item{text-decoration:none;color:var(--text-dim)}a.nav-item:hover,a.nav-item.active{color:var(--text)}.ctx-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.ctx-menu{position:fixed;z-index:201;min-width:200px;padding:5px;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;box-shadow:0 14px 36px #0006;display:flex;flex-direction:column}.ctx-head{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);font-weight:700;padding:6px 10px 4px}.ctx-menu button{background:transparent;border:none;text-align:left;padding:8px 11px;border-radius:6px;font-size:13px;color:var(--text);font-weight:500;display:flex;align-items:center;gap:8px;width:100%}.ctx-menu button:hover{background:var(--bg-3)}.ctx-sep{height:1px;background:var(--border);margin:4px 6px}.nav-badge{margin-left:auto;font-size:9px;background:var(--accent);color:#fff;border-radius:8px;padding:1px 6px;font-weight:700}.page{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.page-head{height:52px;display:flex;align-items:center;gap:12px;padding:0 22px;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.page-head h1{font-size:16px;margin:0;font-weight:700;display:flex;align-items:center;gap:9px}.page-head .sub{color:var(--text-dim);font-size:12px}.page-body{flex:1;overflow:auto;padding:22px}.page-split{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:16px;display:flex;flex-direction:column;gap:10px}.card h3{margin:0;font-size:14px;display:flex;align-items:center;gap:8px}.card .meta-row{display:flex;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--text-dim)}.card .desc{color:var(--text-dim);font-size:12px;line-height:1.5}.card .actions{display:flex;gap:7px;margin-top:auto}.stat{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:16px 18px}.stat .label{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.5px;font-weight:700}.stat .value{font-size:26px;font-weight:700;margin-top:6px}.stat .value small{font-size:13px;color:var(--text-dim);font-weight:500}.bar{height:7px;background:var(--bg-3);border-radius:4px;overflow:hidden;margin-top:10px}.bar>div{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.running,.status-dot.active{background:var(--green);box-shadow:0 0 7px var(--green)}.status-dot.stopped,.status-dot.draft,.status-dot.paused{background:var(--text-faint)}table.list{width:100%;border-collapse:collapse;font-size:12.5px}table.list th{text-align:left;padding:9px 14px;border-bottom:1px solid var(--border-2);color:var(--text-dim);font-weight:600}table.list td{padding:9px 14px;border-bottom:1px solid var(--border)}table.list tr:hover td{background:var(--bg-2)}.toolbar-row{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.empty-state{text-align:center;color:var(--text-faint);padding:50px 20px}.empty-state .big{font-size:34px;margin-bottom:10px}.nb{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0}.nb-toolbar{min-height:46px;display:flex;align-items:center;gap:9px;padding:6px 16px;border-bottom:1px solid var(--border);background:var(--bg-2);flex-shrink:0;flex-wrap:nowrap}.nb-tb-left{display:flex;align-items:center;gap:9px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;padding-bottom:1px}.nb-tb-left::-webkit-scrollbar{height:5px}.nb-tb-right{display:flex;align-items:center;gap:9px;flex-shrink:0;padding-left:6px;border-left:1px solid var(--border)}.nb-toolbar .nb-tb-left button,.nb-toolbar .nb-tb-right button{white-space:nowrap}.nb-scroll{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:14px;min-width:0}.cell{border:1px solid var(--border-2);border-radius:10px;background:var(--panel);overflow:hidden}.cell.focused{border-color:var(--blue)}.cell-bar{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--bg-2);border-bottom:1px solid var(--border)}.lang-toggle{display:flex;border:1px solid var(--border-2);border-radius:6px;overflow:hidden}.lang-toggle button{border:none;border-radius:0;padding:4px 11px;font-size:11px;background:var(--bg-3);color:var(--text-dim)}.lang-toggle button.on{background:var(--accent);color:#fff}.cell-num{color:var(--text-faint);font-family:var(--mono);font-size:11px;min-width:36px}.cell-editor{min-height:30px}.cell-out{border-top:1px solid var(--border)}.cell-out-bar{display:flex;gap:12px;padding:5px 12px;font-size:11px;color:var(--text-faint);background:var(--bg)}.cell-out pre{margin:0;padding:11px 13px;font-family:var(--mono);font-size:12px;white-space:pre-wrap;color:var(--text);overflow-x:auto}.cell-out .error-box{margin:0}.cell-add{display:flex;justify-content:center}.cell-add button{background:transparent;border:1px dashed var(--border-2);color:var(--text-dim)}.cell-add button:hover{border-color:var(--blue);color:var(--text)}.file-path-cell{display:flex;align-items:center;gap:6px;max-width:320px}.file-path{font-family:var(--mono);font-size:11.5px;color:var(--text-dim);background:var(--bg-3);border:1px solid var(--border);border-radius:5px;padding:2px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}.path-copy-btn{flex-shrink:0;padding:3px 7px;font-size:12px;border-radius:5px;background:transparent;border:1px solid transparent;color:var(--text-dim)}.path-copy-btn:hover{background:var(--bg-3);color:var(--text);border-color:var(--border-2)}.file-menu-wrap{position:relative;display:inline-block}.file-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:50;min-width:184px;background:var(--panel);border:1px solid var(--border-2);border-radius:9px;box-shadow:0 8px 26px #00000052;padding:5px;text-align:left}.file-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;padding:8px 10px;border-radius:6px;color:var(--text);font-size:12.5px;font-weight:500}.file-menu button:hover{background:var(--bg-3)}.file-menu button.danger{color:#ff6b5e}.file-menu-sep{height:1px;background:var(--border);margin:4px 2px}.copy-toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:1000;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);padding:9px 16px;border-radius:9px;font-size:13px;font-weight:600;box-shadow:0 6px 20px #0000004d}.serve-filter{width:320px;max-width:100%;height:34px;padding:0 12px;border-radius:8px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);font-size:13px}.serve-link{color:var(--blue);font-weight:600;cursor:pointer}.serve-link:hover{text-decoration:underline}.prov-chip{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text-dim);margin-left:4px}.link-btn{background:transparent;border:none;color:var(--text-dim);font-weight:600;padding:4px 8px}.link-btn:hover{color:var(--text);background:var(--bg-3)}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.metric-card{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:14px 16px}.metric-label{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.5px;font-weight:700}.metric-val{font-size:26px;font-weight:700;margin-top:6px;color:var(--text)}.metric-val small{font-size:13px;color:var(--text-dim);font-weight:500}.serve-split{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.cfg-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px}.cfg-row:last-child{border-bottom:none}.cfg-row>span:first-child{color:var(--text-dim)}@media (max-width: 1100px){.serve-split{grid-template-columns:1fr}}.devops{flex:1;display:flex;min-height:0;min-width:0;overflow:hidden}.do-rail{width:220px;flex-shrink:0;background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:8px 0;overflow-y:auto}.do-proj{display:flex;align-items:center;gap:9px;padding:10px 14px 14px;font-weight:700;font-size:13px}.do-proj-badge{width:28px;height:28px;border-radius:6px;background:linear-gradient(135deg,#6a3fb5,#8a52d6);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800}.do-hub-wrap{position:relative}.do-hub{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;border-left:3px solid transparent;padding:9px 14px;color:var(--text-dim);font-weight:600;font-size:13.5px}.do-hub:hover{background:var(--bg-3);color:var(--text)}.do-hub.active{background:var(--bg-3);color:var(--text);border-left-color:var(--accent)}.do-hub-ico{font-size:15px;width:18px;text-align:center}.do-rail-spacer{flex:1}.do-flyout{position:absolute;left:100%;top:0;z-index:60;min-width:210px;background:var(--panel);border:1px solid var(--border-2);border-radius:9px;box-shadow:0 10px 30px #0006;padding:6px}.do-flyout-head{font-size:12px;font-weight:700;color:var(--text-faint);padding:6px 10px}.do-flyout-item{display:block;width:100%;text-align:left;background:transparent;border:none;padding:7px 10px;border-radius:6px;color:var(--text);font-size:13px}.do-flyout-item:hover{background:var(--bg-3)}.do-content{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.do-breadcrumb{padding:12px 22px 8px;font-size:13px;color:var(--text-dim)}.do-breadcrumb span{margin:0 7px;color:var(--text-faint)}.do-breadcrumb b{color:var(--text)}.do-pivots{display:flex;gap:2px;padding:0 18px;border-bottom:1px solid var(--border);overflow-x:auto;flex-shrink:0}.do-pivot{background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 14px;color:var(--text-dim);font-weight:600;font-size:13px;white-space:nowrap}.do-pivot:hover{color:var(--text)}.do-pivot.active{color:var(--text);border-bottom-color:var(--accent)}.do-view{flex:1;overflow:auto;padding:18px 22px;min-width:0}.do-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px}.do-card{background:var(--panel);border:1px solid var(--border);border-radius:11px}.do-state{font-size:11px;font-weight:700;border:1px solid;border-radius:4px;padding:1px 8px}.do-chip{display:inline-block;font-size:11px;font-weight:700;border:1px solid;border-radius:10px;padding:2px 9px;margin:3px 4px 0 0}.do-summary{display:grid;grid-template-columns:2fr 1fr;gap:18px;align-items:start}.do-card.welcome{padding:40px 24px;text-align:center}.do-welcome-art{font-size:56px}.do-card.welcome h2{margin:10px 0 4px}.do-quick{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px}.do-quick button{background:var(--bg-3);border:1px solid var(--border-2);border-radius:7px;padding:8px 18px;color:var(--text);font-weight:600}.do-quick button:hover{border-color:var(--accent)}.do-card.stats{padding:18px}.do-statgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}.do-stat{background:var(--bg-2);border:1px solid var(--border);border-radius:9px;padding:12px}.do-stat-v{font-size:24px;font-weight:800}.do-stat-l{font-size:11px;color:var(--text-dim)}.do-stat-states{grid-column:1 / -1}.do-kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}.do-col{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;min-height:200px}.do-col-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border);font-weight:700}.do-col-body{padding:10px;display:flex;flex-direction:column;gap:8px}.do-wcard{background:var(--panel);border:1px solid var(--border-2);border-radius:8px;padding:10px;border-left:3px solid var(--accent)}.do-wcard-type{font-size:10.5px;color:var(--text-faint);font-weight:700}.do-wcard-title{font-size:13px;font-weight:600;margin:3px 0 6px}.do-wcard-foot{display:flex;align-items:center;gap:4px;font-size:11px}.do-wcard-foot button{padding:1px 8px;font-size:13px}.do-sprints,.do-envgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.do-sprint-item{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}.do-plan-row{display:flex;align-items:center;gap:12px;padding:8px 0}.do-plan-bar{height:10px;flex:1;border-radius:5px;max-width:50%}.do-bar-row{display:flex;align-items:center;gap:10px;padding:5px 0}.do-bar{height:16px;border-radius:4px;min-width:2px}.do-intgrid{display:flex;flex-wrap:wrap;gap:8px}.af-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px}.af-tab{background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 16px;color:var(--text-dim);font-weight:600;font-size:13px}.af-tab:hover{color:var(--text)}.af-tab.active{color:var(--text);border-bottom-color:var(--accent)}.af-subtabs{display:flex;gap:6px;margin-bottom:12px}.af-subtab{background:var(--bg-3);border:1px solid var(--border-2);border-radius:7px;padding:5px 14px;color:var(--text-dim);font-weight:600;font-size:12px}.af-subtab.active{background:var(--accent);border-color:var(--accent);color:#fff}.af-tag{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:10px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text-dim);margin-right:4px}.af-status{font-size:11px;font-weight:700;border:1px solid;border-radius:10px;padding:1px 9px}.af-toggle{position:relative;display:inline-block;width:34px;height:18px;cursor:pointer}.af-toggle input{opacity:0;width:0;height:0}.af-toggle span{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-3);border:1px solid var(--border-2);border-radius:10px;transition:.15s}.af-toggle span:before{content:"";position:absolute;width:12px;height:12px;left:2px;top:2px;background:var(--text-faint);border-radius:50%;transition:.15s}.af-toggle input:checked+span{background:var(--green);border-color:var(--green)}.af-toggle input:checked+span:before{transform:translate(16px);background:#fff}.af-graph{height:360px;border:1px solid var(--border);border-radius:11px;background:var(--panel);overflow:hidden}.af-node{display:flex;align-items:center;gap:8px;background:var(--bg-2);border:2px solid;border-radius:9px;padding:8px 12px;min-width:130px}.af-node-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.af-node-ico{font-size:15px}.af-node-name{font-size:12.5px;font-weight:700;color:var(--text)}.af-node-op{font-size:10px;color:var(--text-dim)}.af-code,.af-log{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:14px;font-family:var(--mono);font-size:12px;color:var(--text);white-space:pre-wrap;overflow:auto;max-height:56vh}.af-log{max-height:48vh}.af-grid-wrap{overflow-x:auto}.af-grid{border-collapse:collapse;margin-bottom:14px}.af-grid th,.af-grid td{padding:3px 4px}.af-grid-task{text-align:left;font-size:12px;color:var(--text);white-space:nowrap;padding-right:12px!important;min-width:150px}.af-grid th{cursor:pointer}.af-grid th.af-run-sel .af-runhdr{outline:2px solid var(--text)}.af-runhdr{display:inline-block;width:16px;height:16px;border-radius:3px}.af-cell{display:inline-block;width:16px;height:16px;border-radius:3px;cursor:pointer}.af-editor{max-width:780px;width:94%;max-height:88vh;overflow:auto}.af-row3{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;align-items:center}.af-tasks-head{display:flex;align-items:center;justify-content:space-between;margin:14px 0 8px}.af-task-edit{border:1px solid var(--border);border-radius:9px;padding:10px;margin-bottom:8px;background:var(--bg-2)}.af-task-edit input,.af-task-edit select,.af-task-edit textarea{width:100%}.af-task-edit textarea{margin-top:8px;min-height:56px;font-family:var(--mono);font-size:12px}.af-task-edit select[multiple]{height:34px}.af-x{background:transparent;border:1px solid var(--border-2);color:#ff6b5e;border-radius:6px}.dropzone{border:2px dashed var(--border-2);border-radius:12px;padding:34px;text-align:center;color:var(--text-dim);cursor:pointer;background:var(--panel)}.dropzone:hover{border-color:var(--blue);color:var(--text)}.dropzone.drag{border-color:var(--accent);background:var(--bg-3)}.form{max-width:560px;display:flex;flex-direction:column;gap:14px}.form .field{padding:0}.form label{font-size:12px;color:var(--text-dim);font-weight:600;margin-bottom:5px;display:block}.form input,.form textarea,.form select{width:100%}.form textarea{font-family:var(--mono);min-height:80px;resize:vertical}.row-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hint{font-size:11.5px;color:var(--text-faint);line-height:1.5}.ok-text{color:var(--green)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:50}.modal{background:var(--bg-2);border:1px solid var(--border-2);border-radius:14px;padding:22px;width:480px;max-width:92vw;max-height:88vh;overflow:auto}.modal h2{margin:0 0 16px;font-size:16px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.chip-lang{font-size:10px;padding:2px 7px;border-radius:5px;font-weight:700;text-transform:uppercase}.chip-lang.sql{background:#11283a;color:var(--blue)}.chip-lang.python{background:#2a2410;color:var(--amber)}.topbar-btn{background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);padding:6px 11px;border-radius:8px;font-weight:600;font-size:12px}.topbar-btn:hover{background:var(--bg-2)}.assistant-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.genie{width:384px;flex-shrink:0;border-left:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column;min-height:0;position:relative}.genie-resizer{position:absolute;left:-3px;top:0;bottom:0;width:7px;cursor:col-resize;z-index:5}.genie-resizer:after{content:"";position:absolute;left:3px;top:0;bottom:0;width:1px;background:transparent;transition:background .12s}.genie-resizer:hover:after,.genie-resizer.dragging:after{background:var(--accent);width:2px;left:2px}.genie-collapsed{width:40px;flex-shrink:0;border-left:1px solid var(--border);background:var(--bg-2);display:flex;flex-direction:column;align-items:center;gap:14px;padding-top:12px;cursor:pointer}.genie-collapsed:hover{background:var(--bg-3)}.genie-collapsed .gc-spark{font-size:18px}.genie-collapsed .gc-label{writing-mode:vertical-rl;text-orientation:mixed;color:var(--text-dim);font-weight:700;font-size:12px;letter-spacing:.5px;margin-top:4px}.genie-head{height:44px;display:flex;align-items:center;gap:6px;padding:0 8px 0 14px;border-bottom:1px solid var(--border);background:var(--bg-2)}.genie-title{font-weight:700}.icon-btn{background:transparent;border:none;color:var(--text-dim);padding:5px 8px;font-size:13px;border-radius:6px}.icon-btn:hover{background:var(--bg-3);color:var(--text)}.genie-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px}.genie-empty{text-align:center;padding:22px 6px}.genie-logo{width:54px;height:54px;margin:8px auto 14px;border-radius:15px;background:linear-gradient(135deg,var(--accent),#a855f7);display:grid;place-items:center;font-size:26px;color:#fff;box-shadow:0 6px 18px #a855f74d}.genie-empty h3{margin:0 0 8px;font-size:17px}.genie-suggest{display:flex;flex-direction:column;gap:8px;margin-top:18px}.genie-suggest .chip{text-align:left;padding:9px 12px;border-radius:9px}.gmsg{display:flex;flex-direction:column;gap:5px}.gmsg.user{align-items:flex-end}.gwho{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:700}.gbubble{background:var(--bg-3);border:1px solid var(--border);border-radius:10px;padding:10px 12px;line-height:1.55;max-width:92%}.gmsg.user .gbubble{background:var(--accent);border-color:var(--accent);color:#fff}.gbubble pre{margin:8px 0 0;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:9px;overflow-x:auto;font-family:var(--mono);font-size:11.5px;color:var(--blue)}.gmsg.user .gbubble pre{background:#0000002e;border-color:#ffffff40;color:#fff}.genie-input-wrap{border-top:1px solid var(--border);background:var(--bg-2)}.genie-input{padding:10px 10px 4px;display:flex;gap:8px;align-items:flex-end}.genie-input textarea{flex:1;resize:none;height:54px}.genie-send{padding:0 14px;height:36px;font-size:14px;flex-shrink:0}.genie-input-hint{font-size:10.5px;color:var(--text-faint);padding:0 12px 8px}.attach-wrap{position:relative;flex-shrink:0}.attach-btn{width:36px;height:36px;border-radius:8px;font-size:18px;line-height:1;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text-dim)}.attach-btn:hover{color:var(--text);border-color:var(--accent)}.attach-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:60;width:280px;background:var(--panel);border:1px solid var(--border-2);border-radius:10px;box-shadow:0 10px 30px #00000061;padding:6px}.attach-menu-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);padding:6px 8px}.attach-menu-sub{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);padding:6px 8px 4px}.attach-menu-sep{height:1px;background:var(--border);margin:4px 2px}.attach-menu-list{max-height:220px;overflow-y:auto}.attach-menu-empty{font-size:12px;color:var(--text-dim);padding:8px}.attach-menu-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;background:transparent;border:none;padding:8px 10px;border-radius:7px;color:var(--text);font-size:12.5px;font-weight:500;white-space:nowrap;overflow:hidden}.attach-menu-item>span:first-child{overflow:hidden;text-overflow:ellipsis}.attach-menu-item:hover:not(:disabled){background:var(--bg-3)}.attach-menu-item:disabled{color:var(--text-faint);cursor:default}.attach-added{color:var(--green);flex-shrink:0}.attach-chips{display:flex;flex-wrap:wrap;gap:6px;padding:10px 10px 0}.attach-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;background:var(--bg-3);border:1px solid var(--border-2);border-radius:16px;padding:3px 4px 3px 9px;font-size:12px}.attach-ico{flex-shrink:0}.attach-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-eye,.attach-x{flex-shrink:0;width:20px;height:20px;border-radius:50%;padding:0;font-size:12px;background:transparent;border:none;color:var(--text-dim);display:grid;place-items:center}.attach-eye:hover,.attach-x:hover{background:var(--bg);color:var(--text)}.attach-x{font-size:15px}.turn-files{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:7px}.turn-file{font-size:11px;background:#ffffff1f;border-radius:12px;padding:2px 9px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gmsg.assistant .turn-file{background:var(--bg);border:1px solid var(--border)}.file-preview-modal{max-width:640px;width:90%}.file-preview-text{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;max-height:50vh;overflow:auto;font-family:var(--mono);font-size:11.5px;white-space:pre-wrap;color:var(--text);margin:0}.prov-tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin-bottom:20px;flex-wrap:wrap}.prov-tab{display:flex;align-items:center;gap:8px;padding:9px 16px;border:none;border-radius:0;background:transparent;color:var(--text-dim);font-weight:600;font-size:13px;border-bottom:2px solid transparent;margin-bottom:-1px}.prov-tab:hover{background:var(--bg-3);color:var(--text)}.prov-tab.active{color:var(--text);border-bottom-color:var(--accent)}.prov-active-pill{font-size:9px;font-weight:700;letter-spacing:.5px;color:var(--green);border:1px solid var(--green);border-radius:8px;padding:1px 6px}.model-picker{display:flex;align-items:center;gap:6px}.model-picker .mp-label{font-size:11px;color:var(--text-faint);font-weight:700;text-transform:uppercase;letter-spacing:.4px}.model-picker select{font-size:12px;font-weight:600;padding:4px 8px;border-radius:6px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);max-width:168px}.model-picker select:disabled{opacity:.55}.model-picker .mp-warn{color:var(--amber);font-size:11px}.theme-cards{display:flex;gap:20px;flex-wrap:wrap}.theme-card{width:270px;border:2px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer;background:var(--bg-2);transition:border-color .12s,transform .12s}.theme-card:hover{border-color:var(--border-2);transform:translateY(-2px)}.theme-card.active{border-color:var(--accent)}.theme-preview{height:140px}.theme-preview.dark{background:#0e1116}.theme-preview.light{background:#f5f7fa}.theme-preview .tp-top{height:18px}.theme-preview.dark .tp-top{background:#151a21}.theme-preview.light .tp-top{background:#fff;border-bottom:1px solid #e3e8ef}.tp-row{display:flex;height:122px}.tp-side{width:58px}.theme-preview.dark .tp-side{background:#11161d}.theme-preview.light .tp-side{background:#eef1f6}.tp-main{flex:1;padding:12px;display:flex;flex-direction:column;gap:8px}.tp-line{height:8px;border-radius:4px;width:78%}.tp-line.short{width:48%}.theme-preview.dark .tp-line{background:#2a323d}.theme-preview.light .tp-line{background:#dde3ea}.tp-block{margin-top:6px;height:40px;border-radius:6px}.theme-preview.dark .tp-block{background:#1b222b;border:1px solid #2a323d}.theme-preview.light .tp-block{background:#fff;border:1px solid #e3e8ef}.theme-card-foot{display:flex;gap:11px;align-items:center;padding:13px 15px}.radio{width:16px;height:16px;border-radius:50%;border:2px solid var(--border-2);flex-shrink:0}.radio.on{border-color:var(--accent);background:radial-gradient(circle,var(--accent) 0 4px,transparent 5px)}.theme-card-label{font-weight:700}.theme-card-desc{font-size:11px;margin-top:2px}:root[data-theme=light]{--bg: #f5f7fa;--bg-2: #ffffff;--bg-3: #eef1f6;--panel: #ffffff;--border: #e3e8ef;--border-2: #d4dbe4;--text: #16202b;--text-dim: #586675;--text-faint: #8a96a6;--blue: #1a66d6;--green: #1aa260;--amber: #b8730a}:root[data-theme=light] button:hover{background:#e7ebf1}:root[data-theme=light] .bubble.user{background:#eef5ff;border-color:#cfe0f5}:root[data-theme=light] .bubble pre{color:#0b3d91}:root[data-theme=light] .ai-banner{background:#fff6e6;border-color:#f0d9a8;color:#8a5a00}:root[data-theme=light] .chip-lang.sql{background:#e4eefb}:root[data-theme=light] .chip-lang.python{background:#fbf2db}:root[data-theme=light] .badge.success{background:#e3f6ea}:root[data-theme=light] .badge.error{background:#fbe5e3}:root[data-theme=light] .badge.skipped{background:#eceff3;color:var(--text-dim)}:root[data-theme=light] .modal-back{background:#141c2659}:root[data-theme=light] .gmsg.user .gbubble pre{color:#fff}:root[data-theme=light] .md-rendered code{background:#eef1f6}:root[data-theme=light] .md-rendered pre{background:#f5f7fa}.cell-lang{font-size:11px;font-weight:700;padding:4px 8px;border-radius:6px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text)}.cell-ico{background:transparent;border:1px solid transparent;color:var(--text-dim);padding:4px 7px;font-size:12px;border-radius:6px}.cell-ico:hover{background:var(--bg-3);color:var(--text);border-color:var(--border)}.insert-bar{display:flex;align-items:center;justify-content:center;gap:8px;height:14px;opacity:0;transition:opacity .12s;margin:2px 0}.insert-bar:hover{opacity:1;height:auto;padding:4px 0}.insert-line{flex:1;height:1px;background:var(--border-2);max-width:38%}.insert-bar button{font-size:11px;padding:3px 10px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border-2);color:var(--blue);font-weight:600}.insert-bar button:hover{background:var(--bg-3)}.md-rendered{padding:6px 16px 14px;line-height:1.6;cursor:text}.md-rendered h1{font-size:22px;margin:14px 0 8px}.md-rendered h2{font-size:18px;margin:12px 0 7px}.md-rendered h3{font-size:15px;margin:10px 0 6px}.md-rendered p{margin:6px 0}.md-rendered ul,.md-rendered ol{margin:6px 0;padding-left:22px}.md-rendered li{margin:3px 0}.md-rendered code{background:var(--bg-3);padding:1px 5px;border-radius:4px;font-family:var(--mono);font-size:12px}.md-rendered pre{background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:10px;overflow-x:auto}.md-rendered pre code{background:transparent;padding:0}.md-rendered a{color:var(--blue)}.cell-ai-ico{color:var(--accent)}.cell-ai-ico.on{background:var(--bg-3);border-color:var(--accent)}.cell-ai{border-bottom:1px solid var(--border);background:linear-gradient(var(--bg-2),var(--bg-2)) padding-box;padding:9px 10px}.cell-ai-row{display:flex;align-items:center;gap:8px}.cell-ai-spark{font-size:14px}.cell-ai-input{flex:1;height:32px;padding:0 10px;border-radius:8px;background:var(--bg);border:1px solid var(--border-2);color:var(--text);font-size:13px}.cell-ai-input:focus{outline:none;border-color:var(--accent)}.cell-ai-row .primary{height:32px;padding:0 14px;font-size:12px}.cell-ai-error{margin-top:8px;color:var(--amber);font-size:12px}.cell-ai-draft{margin-top:9px;border:1px solid var(--accent);border-radius:8px;overflow:hidden}.cell-ai-draft-head{font-size:10px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;color:var(--accent);padding:6px 10px;background:var(--bg-3)}.cell-ai-draft pre{margin:0;padding:10px;background:var(--bg);overflow-x:auto;font-family:var(--mono);font-size:12px;white-space:pre-wrap;color:var(--text)}.cell-ai-actions{display:flex;gap:6px;padding:7px 10px;background:var(--bg-2);border-top:1px solid var(--border)}.cell-ai-actions button{font-size:12px;padding:5px 12px}.code-block{margin:8px 0 0}.code-block pre{margin:0;background:var(--bg);border:1px solid var(--border);border-radius:7px 7px 0 0;padding:9px;overflow-x:auto;font-family:var(--mono);font-size:11.5px;color:var(--blue)}.gmsg.user .code-block pre{color:#fff}.code-actions{display:flex;gap:6px;padding:6px;background:var(--bg-2);border:1px solid var(--border);border-top:none;border-radius:0 0 7px 7px}.code-actions button{font-size:11px;padding:4px 9px}.fix-btn{font-size:11px;padding:3px 11px;border-radius:6px;font-weight:600;background:linear-gradient(135deg,var(--accent),#a855f7);border:none;color:#fff}.fix-btn:hover{filter:brightness(1.08)}.nav-collapse{display:flex;justify-content:flex-end;padding:6px 8px 2px}.nav-home-wrap{padding:2px 12px 10px}.nav-home{border-radius:8px;padding:9px 12px;justify-content:center;background:var(--accent);color:#fff;font-weight:700;border-left:none;text-decoration:none}.nav-home:hover{background:var(--accent-2);color:#fff}.nav-home.active{background:var(--accent);color:#fff;border-left:none}.navrail.collapsed .nav-home-wrap{padding:2px 8px 10px}.navrail.collapsed .nav-home{padding:9px 0}.home-page{align-items:center;justify-content:center;overflow:auto}.home-inner{max-width:1000px;width:100%;margin:auto;padding:36px 24px 48px;text-align:center;display:flex;flex-direction:column;align-items:center}.home-logo{max-width:420px;width:70%;height:auto;border-radius:16px;box-shadow:0 10px 40px #00000059;border:1px solid var(--border)}.home-tagline{color:var(--text-dim);font-size:15px;line-height:1.6;margin:24px 0 6px;max-width:540px}.home-section{width:100%;margin-top:22px}.home-section-title{font-size:11px;text-transform:uppercase;letter-spacing:.9px;color:var(--text-faint);font-weight:700;text-align:left;margin:0 0 10px 2px}.home-quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;width:100%}.home-card{display:flex;flex-direction:row;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;background:var(--panel);border:1px solid var(--border);cursor:pointer;text-align:left;transition:border-color .12s,transform .12s,background .12s}.home-card:hover{border-color:var(--accent);transform:translateY(-2px);background:var(--bg-3)}.home-card-ico{font-size:22px;width:40px;height:40px;flex-shrink:0;display:grid;place-items:center;background:var(--bg-3);border-radius:10px}.home-card:hover .home-card-ico{background:var(--bg-2)}.home-card-body{display:flex;flex-direction:column;gap:3px;min-width:0}.home-card-label{font-weight:700;font-size:13.5px;color:var(--text)}.home-card-desc{font-size:11.5px;color:var(--text-dim);line-height:1.4}.navrail.collapsed{width:56px}.navrail.collapsed .nav-collapse{justify-content:center}.navrail.collapsed .nav-group{padding:0}.navrail.collapsed .nav-item{justify-content:center;padding:9px 0;gap:0}.navrail.collapsed .nav-group+.nav-group{border-top:1px solid var(--border)}.catalog-collapsed{width:42px;height:100%;display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:10px;background:var(--panel);border-right:1px solid var(--border)}.cat-kind{font-size:9px;color:var(--text-faint);margin-left:auto;text-transform:uppercase;letter-spacing:.4px}.node-row.sel{background:var(--bg-3)}.nb-open-wrap{position:relative}.dropdown-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.nb-open-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:260px;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;box-shadow:0 10px 30px #00000059;padding:6px;max-height:360px;overflow-y:auto}.nb-open-head{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);font-weight:700;padding:6px 8px}.nb-open-empty{padding:10px 8px;color:var(--text-dim);font-size:12px}.nb-open-item{display:flex;align-items:center;gap:4px;border-radius:7px;padding:2px}.nb-open-item:hover,.nb-open-item.active{background:var(--bg-3)}.nb-open-name{flex:1;padding:7px 8px;cursor:pointer;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.delta-badge{font-size:10px;font-weight:800;color:#fff;letter-spacing:.3px;background:linear-gradient(135deg,#00b4d8,#0077b6);border-radius:4px;padding:0 5px;margin-left:5px;flex-shrink:0}.hist-btn{background:transparent;border:none;color:var(--text-dim);padding:1px 5px;font-size:11px;border-radius:5px;flex-shrink:0}.hist-btn:hover{background:var(--bg-2);color:var(--text)}.op-badge{font-size:10px;font-weight:700;padding:1px 8px;border-radius:10px;background:var(--bg-3);border:1px solid var(--border)}.delta-kind{font-size:10px;font-weight:600;margin-left:9px;padding:2px 9px;border-radius:10px;background:var(--bg-3);border:1px solid var(--border);color:var(--text-dim);vertical-align:middle}.delta-kind.real{background:linear-gradient(135deg,#00b4d8,#0077b6);color:#fff;border:none}.tt-active td{background:var(--bg-3)!important}.tt-preview{margin-top:14px;border:1px solid var(--border-2);border-radius:8px;overflow:hidden}.tt-preview-bar{display:flex;align-items:center;gap:8px;padding:7px 11px;background:var(--bg-3);font-size:12px;font-weight:600}.datagrid{display:flex;flex-direction:column}.datagrid.fill{flex:1;min-height:0}.datagrid-bar{display:flex;align-items:center;gap:10px;padding:5px 10px;border-bottom:1px solid var(--border);background:var(--bg-2);font-size:11px}.datagrid-filter{font-size:12px;padding:4px 9px;width:210px;border-radius:6px}.grid th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.grid th.sortable:hover{background:var(--border-2)}.grid th.num,.grid td.num{text-align:right;font-variant-numeric:tabular-nums}button.ghost{background:transparent;border:1px solid transparent;color:var(--text-dim)}button.ghost:hover{background:var(--bg-3);color:var(--text)}button.sm,.sm{font-size:11px;padding:3px 9px}.modal.wide{width:980px}.dash-card{cursor:pointer;transition:border-color .12s,transform .08s}.dash-card:hover{border-color:var(--border-2);transform:translateY(-1px)}.dash-editor{background:var(--bg)}.dash-toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--bg-2);flex-shrink:0}.dash-toolbar button{font-size:12px;padding:5px 10px;white-space:nowrap}.dash-name-input{font-size:15px;font-weight:700;background:transparent;border:1px solid transparent;color:var(--text);padding:4px 8px;border-radius:6px;min-width:220px}.dash-name-input:hover{background:var(--bg-3)}.dash-name-input:focus{background:var(--bg-3);border-color:var(--blue)}.dirty-dot{color:var(--amber);font-size:18px;line-height:1}.dash-params{display:flex;align-items:flex-end;gap:14px;padding:9px 16px;border-bottom:1px solid var(--border);background:var(--panel);flex-wrap:wrap;flex-shrink:0}.dp-lead{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);align-self:center}.dp-field{display:flex;flex-direction:column;gap:3px}.dp-field>span{font-size:10px;color:var(--text-dim);font-weight:600}.dp-field input,.dp-field select{font-size:12px;padding:4px 8px;min-width:130px}.dash-pages{display:flex;align-items:center;gap:4px;padding:6px 14px 0;border-bottom:1px solid var(--border);background:var(--bg-2);flex-shrink:0;overflow-x:auto}.dpt{display:flex;align-items:center;gap:4px;padding:6px 6px 6px 12px;border:1px solid var(--border);border-bottom:none;border-radius:8px 8px 0 0;background:var(--panel);color:var(--text-dim);cursor:pointer;font-size:12px;white-space:nowrap}.dpt.active{background:var(--bg);color:var(--text);border-color:var(--border-2);position:relative;top:1px}.dpt span{padding:0 4px}.dpt-name{background:transparent;border:none;color:inherit;font-size:12px;width:84px;padding:0 2px}.dpt-name:focus{background:var(--bg-3);border-radius:4px}.dpt-x{background:transparent;border:none;color:var(--text-faint);padding:0 4px;font-size:13px;line-height:1}.dpt-x:hover{color:var(--accent)}.dpt-add{background:transparent;border:1px dashed var(--border-2);color:var(--text-dim);border-radius:8px;padding:5px 11px;font-size:12px;margin-left:4px}.dpt-add:hover{border-color:var(--blue);color:var(--text)}.dash-canvas{flex:1;overflow:auto;padding:16px}.dash-empty{text-align:center;color:var(--text-faint);padding:70px 20px}.dash-empty .big{font-size:40px;margin-bottom:6px}.dash-empty-actions{display:flex;gap:10px;justify-content:center;margin-top:14px}.wg-grid{display:grid;gap:12px;position:relative}.wg-cell{background:var(--panel);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;overflow:hidden;position:relative;min-height:0}.wg-cell:hover{border-color:var(--border-2)}.wg-head{display:flex;align-items:center;gap:7px;padding:7px 10px;border-bottom:1px solid var(--border);background:var(--bg-2);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0}.wg-grid:not(.present) .wg-head:active{cursor:grabbing}.wg-icon{font-size:13px}.wg-title{font-size:12.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wg-tools{display:flex;gap:1px;opacity:0;transition:opacity .12s}.wg-cell:hover .wg-tools{opacity:1}.wg-tools button{background:transparent;border:none;color:var(--text-dim);padding:2px 5px;font-size:12px;border-radius:5px}.wg-tools button:hover{background:var(--bg-3);color:var(--text)}.wg-body{flex:1;min-height:0;overflow:auto;padding:8px;display:flex;flex-direction:column}.wg-resize{position:absolute;right:2px;bottom:2px;width:16px;height:16px;cursor:nwse-resize;color:var(--text-faint);font-size:11px;display:grid;place-items:center}.wg-resize:hover{color:var(--blue)}.wv-state{color:var(--text-faint);font-size:12px;padding:20px;text-align:center;margin:auto}.wv-state.err{color:var(--amber)}.wv-text{font-size:13px;line-height:1.55;color:var(--text);padding:4px}.wv-text h1,.wv-text h2,.wv-text h3{margin:0 0 8px}.wv-svg{width:100%;height:100%;max-height:100%;display:block}.wv-cart,.wv-flex{display:flex;flex:1;min-height:0;width:100%}.wv-cart{flex-direction:column}.wv-flex{gap:12px;align-items:center}.wv-flex .wv-svg{max-width:58%}.wv-kpi{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:4px;text-align:center}.kpi-value{font-size:38px;font-weight:800;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}.kpi-label{font-size:12px;color:var(--text-dim);font-weight:600}.kpi-sub{font-size:11px;color:var(--text-faint)}.wv-legend{display:flex;flex-direction:column;gap:4px;font-size:11px;max-height:100%;overflow:auto}.wv-legend.row{flex-direction:row;flex-wrap:wrap;gap:4px 14px;justify-content:center;padding-top:6px}.lg-row{display:flex;align-items:center;gap:6px}.lg-sw{width:10px;height:10px;border-radius:3px;flex-shrink:0}.lg-name{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}.lg-val{color:var(--text);font-weight:600;margin-left:auto;font-variant-numeric:tabular-nums}.wv-donut-c{font-size:22px;font-weight:800;fill:var(--text)}.wv-funnel{display:flex;flex-direction:column;gap:6px;flex:1;justify-content:center;padding:4px}.fn-row{display:flex;align-items:center;gap:8px}.fn-label{width:90px;font-size:11px;color:var(--text-dim);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fn-track{flex:1;display:flex}.fn-bar{height:100%;min-height:22px;border-radius:4px;display:flex;align-items:center;padding:0 8px;color:#fff;font-size:11px;font-weight:700;white-space:nowrap}.wv-scroll{overflow:auto;flex:1;width:100%}.wv-heat,.wv-pivot{border-collapse:collapse;font-size:11px;width:100%}.wv-heat th,.wv-pivot th{background:var(--bg-2);color:var(--text-dim);padding:5px 9px;text-align:left;position:sticky;top:0;font-weight:600}.wv-heat td{text-align:center;padding:4px 8px;color:#0b0f14;font-weight:600;font-variant-numeric:tabular-nums}.wv-pivot td{padding:5px 10px;text-align:right;color:var(--text);border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}.wv-pivot th[scope],.wv-pivot tbody th{text-align:left;color:var(--text-dim)}.pv-total{font-weight:700;color:var(--text)}.pv-foot th,.pv-foot td{background:var(--bg-2);font-weight:700;color:var(--text);border-top:2px solid var(--border-2)}.wv-map{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}.wv-map-note{font-size:11px;color:var(--text-faint);text-align:center}.wv-map-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:7px;overflow:auto}.map-cell{border-radius:8px;padding:11px 9px;display:flex;flex-direction:column;gap:3px;border:1px solid var(--border)}.map-name{font-size:11px;color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-val{font-size:14px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.wv-grid{stroke:var(--border);stroke-width:1}.wv-axis{stroke:var(--border-2);stroke-width:1}.wv-tick{fill:var(--text-faint);font-size:10px}.widget-editor{padding:0}.we-cols{display:grid;grid-template-columns:380px 1fr;min-height:460px}.we-config{border-right:1px solid var(--border);padding:18px;overflow:auto;max-height:74vh}.we-config h2{margin:0 0 12px;font-size:15px}.we-config .field{padding:8px 0}.we-sql{font-family:var(--mono);font-size:11.5px;height:auto}.viz-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.viz-opt{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 3px;background:var(--bg-3);border:1px solid var(--border);border-radius:7px;color:var(--text-dim);cursor:pointer}.viz-opt span{font-size:15px}.viz-opt small{font-size:8.5px;text-align:center;line-height:1.1}.viz-opt.on{border-color:var(--accent);color:var(--text);background:var(--bg-2)}.chip-pick{display:flex;flex-wrap:wrap;gap:5px}.chip-pick .chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.we-preview{display:flex;flex-direction:column;min-width:0;background:var(--bg)}.we-prev-head{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border);font-size:12px;font-weight:600}.we-prev-body{flex:1;min-height:0;padding:14px;display:flex;flex-direction:column;overflow:auto}.we-state.err{color:var(--amber);font-size:12px}.inline-add{display:flex;gap:6px}.inline-add input{flex:1}.share-list{display:flex;flex-direction:column;gap:5px;padding:4px 14px}.share-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;background:var(--bg-3);border-radius:6px;padding:6px 10px}.share-row button{background:transparent;border:none;color:var(--text-faint);font-size:14px}.share-row button:hover{color:var(--accent)}.hist-list{display:flex;flex-direction:column;gap:2px;max-height:50vh;overflow:auto}.hist-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:7px;font-size:12px}.hist-row:hover{background:var(--bg-3)}.hist-row.current{color:var(--green);font-weight:600}.hist-row>span:first-child{flex:1}.genie-samples{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.dash-editor.presenting .dash-canvas{background:var(--bg)}.wg-grid.present .wg-resize{display:none}.grid .sort-ind{color:var(--accent);font-size:10px}.status-dot.deploying{background:var(--amber);box-shadow:0 0 7px var(--amber);animation:pulse 1.4s infinite}.status-dot.failed{background:#ff5e54;box-shadow:0 0 7px #ff5e54}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.badge.running{background:#11321c;color:var(--green)}.badge.deploying{background:#2e2410;color:var(--amber)}.badge.failed,.badge.stopped{background:#3a1414;color:#ff6b5e}.badge.draft{background:#2a2a2a;color:var(--text-faint)}.app-card{cursor:pointer;transition:border-color .12s,transform .08s}.app-card:hover{border-color:var(--border-2);transform:translateY(-1px)}.app-url{font-size:11px;color:var(--blue);font-family:var(--mono);text-decoration:none;word-break:break-all}.app-url:hover{text-decoration:underline}.app-url.big{font-size:12.5px;flex:1}.app-tabs{display:flex;gap:4px;padding:8px 22px 0;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.app-tab{background:transparent;border:1px solid transparent;border-bottom:none;color:var(--text-dim);padding:7px 14px;border-radius:8px 8px 0 0;font-size:12.5px}.app-tab:hover{color:var(--text);background:var(--bg-3)}.app-tab.active{background:var(--panel);color:var(--text);border-color:var(--border-2);position:relative;top:1px;font-weight:600}.app-overview{display:flex;flex-direction:column;gap:18px}.ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.ov-card{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:14px 16px}.ov-k{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:700}.ov-v{font-size:15px;margin-top:6px;display:flex;align-items:center;gap:7px}.ov-sub{font-size:11px;color:var(--text-dim);margin-top:6px}.panel-block{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.panel-block h3{font-size:13px;margin:0 0 12px;display:flex;align-items:center;gap:10px}.url-row{display:flex;align-items:center;gap:10px}.url-row .app-url{background:var(--bg);border:1px solid var(--border-2);border-radius:7px;padding:8px 11px}.auto-label{margin-left:auto;font-size:11px;color:var(--text-dim);font-weight:500;display:flex;align-items:center;gap:5px}.log-view{background:#0a0d11;border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-family:var(--mono);font-size:11.5px;line-height:1.7;max-height:460px;overflow:auto}.log-line{color:#b6c2d0;white-space:pre-wrap;word-break:break-all}.log-line:hover{background:#ffffff08}.big-metric{display:flex;flex-direction:column;gap:8px}.metric-big{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums}.gauge{height:8px;background:var(--bg-3);border-radius:5px;overflow:hidden}.gauge-fill{height:100%;background:linear-gradient(90deg,#2272b4,var(--blue));border-radius:5px;transition:width .4s}.gauge-fill.mem{background:linear-gradient(90deg,#1ca39d,var(--green))}.spark{display:flex;align-items:flex-end;gap:5px;height:110px;padding:8px;background:var(--bg);border:1px solid var(--border);border-radius:8px}.spark-bar{flex:1;background:linear-gradient(180deg,var(--blue),#2272b4);border-radius:3px 3px 0 0;min-height:3px;transition:height .4s}.form2{display:flex;flex-direction:column;gap:12px}.form2 label,.res-row label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-dim);font-weight:600}.form2 input,.form2 textarea,.form2 select{font-size:13px}.form2 textarea{min-height:60px;resize:vertical}.form2 textarea.mono{font-family:var(--mono);font-size:12px}.res-row{display:flex;gap:20px}.res-row select{min-width:110px}.env-list{display:flex;flex-direction:column;gap:7px}.env-row{display:flex;gap:8px}.env-row input:first-child{width:220px;font-family:var(--mono)}.env-row input:nth-child(2){flex:1;font-family:var(--mono)}.env-row button{background:transparent;border:1px solid var(--border-2);color:var(--text-faint);width:30px}.env-row button:hover{color:var(--accent);border-color:var(--accent)}.settings-foot{display:flex;align-items:center;gap:14px}.jp-subtabs{display:flex;gap:4px;padding:8px 22px 0;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.jp-subtab{background:transparent;border:1px solid transparent;border-bottom:none;color:var(--text-dim);padding:7px 16px;border-radius:8px 8px 0 0;font-size:13px}.jp-subtab:hover{color:var(--text);background:var(--bg-3)}.jp-subtab.active{background:var(--panel);color:var(--text);border-color:var(--border-2);position:relative;top:1px;font-weight:600}.create-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:18px}.create-tile{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:11px;text-align:left;color:var(--text);cursor:pointer}.create-tile:hover{border-color:var(--accent)}.ct-ico{font-size:22px;width:38px;height:38px;display:grid;place-items:center;background:var(--bg-3);border-radius:9px}.ct-label{font-weight:700;font-size:13px}.ct-desc{font-size:11px;color:var(--text-dim);margin-top:2px}.jp-filters{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.jp-filters.wrap{gap:14px}.jp-search{width:220px;font-size:12.5px;padding:6px 10px}.seg{display:inline-flex;background:var(--bg-3);border:1px solid var(--border-2);border-radius:8px;overflow:hidden}.seg-btn{background:transparent;border:none;border-right:1px solid var(--border);color:var(--text-dim);padding:6px 11px;font-size:12px;border-radius:0}.seg-btn:last-child{border-right:none}.seg-btn.on{background:var(--accent);color:#fff}.jp-flt{font-size:12px;padding:6px 9px;min-width:96px}.flt-field{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--text-dim);font-weight:600}.flt-field input,.flt-field select{font-size:12px;padding:5px 8px}.jp-list .jp-row{cursor:pointer}.jp-list .jp-row:hover{background:var(--bg-3)}.fav{color:var(--text-faint)}.fav.on{color:var(--amber)}.jp-link{color:var(--blue);cursor:pointer;font-weight:600}.jp-link:hover{text-decoration:underline}.dropdown{position:relative;display:inline-block}.dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:30;background:var(--bg-2);border:1px solid var(--border-2);border-radius:10px;box-shadow:0 10px 30px #0006;min-width:240px;padding:5px}.dropdown-menu.right{right:0;left:auto}.dropdown-menu button{display:flex;gap:10px;align-items:flex-start;width:100%;background:transparent;border:none;color:var(--text);padding:9px 11px;border-radius:7px;text-align:left;font-size:12.5px}.dropdown-menu button:hover{background:var(--bg-3)}.dd-ico{font-size:15px}.dd-desc{font-size:10.5px;color:var(--text-faint);margin-top:2px}.jp-detail{display:flex;flex-direction:column}.jp-detail-head{height:52px;display:flex;align-items:center;gap:10px;padding:0 18px;border-bottom:1px solid var(--border);background:var(--bg-2);flex-shrink:0}.jp-detail-name{font-size:15px;font-weight:700}.kebab-wrap{position:relative}.kebab-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:30;background:var(--bg-2);border:1px solid var(--border-2);border-radius:9px;padding:5px;min-width:150px;box-shadow:0 10px 30px #0006}.kebab-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--text);padding:8px 10px;border-radius:6px;font-size:12.5px}.kebab-menu button:hover{background:var(--bg-3)}.kebab-menu button.danger{color:#ff6b5e}.jp-tabs{display:flex;gap:4px;padding:8px 18px 0;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.jp-tab{background:transparent;border:1px solid transparent;border-bottom:none;color:var(--text-dim);padding:7px 16px;border-radius:8px 8px 0 0;font-size:13px}.jp-tab:hover{color:var(--text);background:var(--bg-3)}.jp-tab.active{background:var(--panel);color:var(--text);border-color:var(--border-2);position:relative;top:1px;font-weight:600}.jp-tasks{flex:1;display:flex;min-height:0}.jp-canvas-col{flex:1;display:flex;flex-direction:column;min-width:0}.jp-canvas-toolbar{display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--bg-2)}.jp-canvas{flex:1;min-height:0;position:relative}.jp-empty-canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-faint)}.jp-empty-canvas .big{font-size:40px}.tc-node{background:var(--bg-3);border:1px solid var(--border-2);border-radius:10px;padding:9px 12px;min-width:150px;color:var(--text)}.tc-node.selected{border-color:var(--accent);box-shadow:0 0 0 2px #ff362140}.tc-node.st-success{border-left:3px solid var(--green)}.tc-node.st-error{border-left:3px solid #ff6b5e}.tc-node.st-skipped{border-left:3px solid var(--text-faint)}.tc-node.st-running{border-left:3px solid var(--amber)}.tc-node-row{display:flex;align-items:center;gap:8px;font-weight:600;font-size:12.5px}.tc-ico{font-size:14px}.tc-sub{font-size:10px;color:var(--text-faint);margin-top:3px}.jp-side{width:340px;border-left:1px solid var(--border);background:var(--panel);display:flex;flex-direction:column;flex-shrink:0}.jp-side-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--border);font-weight:700;font-size:13px}.jp-side-body{flex:1;overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.jp-side-body .field{padding:6px 0}.jp-side-body textarea.mono,.jp-side-body input.mono{font-family:var(--mono);font-size:11.5px}.kv{display:flex;justify-content:space-between;gap:10px;padding:5px 0;font-size:12px;border-bottom:1px solid var(--border)}.kv>span:first-child{color:var(--text-dim)}.kv.sub{padding-left:8px;font-size:11.5px;border-bottom:none}.kv code{font-family:var(--mono);font-size:11px;color:var(--blue)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;font-size:12px;color:var(--text-dim)}.toggle-row.sm{padding:0;gap:5px}.jp-sep{height:1px;background:var(--border-2);margin:10px 0}.jp-side-sub{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-faint);margin:4px 0}.param-row{display:flex;gap:6px;margin:4px 0}.param-row input:first-child{width:130px;font-family:var(--mono)}.param-row input:nth-child(2){flex:1;font-family:var(--mono)}.param-row button{width:28px;background:transparent;border:1px solid var(--border-2);color:var(--text-faint)}.sched-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.sched-h{font-size:13px;margin:0 0 10px;display:flex;align-items:center;gap:10px}.trigger-card{background:var(--bg-3);border:1px solid var(--border);border-radius:9px;padding:10px;margin-bottom:8px;display:flex;flex-direction:column;gap:7px}.trigger-card input,.trigger-card select{font-size:12px}.jp-runs-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.run-row{cursor:pointer}.run-row:hover{background:var(--bg-3)}.run-detail-row>td{background:var(--bg);padding:0}.run-tasks{display:flex;flex-direction:column;gap:5px;padding:10px 16px}.run-task{display:flex;align-items:center;gap:9px;font-size:12px}.rt-ico{font-size:13px}.rt-name{font-weight:600}.rt-err{color:#ff6b5e;font-family:var(--mono);font-size:11px}.rt-out,.mono{font-family:var(--mono)}.danger.ghost{color:#ff6b5e;border:1px solid transparent;background:transparent;margin-top:8px}.danger.ghost:hover{border-color:#ff6b5e}.git-card{cursor:pointer;transition:border-color .12s,transform .08s}.git-card:hover{border-color:var(--border-2);transform:translateY(-1px)}.git-url{font-size:11px;color:var(--blue);font-family:var(--mono);word-break:break-all}.branch-chip{font-family:var(--mono);font-size:11px;color:var(--text-dim)}.git-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}.git-auth{margin:10px 0 4px;border:1px solid var(--border);border-radius:10px;padding:6px 12px 12px;background:var(--bg)}.git-auth-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);padding:8px 2px}.git-check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-dim);margin:12px 2px}.toasts{position:fixed;right:18px;bottom:18px;z-index:100;display:flex;flex-direction:column;gap:8px}.toast{padding:10px 14px;border-radius:9px;font-size:12.5px;font-weight:600;box-shadow:0 8px 24px #0006;border:1px solid var(--border-2);animation:toastIn .18s ease}.toast.ok{background:#11321c;color:var(--green);border-color:#1c5a32}.toast.err{background:#3a1414;color:#ff8077;border-color:#5a1c1c}.toast.info{background:var(--bg-3);color:var(--text)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.git-detail{display:flex;flex-direction:column}.git-detail-head{height:52px;display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--bg-2);flex-shrink:0}.git-detail-name{font-size:15px;font-weight:700}.branch-btn{font-family:var(--mono);font-size:12px;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);padding:5px 10px;border-radius:7px}.dd-head{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:700;padding:6px 10px 3px}.git-tabs{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.git-tab{background:transparent;border:1px solid transparent;border-bottom:none;color:var(--text-dim);padding:7px 15px;border-radius:8px 8px 0 0;font-size:13px;display:flex;align-items:center;gap:7px}.git-tab:hover{color:var(--text);background:var(--bg-3)}.git-tab.active{background:var(--panel);color:var(--text);border-color:var(--border-2);position:relative;top:1px;font-weight:600}.tab-count{background:var(--accent);color:#fff;font-size:10px;font-weight:700;border-radius:9px;padding:0 6px}.git-files{flex:1;display:flex;min-height:0}.git-tree{width:300px;border-right:1px solid var(--border);background:var(--panel);overflow:auto;flex-shrink:0}.git-tree-head{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:700;padding:10px 12px 6px}.git-tree-row{display:flex;align-items:center;gap:8px;padding:5px 12px;cursor:pointer;font-size:12.5px;color:var(--text-dim)}.git-tree-row:hover{background:var(--bg-3);color:var(--text)}.git-tree-row.active{background:var(--bg-3);color:var(--text);border-left:2px solid var(--accent)}.ft-ico{flex-shrink:0}.ft-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-viewer{flex:1;display:flex;flex-direction:column;min-width:0}.git-viewer-head{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:12.5px;font-family:var(--mono)}.git-code{flex:1;border:none;background:var(--bg);color:var(--text);font-family:var(--mono);font-size:12.5px;padding:12px 16px;resize:none;outline:none;line-height:1.6}.dirty-dot{color:var(--amber)}.git-changes{display:grid;grid-template-columns:1fr 360px;gap:16px}.git-change-list{background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden}.git-change{display:flex;align-items:center;gap:9px;padding:8px 12px;border-bottom:1px solid var(--border);font-size:12.5px}.chg-code{font-family:var(--mono);font-weight:700;width:22px;text-align:center;border-radius:4px;font-size:11px}.chg-code.modified{color:var(--amber)}.chg-code.untracked{color:var(--green)}.chg-code.staged{color:var(--blue)}.git-commit-box{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px;height:fit-content}.git-commit-box label{font-size:12px;color:var(--text-dim);font-weight:600;display:block;margin-bottom:6px}.commit-actions{display:flex;gap:8px;margin-top:10px}.commit-actions button{flex:1}.nbgit-wrap{position:relative;display:inline-block}.nbgit-btn{display:inline-flex;align-items:center;gap:6px}.nbgit-btn.ok{border-color:#1c5a32}.nbgit-btn.warn{border-color:#5a4715}.nbgit-btn.err{border-color:#5a1c1c}.nbgit-dot{font-weight:700}.nbgit-dot.ok{color:var(--green)}.nbgit-dot.warn{color:var(--amber)}.nbgit-dot.info{color:var(--blue)}.nbgit-dot.err{color:#ff6b5e}.nbgit-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:60;width:340px;background:var(--bg-2);border:1px solid var(--border-2);border-radius:11px;box-shadow:0 14px 40px #00000080;padding:12px}.nbgit-empty{text-align:center;padding:12px}.nbgit-empty p{color:var(--text-dim);font-size:12.5px;margin-bottom:12px}.nbgit-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.nbgit-badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:10px}.nbgit-badge.ok{background:#11321c;color:var(--green)}.nbgit-badge.warn{background:#2e2410;color:var(--amber)}.nbgit-badge.info{background:#11283a;color:var(--blue)}.nbgit-badge.err{background:#3a1414;color:#ff6b5e}.nbgit-meta{display:flex;flex-direction:column;gap:4px;font-size:11.5px;margin-bottom:10px}.nbgit-meta>div{display:flex;justify-content:space-between;gap:10px}.nbgit-meta span{color:var(--text-faint)}.nbgit-meta code{font-family:var(--mono);font-size:10.5px;color:var(--blue);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.nbgit-msg{width:100%;font-size:12px;resize:vertical;margin-bottom:8px}.nbgit-actions{display:flex;gap:6px;margin-bottom:8px}.nbgit-actions button{flex:1;font-size:11.5px;padding:6px 8px}.nbgit-sub{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:700;margin:6px 0 5px}.nbgit-log{max-height:150px;overflow:auto;display:flex;flex-direction:column;gap:3px}.nbgit-log-row{display:flex;align-items:center;gap:8px;font-size:11px;padding:3px 4px}.nbgit-log-msg{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nbgit-unlink{width:100%;margin-top:10px;background:transparent;border:1px solid var(--border-2);color:var(--text-faint);font-size:11.5px}.nbgit-unlink:hover{color:#ff6b5e;border-color:#ff6b5e}.nbgit-toast{position:fixed;right:18px;bottom:18px;z-index:120}.conflict-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:6px 0 4px}.conflict-h{font-size:12px;font-weight:700;margin-bottom:6px}.conflict-pre{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;font-family:var(--mono);font-size:10.5px;line-height:1.5;max-height:320px;overflow:auto;white-space:pre-wrap;color:var(--text-dim)}.import-drop{border:2px dashed var(--border-2);border-radius:14px;padding:44px 24px;text-align:center;cursor:pointer;background:var(--panel);transition:border-color .12s,background .12s}.import-drop:hover{border-color:var(--blue)}.import-drop.drag{border-color:var(--accent);background:var(--bg-3)}.import-drop-ico{font-size:44px}.import-drop-title{font-size:16px;font-weight:700;margin-top:10px}.import-drop-sub{font-size:12.5px;color:var(--text-dim);margin-top:6px}.import-types{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}.import-results{margin-top:22px}.import-results-head{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:700;margin-bottom:8px}.import-row{cursor:pointer}.import-row:hover{background:var(--bg-3)}.import-hint{margin-top:24px;color:var(--text-dim);font-size:13px;line-height:1.7;max-width:720px}.import-hint ul{margin:10px 0 0;padding-left:20px}.import-hint code{font-family:var(--mono);font-size:11.5px;color:var(--blue);background:var(--bg-3);padding:1px 5px;border-radius:4px}.do-proj-badge.ml-badge{background:linear-gradient(135deg,#7c4dff,#d500f9)}.ml-link{cursor:pointer;color:var(--blue)}.ml-link:hover{text-decoration:underline}.ml-stage{font-size:10.5px;font-weight:700;border:1px solid;border-radius:4px;padding:1px 7px;white-space:nowrap}.ml-alias{font-size:10.5px;font-weight:700;color:#d500f9;border:1px solid #d500f9;border-radius:10px;padding:1px 7px;margin-right:4px}.ml-pill{font-size:11px;background:var(--bg-3);border:1px solid var(--border-2);border-radius:10px;padding:1px 8px;margin-right:5px;white-space:nowrap}.ml-spark{display:block}.ml-section-head{font-size:13px;font-weight:700;padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text-dim)}.ml-summary{display:grid;grid-template-columns:1fr;gap:14px}.ml-hero{background:linear-gradient(135deg,#7c4dff24,#d500f90f)}.ml-statgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.ml-statcard{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:14px;text-align:left}.ml-statcard:hover{border-color:var(--accent)}.ml-statcard-ico{font-size:18px}.ml-statcard-v{font-size:26px;font-weight:800}.ml-statcard-l{font-size:11px;color:var(--text-dim)}.ml-metricgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.ml-metric{background:var(--bg-2);border:1px solid var(--border);border-radius:9px;padding:10px 12px}.ml-metric-top{display:flex;justify-content:space-between;font-size:12px;color:var(--text-dim);margin-bottom:4px}.ml-metric-top b{color:var(--text);font-size:14px}.ml-reg-row{display:inline-flex;gap:6px;align-items:center}.ml-reg-row input{width:200px}.ml-compare .ml-best{color:var(--green);font-weight:700}.ml-best-row{background:#40c87814}.ml-compare-charts{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:14px}.ml-stage-board{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}.ml-stage-col{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;min-height:140px}.ml-stage-col-head{display:flex;justify-content:space-between;align-items:center;padding:9px 11px;border-bottom:1px solid var(--border)}.ml-stage-card{background:var(--panel);border:1px solid var(--border-2);border-radius:8px;padding:9px 10px;margin:8px;border-left:3px solid var(--accent)}.ml-mon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px}.ml-mon-head{display:flex;align-items:center;gap:8px;justify-content:space-between}.ml-mon-metrics{display:flex;flex-direction:column;gap:8px;margin-top:10px}.ml-alerts{margin-top:8px}.ml-alert{background:#ff5e5e1a;border:1px solid rgba(255,94,94,.4);color:#ff8a8a;border-radius:6px;padding:5px 9px;font-size:12px;margin-top:4px}.ml-pipe-list{display:flex;flex-direction:column;gap:12px}.ml-pipe-head{display:flex;align-items:center;gap:8px}.ml-pipe-stages{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}.ml-pipe-stage{display:inline-flex;align-items:center;gap:6px;background:var(--bg-3);border:1px solid var(--border-2);border-radius:8px;padding:5px 10px;font-size:12px}.ml-pipe-arrow{color:var(--text-faint);margin-left:4px}.ml-compute-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.ml-int-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:8px}.ml-int-card{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;background:var(--bg-2);border:1px solid var(--border-2);border-radius:9px;padding:11px 13px}.ml-int-card:hover{border-color:var(--accent)}.ml-int-card span{font-size:11.5px}.ml-form-wrap{display:flex;flex-direction:column}.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;overflow:hidden;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 700px at 15% 0%,#1a2440 0%,transparent 55%),radial-gradient(1000px 800px at 100% 100%,#15233b 0%,transparent 55%),linear-gradient(160deg,#0b0e14,#0e1320 55%,#0a0d15)}.login-bg-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.login-content{position:relative;z-index:1;width:min(440px,92vw);display:flex;flex-direction:column;align-items:center;text-align:center}.login-logo{width:300px;max-width:80%;height:auto;filter:drop-shadow(0 8px 28px rgba(0,0,0,.55))}.login-sub{margin:8px 0 26px;font-size:13px;letter-spacing:4px;font-weight:700;color:#aeb9cc;text-transform:uppercase}.login-sub .login-dot{color:#7c4dff;margin:0 4px}.login-card{width:100%;background:#161c28b8;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(124,77,255,.28);border-radius:16px;padding:22px;box-shadow:0 30px 80px #02061299;display:flex;flex-direction:column;gap:12px}.login-field{display:flex;align-items:center;gap:10px;background:#0d111ad9;border:1px solid var(--border-2);border-radius:10px;padding:0 14px;transition:border-color .15s,box-shadow .15s}.login-field:focus-within{border-color:#7c4dff;box-shadow:0 0 0 3px #7c4dff2e}.login-ico{color:#7c8aa6;font-size:16px}.login-field input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-size:15px;padding:14px 0;letter-spacing:.3px}.login-field input::placeholder{color:#6f7c92;letter-spacing:1px}.login-btn{width:100%;height:48px;border:none;border-radius:10px;cursor:pointer;font-size:15px;font-weight:700;color:#fff;background:linear-gradient(135deg,#7c4dff,#5b8cff);box-shadow:0 10px 26px #5b5cff59;transition:filter .15s,transform .05s}.login-btn:hover:not(:disabled){filter:brightness(1.08)}.login-btn:active:not(:disabled){transform:translateY(1px)}.login-btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.login-cta{position:relative;width:100%;height:56px;border:none;border-radius:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:12px;font-size:16px;font-weight:800;letter-spacing:.3px;color:#fff;background:linear-gradient(135deg,#7c4dff,#6a6bff 45%,#5b8cff);box-shadow:0 12px 34px #6c5cff73,inset 0 1px #ffffff2e;transition:transform .08s ease,filter .15s ease,box-shadow .2s ease;animation:ctaGlow 3s ease-in-out infinite}.login-cta:hover{filter:brightness(1.07);transform:translateY(-2px);box-shadow:0 18px 46px #6c5cff99,inset 0 1px #ffffff38}.login-cta:active{transform:translateY(0)}.login-cta-ico{width:22px;height:22px;flex-shrink:0;transition:transform .15s ease}.login-cta:hover .login-cta-ico{transform:translate(3px)}@keyframes ctaGlow{0%,to{box-shadow:0 12px 34px #6c5cff66,inset 0 1px #ffffff2e}50%{box-shadow:0 16px 44px #5b8cff94,inset 0 1px #ffffff2e}}.login-msg{width:100%;margin-top:14px;padding:11px 14px;border-radius:10px;font-size:13px;line-height:1.45}.login-msg.ok{background:#34d0581f;border:1px solid rgba(52,208,88,.4);color:#9be8ad}.login-msg.error{background:#ff5e5e1f;border:1px solid rgba(255,94,94,.4);color:#ff9b9b}.login-actions{display:flex;gap:12px;width:100%;margin-top:12px}.login-secondary{flex:1;height:44px;border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:600;background:#fffffff0;color:#1b2230;border:none;transition:background .15s}.login-secondary:hover:not(:disabled){background:#fff}.login-secondary:disabled{opacity:.6;cursor:not-allowed}.login-foot{margin-top:22px;font-size:12.5px;letter-spacing:.4px;color:#9fb0c9}.topbar-user{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim)}.topbar-user .tu-email{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
