html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#f5f5f5}.mono{font-family:IBM Plex Mono,monospace}.dsms-logo{display:flex;align-items:center;gap:11px;padding:18px 18px 16px;min-height:64px;border-bottom:1px solid rgba(255,255,255,.07)}.dsms-logo-mark{width:34px;height:34px;display:grid;place-items:center;flex:none;border-radius:9px;background:#2f81f729;color:#4096ff;font-weight:800}.dsms-logo h1{font-size:17px;font-weight:800;color:#fff;letter-spacing:.6px;margin:0;line-height:1.1}.dsms-logo-sub{font-size:8px;font-weight:500;color:#ffffff73;letter-spacing:2px}.dsms-console{background:#0b1020;color:#d6e2ff;border-radius:8px;padding:12px 14px;font-family:IBM Plex Mono,monospace;font-size:12.5px;line-height:1.7;max-height:320px;overflow:auto}.dsms-console .lvl-error{color:#ff7875}.dsms-console .lvl-warn{color:#ffc53d}.dsms-console .lvl-notify{color:#95de64}.dsms-console .lvl-info{color:#91caff}.dsms-console .lvl-debug{color:#8c8c8c}.dsms-chart{display:flex;align-items:flex-end;gap:6px;height:140px;padding-top:8px}.dsms-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}.dsms-chart-bar{width:60%;min-height:2px;border-radius:3px 3px 0 0;display:flex;flex-direction:column-reverse;overflow:hidden}.dsms-chart-label{font-size:10px;color:#00000073}.dsms-rf-wrap{height:100%;width:100%}:root{--paper:#f5f5f5;--panel:#FFFFFF;--ink:rgba(0,0,0,.88);--ink-soft:rgba(0,0,0,.45);--line:#d9d9d9;--split:#f0f0f0;--teal:#1677ff;--teal-hover:#4096ff;--teal-soft:#e6f4ff;--err:#ff4d4f;--err-soft:#fff2f0;--ok:#52c41a;--ok-soft:#f6ffed;--radius:8px;--mono:"IBM Plex Mono",monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--shadow:0 1px 2px rgba(0,0,0,.03),0 1px 6px -1px rgba(0,0,0,.02),0 2px 4px rgba(0,0,0,.02);--shadow-pop:0 6px 16px rgba(0,0,0,.08),0 3px 6px -4px rgba(0,0,0,.12),0 9px 28px 8px rgba(0,0,0,.05);--side-w:230px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--sans);background:var(--paper);color:var(--ink);font-size:14px;min-height:100vh}button{font-family:inherit;cursor:pointer}aside{width:230px;background:linear-gradient(180deg,#001a33,#001529 55%,#00111f);color:#ffffffa6;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20;transition:width .22s cubic-bezier(.4,0,.2,1);box-shadow:1px 0 #ffffff0a,4px 0 24px #0000002e}.logo{padding:20px 18px 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.07);min-height:74px}.logo-mark{width:34px;height:34px;display:grid;place-items:center;flex:none;border-radius:9px;background:#2f81f71f;transition:background .2s}.logo-mark svg{display:block}.logo-txt{display:flex;flex-direction:column;gap:2px;line-height:1.05;overflow:hidden;white-space:nowrap}.logo h1{font-size:18px;font-weight:800;color:#fff;letter-spacing:.6px}.logo-sub{font-size:8px;font-weight:500;color:#ffffff73;letter-spacing:2.3px;white-space:nowrap}.logo[data-tip]{position:relative;cursor:pointer}.logo[data-tip]:after{content:attr(data-tip);position:absolute;top:calc(100% - 2px);left:18px;background:#000000d9;color:#fff;font-size:12px;line-height:1.4;padding:5px 10px;border-radius:6px;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .15s .1s;pointer-events:none;z-index:40}.logo[data-tip]:hover:after{opacity:1;visibility:visible}body.nav-collapsed .logo[data-tip]:after{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}.side-collapse{position:relative;display:flex;align-items:center;gap:12px;width:100%;padding:9px 12px;border:0;background:none;color:#ffffff80;border-radius:9px;font-size:12.5px;text-align:left;transition:background .15s,color .15s;white-space:nowrap}.side-collapse:hover{background:#ffffff12;color:#fff}.side-collapse svg{width:18px;height:18px;flex:none;transition:transform .22s}nav{padding:14px 12px;flex:1;overflow:visible}.nav-sec{font-size:10px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:#ffffff52;padding:6px 12px 8px;white-space:nowrap;overflow:hidden}.nav-item{position:relative;display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:0;background:none;color:#ffffffa8;border-radius:9px;font-size:13.5px;text-align:left;margin-bottom:3px;transition:background .15s,color .15s;white-space:nowrap}.nav-item svg{width:18px;height:18px;flex:none}.nav-item span{overflow:hidden;text-overflow:ellipsis}.nav-item:hover{background:#ffffff12;color:#fff}.nav-item.active{background:linear-gradient(90deg,var(--teal),#1668dc);color:#fff;font-weight:600;box-shadow:0 4px 12px -2px #2f81f773}.nav-item.active:before{content:"";position:absolute;left:-12px;top:0;bottom:0;width:3px;background:#fff;border-radius:0 2px 2px 0}.side-foot{margin-top:auto;padding:10px;border-top:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;gap:4px}.user-card{position:relative;display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:10px;transition:background .15s;cursor:default}.user-card:hover{background:#ffffff0f}.avatar{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;font-weight:700;font-size:13px;background:linear-gradient(135deg,#2f81f7,#7c3aed);box-shadow:0 2px 6px #00000040}.user-meta{min-width:0;flex:1;overflow:hidden;white-space:nowrap}.user-name{font-size:13px;color:#fff;font-weight:600;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.user-role{font-size:11px;color:#ffffff73;overflow:hidden;text-overflow:ellipsis}.logout-btn{flex:none;width:30px;height:30px;border:0;background:none;color:#ffffff80;border-radius:8px;display:grid;place-items:center;transition:background .15s,color .15s}.logout-btn:hover{background:#ff4d4f2e;color:#ff7875}.logout-btn svg{width:16px;height:16px}body.nav-collapsed{--side-w:72px}body.nav-collapsed aside{width:72px}body.nav-collapsed main{margin-left:72px}body.nav-collapsed .side-collapse svg{transform:rotate(180deg)}body.nav-collapsed .side-collapse{justify-content:center;padding:11px 0;gap:0}body.nav-collapsed .side-collapse span{display:none}body.nav-collapsed .nav-item.active:before{left:-10px}body.nav-collapsed .logo{justify-content:center;padding-left:0;padding-right:0}body.nav-collapsed .logo-txt,body.nav-collapsed .nav-sec,body.nav-collapsed .nav-item span,body.nav-collapsed .user-meta,body.nav-collapsed .logout-btn{display:none}body.nav-collapsed nav{padding:14px 10px}body.nav-collapsed .nav-item{justify-content:center;padding:11px 0;gap:0}body.nav-collapsed .side-foot{padding:10px;align-items:center}body.nav-collapsed .user-card{padding:6px;gap:0}body.nav-collapsed .nav-item[data-label]:after,body.nav-collapsed .side-collapse[data-label]:after,body.nav-collapsed .user-card[data-label]:after{content:attr(data-label);position:absolute;left:calc(100% + 14px);top:50%;transform:translateY(-50%);background:#000000d9;color:#fff;font-size:12px;line-height:1.4;padding:5px 10px;border-radius:6px;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none;z-index:40}body.nav-collapsed .user-card{position:relative}body.nav-collapsed .nav-item:hover:after,body.nav-collapsed .side-collapse:hover:after,body.nav-collapsed .user-card:hover:after{opacity:1;visibility:visible}main{margin-left:230px;flex:1;min-width:0;transition:margin-left .22s cubic-bezier(.4,0,.2,1)}.view{display:none}.view.active{display:block}table{width:100%;border-collapse:collapse;font-size:13px}th{font-size:13.5px;color:var(--ink);text-align:left;padding:12px 16px;border-bottom:1px solid var(--split);background:#fafafa;font-weight:600}td{padding:13px 16px;border-bottom:1px solid var(--split);vertical-align:middle;transition:background .2s}tr:last-child td{border-bottom:0}tr:hover td{background:#fafafa}td.mono{font-family:var(--mono);font-size:12px;color:var(--ink-soft)}.badge{font-size:12px;font-weight:400;border-radius:4px;padding:2px 8px;border:1px solid transparent;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;line-height:20px}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:#b7eb8f}.badge.fail,.badge.port_fail{background:var(--err-soft);color:var(--err);border-color:#ffccc7}.badge.auth_fail{background:#fffbe6;color:#faad14;border-color:#ffe58f}.badge.active{background:var(--teal-soft);color:var(--teal);border-color:#91caff}.badge.paused{background:#f0f0f0;color:#8c8c8c;border-color:#d9d9d9}.badge.paused:before{border-radius:1px;width:4px;height:7px;box-shadow:3px 0 0 currentColor;margin-right:1px}tr.conn-off td:nth-child(-n+4){opacity:.45}.badge.unknown{background:#fafafa;color:var(--ink-soft);border-color:var(--line)}.badge.loading{background:var(--teal-soft);color:var(--teal);border-color:#91caff}.badge.loading:before{animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.act-host{position:relative}.row-actions{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:flex;gap:2px;align-items:center;opacity:0;pointer-events:none;transition:opacity .18s;background:var(--panel);border:1px solid var(--split);border-radius:8px;padding:2px 4px;box-shadow:0 3px 10px #0000001a;z-index:6}tr:hover .row-actions,tr:focus-within .row-actions{opacity:1;pointer-events:auto}.row-actions .act-btn:last-child:after{left:auto;right:-4px;transform:none}.act-btn{width:28px;height:28px;border:0;background:none;border-radius:6px;display:grid;place-items:center;color:var(--ink-soft);cursor:pointer;position:relative;transition:background .15s,color .15s}.act-btn:hover{background:var(--teal-soft);color:var(--teal)}.act-btn.danger:hover{background:var(--err-soft);color:var(--err)}.act-btn svg{width:15px;height:15px}.act-btn:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#000000d9;color:#fff;font-size:12px;line-height:1.4;padding:5px 10px;border-radius:6px;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .15s .1s;pointer-events:none;z-index:25}.act-btn:before{content:"";position:absolute;bottom:calc(100% + 3px);left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#000000d9;opacity:0;visibility:hidden;transition:opacity .15s .1s;pointer-events:none;z-index:25}.act-btn:hover:after,.act-btn:hover:before{opacity:1;visibility:visible}.apptip{position:fixed;z-index:200;max-width:260px;background:#000000d9;color:#fff;font-size:12px;line-height:1.45;padding:5px 10px;border-radius:6px;white-space:normal;text-align:center;pointer-events:none;opacity:0;transition:opacity .12s;box-shadow:0 6px 18px #00000047}.apptip.show{opacity:1}.apptip:after{content:"";position:absolute;left:var(--ax,50%);transform:translate(-50%);border:6px solid transparent}.apptip[data-arrow=bottom]:after{top:100%;border-top-color:#000000d9}.apptip[data-arrow=top]:after{bottom:100%;border-bottom-color:#000000d9}.tb-bar{display:flex;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--split);flex-wrap:wrap}.tb-search{position:relative;flex:1;min-width:200px;max-width:320px}.tb-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:#00000040;pointer-events:none}.tb-search input{width:100%;border:1px solid var(--line);border-radius:6px;padding:6px 11px 6px 32px;font-size:13.5px;font-family:inherit;background:var(--panel);color:var(--ink);transition:border-color .2s,box-shadow .2s}.tb-search input:hover{border-color:var(--teal-hover)}.tb-search input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.tb-search input::placeholder{color:#00000040}.tb-bar .aselect{min-width:172px}.tb-foot{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding:12px 16px;border-top:1px solid var(--split)}.tb-total{font-size:13px;color:var(--ink-soft);margin-right:auto}.tb-foot .aselect{min-width:112px}.pager{display:flex;gap:6px;align-items:center}.pg-btn{min-width:30px;height:30px;border:1px solid var(--line);background:var(--panel);border-radius:6px;font-size:13.5px;color:var(--ink);display:grid;place-items:center;padding:0 6px;cursor:pointer;transition:border-color .15s,color .15s}.pg-btn:hover:not(:disabled){border-color:var(--teal);color:var(--teal)}.pg-btn.on{border-color:var(--teal);color:var(--teal);font-weight:600}.pg-btn:disabled{color:#00000040;cursor:not-allowed;border-color:var(--split)}.pg-dots{color:#00000040;font-size:11px;letter-spacing:2px;padding:0 2px}.cf-ico{width:36px;height:36px;border-radius:50%;background:#fffbe6;color:#faad14;display:grid;place-items:center;flex:none}.cf-ico svg{width:20px;height:20px}.cf-title{font-size:15.5px;font-weight:600;margin-bottom:6px}.cf-msg{font-size:13.5px;color:var(--ink-soft);line-height:1.6}.cf-msg b{color:var(--ink)}.btn.btn-danger{background:var(--err);border-color:var(--err);color:#fff;box-shadow:0 2px #ff4d4f1a}.btn.btn-danger:hover{background:#ff7875;border-color:#ff7875;color:#fff}.conn-info{font-size:12.5px;display:flex;flex-direction:column;gap:7px}.conn-info .cstr{font-family:var(--mono);font-size:11.5px;color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);border-radius:7px;padding:7px 10px;word-break:break-all}.conn-info .crow{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.overlay{position:fixed;inset:0 0 0 var(--side-w);background:#00000073;display:none;place-items:center;z-index:50;padding:20px;transition:left .22s cubic-bezier(.4,0,.2,1)}.overlay.open{display:grid}.modal{background:var(--panel);border-radius:8px;width:100%;max-width:460px;max-height:90vh;overflow:auto;box-shadow:var(--shadow-pop)}.modal .card-h{position:sticky;top:0;background:var(--panel)}.modal.wizard{max-width:1240px;display:flex;flex-direction:column;overflow:hidden}.modal.wizard>.card-pad{overflow:auto;flex:1 1 auto}.steps{display:flex;align-items:center;padding:15px 22px;border-bottom:1px solid var(--split);background:#fafafa;flex:none}.step{display:flex;align-items:center;gap:9px;color:var(--ink-soft);font-size:12.5px;cursor:pointer}.step:hover .step-no{border-color:var(--teal);color:var(--teal)}.step.on:hover .step-no{color:#fff}.step:not(:last-child){flex:1}.step:after{content:"";flex:1;height:1.5px;background:var(--line);margin:0 14px;min-width:16px}.step:last-child:after{display:none}.step-no{width:25px;height:25px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-weight:600;font-size:12.5px;background:var(--panel);flex:none}.step-label{white-space:nowrap}.step.on{color:var(--ink);font-weight:600}.step.on .step-no{border-color:var(--teal);background:var(--teal);color:#fff}.step.done{color:var(--ink)}.step.done .step-no{border-color:var(--teal);background:var(--panel);color:transparent;position:relative}.step.done .step-no:after{content:"âœ“";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--teal);font-size:13px;font-weight:700}.step.done:hover .step-no{color:transparent}.wiz-step[hidden]{display:none}.mapper{position:relative}.mapper-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}.mapper-col{border:1px solid var(--line);border-radius:10px;overflow:hidden;position:relative;z-index:2;background:var(--panel)}.mapper-head{padding:9px 12px;background:#fafafa;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:12.5px;font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:8px}.mapper-sub{font-family:var(--sans);font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--ink-soft);font-weight:700}.mapper-list{display:flex;flex-direction:column}.col-item{display:flex;align-items:center;gap:9px;padding:8px 11px;border-bottom:1px solid var(--line);font-size:12.5px;background:var(--panel);transition:background .12s}.col-item:last-child{border-bottom:0}.col-name{font-family:var(--mono);font-weight:600;color:var(--ink)}.col-type{font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);margin-left:auto;background:var(--paper);border:1px solid var(--line);border-radius:5px;padding:1px 6px;white-space:nowrap}.crow.src,.crow.dst{cursor:grab}.crow input[type=checkbox]{cursor:pointer}.crow:not(.mapped):not(.taken):not(.off):hover{background:#f5f5f5}.col-item.src{cursor:grab}.col-item.src:active{cursor:grabbing}.col-item.src input[type=checkbox]{accent-color:var(--teal);width:15px;height:15px;flex:none;cursor:pointer}.col-item.dragging{opacity:.45}.col-item.mapped{background:var(--teal-soft)}.col-item.col-off{background:#f2f4f5}.col-item.col-off .col-name{color:var(--ink-soft);text-decoration:line-through}.col-item.dst.taken{background:var(--teal-soft)}.col-item.dst.drop-hover{background:#fffbe6;outline:2px dashed #faad14;outline-offset:-2px}.col-unlink{display:none;border:0;background:none;color:#1677ff;font-size:13px;line-height:1;padding:0 2px;cursor:pointer}.col-item.mapped .col-unlink{display:inline-flex}.col-unlink:hover{color:var(--err)}.mapper-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:4;overflow:visible}.map-summary{margin-top:13px;font-size:12.5px;color:#0958d9;background:var(--teal-soft);border:1px solid #91caff;border-radius:8px;padding:9px 12px}@media (max-width:880px){.mapper-grid{gap:28px}.col-type{display:none}}.btn.active{background:var(--teal);border-color:var(--teal);color:#fff}.btn.active:hover{background:#4096ff;border-color:#4096ff;color:#fff}#mapCanvasModal,#wfModal{padding:10px;left:0;z-index:60}#sqlModal{z-index:70}#apiRespModal{left:0;z-index:130}.modal.canvas-modal{max-width:none;max-height:98vh;width:98.5vw;height:98vh;display:flex;flex-direction:column;overflow:hidden}.canvas-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--line);flex:none;flex-wrap:wrap}.canvas-bar .ttl{font-weight:600;font-size:14.5px;margin-right:4px}.canvas-vp{position:relative;flex:1 1 auto;overflow:hidden;cursor:grab;background-color:#fafafa;background-image:radial-gradient(circle,#d9d9d9 1.1px,transparent 1.1px);background-size:22px 22px}.canvas-vp.tool-select{cursor:default}.canvas-vp.tool-hand,.canvas-vp.space-pan{cursor:grab}.canvas-vp.panning{cursor:grabbing}.canvas-world{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.cnode.selected{outline:2px solid var(--teal);outline-offset:2px;box-shadow:0 0 0 4px #1677ff24,0 8px 26px #00000024}.rubber{position:absolute;border:1.5px solid var(--teal);background:#1677ff17;border-radius:2px;pointer-events:none;z-index:4}.tool-btn{width:30px;height:30px;border:1px solid var(--line);background:var(--panel);border-radius:7px;font-size:14px;display:grid;place-items:center;color:var(--ink)}.tool-btn:hover{border-color:var(--teal);color:var(--teal)}.tool-btn.active{background:var(--teal);border-color:var(--teal);color:#fff}.tool-group{display:flex;gap:4px;align-items:center}.canvas-lines{position:absolute;top:0;left:0;overflow:visible;pointer-events:none;z-index:1}.canvas-lines path.link{pointer-events:none}.canvas-lines circle{pointer-events:none}.canvas-lines path.link-hit{pointer-events:stroke;cursor:pointer}.ctx-menu{position:fixed;z-index:80;background:var(--panel);border:1px solid var(--line);border-radius:9px;box-shadow:0 10px 28px #00000038;padding:5px;min-width:190px;max-height:320px;overflow:auto;font-size:13px}.ctx-menu button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;color:var(--ink);padding:8px 10px;border-radius:6px;text-align:left;cursor:pointer}.ctx-menu button:hover{background:#f5f5f5}.ctx-menu button.danger:hover{background:var(--err-soft);color:var(--err)}.ctx-menu button:disabled{color:#00000040;cursor:not-allowed}.ctx-menu button:disabled:hover{background:none}.ctx-menu .ctx-title{font-size:11px;font-weight:700;letter-spacing:.4px;color:var(--ink-soft);padding:6px 10px 4px;text-transform:uppercase}.ctx-menu .ctx-empty{font-size:12.5px;color:#00000040;padding:8px 10px}.ctx-menu .ctx-kbd{margin-left:auto;font-size:11px;color:var(--ink-soft);font-family:var(--mono)}.ctx-menu .mono{font-family:var(--mono);font-size:12.5px}.ctx-menu .ctx-sub-trigger.on{background:#f5f5f5}.ctx-sub{min-width:208px}.ctx-sub .ctx-opt{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;color:var(--ink);padding:8px 10px;border-radius:6px;text-align:left;cursor:pointer;font-size:13px}.ctx-sub .ctx-opt:hover{background:#f5f5f5}.ctx-sub .ctx-opt.sel{background:var(--teal-soft);color:var(--teal);font-weight:500}.ctx-sub .ctx-opt.sel:hover{background:var(--err-soft);color:var(--err)}.ctx-sub .ctx-opt .ctx-kbd{margin-left:auto}.ctx-sub .ctx-opt.sel .ctx-kbd{color:inherit}.ctx-sub .ctx-check{width:14px;height:14px;flex:none;opacity:0}.ctx-sub .ctx-opt.sel .ctx-check{opacity:1}.cnode{position:absolute;width:max-content;min-width:208px;max-width:none;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 26px #0000001f;z-index:2}.cnode-head{padding:10px 13px;font-family:var(--mono);font-weight:600;font-size:13px;border-bottom:1px solid var(--line);border-radius:8px 8px 0 0;cursor:grab;display:flex;align-items:center;gap:8px;background:#fafafa}.cnode-head:active{cursor:grabbing}.cnode-head .dot{width:9px;height:9px;border-radius:50%;background:var(--teal);flex:none}.cnode.dst .cnode-head .dot{background:#722ed1}.cnode-head .cnt{margin-left:auto;font-family:var(--sans);font-size:10px;font-weight:600;color:var(--ink-soft)}.cnode-head .cnode-db{font-family:var(--sans);font-size:9.5px;font-weight:700;letter-spacing:.3px;color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:1px 5px;margin-left:auto}.cnode-head .cnode-db~.node-set{margin-left:6px}.cnode-head .node-set{margin-left:auto}.node-set{border:0;background:none;color:var(--ink-soft);font-size:13px;line-height:1;padding:2px 4px;margin-left:6px;border-radius:5px;cursor:pointer}.node-set:hover{background:var(--teal-soft);color:var(--teal)}.node-set.on{color:var(--teal);background:var(--teal-soft)}.where-pop{position:fixed;z-index:80;background:var(--panel);border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 34px #0000003d;padding:12px;width:308px}.where-pop-h{font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:8px}.where-pop-h .mono{font-family:var(--mono);color:#0958d9}.where-pop input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12.5px;font-family:var(--mono);color:var(--ink)}.where-pop input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.where-pop-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:9px}.sql-badge{font-family:var(--sans);font-size:9px;font-weight:700;letter-spacing:.5px;color:#d48806;background:#fffbe6;border:1px solid #ffe58f;border-radius:5px;padding:1px 5px;margin-left:6px}.cnode.qnode{width:300px;min-width:300px;max-width:300px;border-color:#ffe58f;background:#fffbf2;box-shadow:0 8px 26px #d4880624}.cnode.qnode .cnode-head{background:#fffbe6;border-bottom-color:#ffe58f;color:#d48806;cursor:pointer}.cnode.qnode .cnode-head .qicon{font-family:var(--mono);font-weight:700;color:#d48806;flex:none}.cnode.qnode .cnode-head .qtag{margin-left:auto;font-family:var(--sans);font-size:9.5px;font-weight:700;letter-spacing:.3px;color:#d48806;background:var(--panel);border:1px solid #ffe58f;border-radius:4px;padding:1px 5px}.cnode.qnode .cnode-head .qexpand{flex:none;display:inline-flex;align-items:center;justify-content:center;margin-left:6px;width:18px;height:18px;cursor:pointer;color:#d48806;font-size:13px;line-height:1;font-weight:700;border:1px solid #ffe58f;border-radius:4px;background:var(--panel)}.cnode.qnode .cnode-head .qexpand:hover{background:#fffbe6}.cnode.qnode pre{margin:0;padding:10px 12px;font-family:var(--mono);font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:var(--ink);max-height:220px;overflow:auto}.cnode.qnode.expanded pre{max-height:none;overflow:visible}.cnode.qnode pre .kw{color:#0958d9;font-weight:600}.cnode.qnode pre .fn{color:#722ed1}.cnode.qnode pre .str{color:#389e0d}.cnode.qnode pre .com{color:#8c8c8c;font-style:italic}.sql-src-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.sql-src-chip{display:flex;align-items:center;gap:8px;border:1px solid #ffe58f;background:#fffbf2;border-radius:8px;padding:6px 8px;font-size:12.5px}.sql-src-chip .nm{font-family:var(--mono);font-weight:600;color:#d48806}.sql-src-chip .meta{color:var(--ink-soft);font-size:11.5px}.sql-src-chip .sp{margin-left:auto;display:flex;gap:5px}.src-sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px}.src-empty{font-size:12px;color:var(--ink-soft);border:1px dashed var(--line);border-radius:8px;padding:10px 12px;text-align:center}.db-sql-list{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.db-sql-list:empty{display:none}.extra-src-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.extra-src-actions{display:flex;gap:8px}.extra-src-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}.extra-src-list:empty{display:none}.extra-src-card{border:1px solid var(--line);border-radius:9px;background:var(--panel);padding:11px 12px}.extra-src-card.db{border-left:3px solid var(--teal)}.extra-src-card.api{border-left:3px solid #722ed1}.extra-src-card.dst{border-left:3px solid var(--ok)}.esc-badge.dst{background:#f6ffed;color:#389e0d}.esc-h{display:flex;align-items:center;gap:8px}.esc-h>select,.esc-h>input{flex:1;min-width:0;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:13px;font-family:inherit;background:#fff;color:var(--ink)}.esc-h>input:focus,.esc-h>select:focus,.esc-body input:focus,.esc-body select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.esc-badge{font-size:10px;font-weight:700;letter-spacing:.4px;border-radius:5px;padding:2px 7px;flex:none}.esc-badge.db{background:var(--teal-soft);color:var(--teal)}.esc-badge.api{background:#f9f0ff;color:#722ed1}.esc-x{flex:none;width:26px;height:26px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink-soft);cursor:pointer;display:grid;place-items:center;font-size:14px}.esc-x:hover{border-color:var(--err);color:var(--err)}.esc-body{margin-top:10px}.esc-lb{display:block;font-size:11.5px;color:var(--ink-soft);margin-bottom:6px}.esc-row{display:flex;gap:8px;margin-bottom:10px}.esc-row select{flex:none;width:96px;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:13px;background:#fff;color:var(--ink)}.esc-row .esc-url{flex:1;min-width:0;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:13px;font-family:var(--mono);background:#fff;color:var(--ink)}.esc-fields{width:100%;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:13px;font-family:var(--mono);background:#fff;color:var(--ink)}.esc-tables{display:flex;flex-wrap:wrap;gap:6px}.esc-tables .empty{font-size:12px;color:var(--ink-soft)}.api-badge{font-size:9px;font-weight:700;letter-spacing:.5px;background:#f9f0ff;color:#722ed1;border-radius:4px;padding:1px 5px;margin-left:6px;vertical-align:middle}.api-curl{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}.api-curl-in{flex:1;min-width:0;border:1px dashed var(--line);border-radius:7px;padding:7px 10px;font-family:var(--mono);font-size:11.5px;background:#fafafa;color:var(--ink);resize:vertical}.api-curl-in:focus{outline:none;border-color:var(--teal);background:#fff}.api-curl .btn{flex:none;white-space:nowrap}.api-sec{margin-top:10px}.kv-row{display:flex;gap:6px;margin-bottom:6px}.kv-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:6px;padding:5px 9px;font-size:12.5px;font-family:var(--mono);background:#fff;color:var(--ink)}.kv-row input:first-child{flex:0 0 38%}.kv-row input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.kv-x{flex:none;width:28px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink-soft);cursor:pointer;font-size:12px}.kv-x:hover{border-color:var(--err);color:var(--err)}.kv-add{border:1px dashed var(--line);background:#fff;color:var(--teal);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.kv-add:hover{border-color:var(--teal)}.api-body{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:6px;padding:7px 10px;font-size:12.5px;font-family:var(--mono);background:#fff;color:var(--ink);resize:vertical}.api-body:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.sql-ta{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:11px 13px 11px 14px;font-family:var(--mono);font-size:12.5px;line-height:1.7;tab-size:2;-moz-tab-size:2;color:var(--ink);background:#fbfbfd;resize:vertical;min-height:150px;caret-color:var(--teal);white-space:pre;overflow:auto;transition:border-color .2s,box-shadow .2s,background .2s}.sql-ta::placeholder{color:#0000004d;font-style:italic}.sql-ta:hover{border-color:var(--teal-hover)}.sql-ta:focus{outline:none;border-color:var(--teal);background:#fff;box-shadow:0 0 0 2px #0591ff1f}.api-test-row{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}.api-test-st{font-size:11.5px;font-weight:600}.api-test-st.ok{color:#389e0d}.api-test-st.err{color:var(--err)}.api-test-st.loading{color:var(--teal)}.api-note{font-size:11.5px;color:#ad6800;background:#fffbe6;border:1px solid #ffe58f;border-radius:7px;padding:6px 10px;margin-top:8px}.api-fields{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.api-fchip{display:inline-flex;align-items:center;gap:5px;background:#f9f0ff;border:1px solid #efdbff;border-radius:6px;padding:2px 8px;font-size:11.5px;font-family:var(--mono);color:#531dab}.api-fchip i{font-style:normal;font-size:9.5px;color:#9254de;background:#fff;border-radius:3px;padding:0 4px}.api-sample{margin-top:8px}.api-sample summary{font-size:11.5px;color:var(--teal);cursor:pointer}.api-sample pre{margin:6px 0 0;background:#0f1419;color:#e6edf3;border-radius:8px;padding:10px 12px;font-family:var(--mono);font-size:11px;line-height:1.5;overflow:auto;max-height:200px}.sql-edit-wrap{position:relative}.sql-backdrop,.sql-text{margin:0;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-family:var(--mono);font-size:12.5px;line-height:1.55;letter-spacing:0;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word}.sql-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;color:var(--ink);background:var(--panel);overflow:auto;pointer-events:none;z-index:0}.sql-backdrop .bad{color:var(--err);text-decoration:underline wavy var(--err);background:var(--err-soft);border-radius:3px}.sql-backdrop .kw{color:#0958d9;font-weight:600}.sql-backdrop .fn{color:#722ed1}.sql-backdrop .str{color:#389e0d}.sql-backdrop .com{color:#8c8c8c;font-style:italic}.sql-text{position:relative;display:block;width:100%;color:transparent;background:transparent;caret-color:var(--ink);resize:vertical;z-index:1;min-height:150px}.sql-text:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.sql-suggest{position:absolute;left:10px;right:10px;z-index:30;background:var(--panel);border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 28px #0000002e;max-height:184px;overflow:auto;padding:4px}.sql-suggest .sg{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:7px;font-family:var(--mono);font-size:12.5px;cursor:pointer}.sql-suggest .sg:hover,.sql-suggest .sg.act{background:var(--teal-soft)}.sql-suggest .sg .ty{margin-left:auto;font-size:10.5px;color:var(--ink-soft)}.sql-suggest .sg .tb{font-size:10.5px;color:#d48806}.sql-suggest .sg .tbl{margin-left:auto;font-size:10.5px;color:#0958d9}.sql-suggest .sg .sg-kw{color:#722ed1;font-weight:700}.sql-suggest .sg .sg-fn{color:#d48806;font-weight:600}.sql-resp-box{margin-top:11px}.sql-resp{font-size:12.5px;border-radius:8px;padding:8px 11px}.sql-resp.ok{background:#f6ffed;color:#52c41a;border:1px solid #b7eb8f}.sql-resp.err{background:var(--err-soft);color:var(--err);border:1px solid #F0C8C2}.sql-resp .mono{font-family:var(--mono)}.sql-resp-table{margin-top:8px;border:1px solid var(--line);border-radius:8px;overflow:auto;max-height:170px}.sql-resp-table table{font-size:11.5px;width:100%}.sql-resp-table th{position:sticky;top:0;font-size:10px;padding:6px 9px;background:#fafafa}.sql-resp-table td{padding:5px 9px;font-family:var(--mono);font-size:11px;white-space:nowrap}.sql-cols{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.sql-col-tag{display:inline-flex;align-items:center;gap:6px;background:var(--teal-soft);border:1px solid #91caff;color:#0958d9;border-radius:6px;padding:3px 9px;font-family:var(--mono);font-size:12px}.sql-col-tag .ty{color:#1677ff;font-size:10.5px}.node-set.sql{color:#d48806}.node-set.sql:hover{background:#fffbe6;color:#d48806}.node-del{border:0;background:none;color:var(--ink-soft);font-size:12px;line-height:1;padding:2px 4px;margin-left:2px;border-radius:5px;cursor:pointer}.node-del:hover{background:var(--err-soft);color:var(--err)}.crow{position:relative;display:flex;align-items:center;gap:8px;height:30px;padding:0 13px;border-bottom:1px solid #f0f0f0;font-size:12px}.crow:last-child{border-bottom:0;border-radius:0 0 8px 8px}.crow .cn{font-family:var(--mono);font-weight:600;color:var(--ink);white-space:nowrap}.crow .ct{font-family:var(--mono);font-size:10px;color:var(--ink-soft);margin-left:auto;padding-left:14px;white-space:nowrap}.crow.src.mapped{background:var(--teal-soft)}.crow.src.off{background:#f1f3f4}.crow.src.off .cn{text-decoration:line-through;color:var(--ink-soft)}.crow.dst.taken{background:#f9f0ff}.crow.src input[type=checkbox]{accent-color:var(--teal);width:14px;height:14px;flex:none;cursor:pointer}.port{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;background:#fff;border:2px solid var(--teal);transform:translateY(-50%);cursor:crosshair;z-index:3;transition:box-shadow .12s,background .12s}.port.out{right:-7.5px}.port.in{left:-7.5px;border-color:#722ed1}.port:hover{background:var(--teal);box-shadow:0 0 0 5px #1677ff2e}.port.in:hover{background:#722ed1;box-shadow:0 0 0 5px #722ed12e}.zoom-ctrl{display:flex;align-items:center;gap:5px;margin-left:auto}.zoom-ctrl button{width:30px;height:30px;border:1px solid var(--line);background:var(--panel);border-radius:7px;font-size:15px;display:grid;place-items:center;color:var(--ink)}.zoom-ctrl button:hover{border-color:var(--teal);color:var(--teal)}.zoom-level{font-family:var(--mono);font-size:12px;color:var(--ink-soft);min-width:48px;text-align:center}.canvas-pill{font-size:12px;color:#0958d9;background:var(--teal-soft);border:1px solid #91caff;border-radius:20px;padding:3px 11px;font-weight:600}.canvas-vp.inline{height:480px;border:1px solid var(--line);border-radius:12px}.zoom-float{position:absolute;right:12px;bottom:12px;display:flex;align-items:center;gap:5px;background:#fffffff0;border:1px solid var(--line);border-radius:9px;padding:4px;box-shadow:0 4px 14px #0000001f;z-index:5}.zoom-float button{width:28px;height:28px;border:1px solid var(--line);background:var(--panel);border-radius:6px;font-size:14px;display:grid;place-items:center;color:var(--ink)}.zoom-float button:hover{border-color:var(--teal);color:var(--teal)}.page{max-width:1180px;margin:0 auto;padding:26px 28px 48px}.page-title{font-size:21px;font-weight:600;margin-bottom:20px}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:6px 15px;border-radius:6px;font-size:14px;font-weight:400;display:inline-flex;align-items:center;gap:7px;transition:color .2s,border-color .2s,background .2s;box-shadow:0 2px #00000005}.btn:hover{border-color:var(--teal-hover);color:var(--teal-hover);background:var(--panel)}.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none;box-shadow:none}.btn-primary{background:var(--teal);border-color:var(--teal);color:#fff;box-shadow:0 2px #0591ff1a}.btn-primary:hover{background:var(--teal-hover);border-color:var(--teal-hover);color:#fff}.btn-sm{padding:2px 10px;font-size:13px;border-radius:5px}.card{background:var(--panel);border:1px solid var(--split);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.card-h{padding:14px 20px;border-bottom:1px solid var(--split);font-weight:600;font-size:15px;display:flex;justify-content:space-between;align-items:center}.card-pad{padding:20px}.card-foot{padding:14px 20px;border-top:1px solid var(--split);display:flex;justify-content:flex-end;gap:10px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.field{margin-bottom:15px}.field label{display:block;font-size:13.5px;font-weight:500;margin-bottom:7px;color:var(--ink)}.field input,.field select{width:100%;border:1px solid var(--line);border-radius:6px;padding:7px 11px;font-size:14px;font-family:inherit;background-color:var(--panel);color:var(--ink);transition:border-color .2s,box-shadow .2s}.field input:hover,.field select:hover{border-color:var(--teal-hover)}.field input:focus,.field select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.field select,.sched-row select,.map-row select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;padding-right:32px}.hint{font-size:11.5px;color:var(--ink-soft);margin-top:5px}.req:after{content:" *";color:var(--err);font-weight:700}.radio-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.conn-side{border:1px solid var(--split);border-radius:8px;padding:16px;box-shadow:var(--shadow)}.conn-side-h{font-weight:600;font-size:13.5px;margin-bottom:13px;display:flex;align-items:center;gap:8px}.conn-side-h:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--teal)}.conn-test{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.conn-status{font-size:12.5px;font-weight:500}.conn-status.ok{color:#52c41a}.conn-status.err{color:var(--err)}.conn-status.loading{color:var(--ink-soft)}select:disabled{background-color:var(--paper);color:#00000040;cursor:not-allowed}.ms{position:relative}.ms-toggle{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:38px;border:1px solid var(--line);border-radius:6px;padding:3px 28px 3px 4px;background:var(--panel);color:var(--ink);font-size:14px;text-align:left;cursor:pointer;position:relative;transition:border-color .2s,box-shadow .2s}.ms:hover .ms-toggle{border-color:var(--teal-hover)}.ms.open .ms-toggle{border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f;cursor:text}.ms-label{display:contents}.ms-count{display:none}.ms .ms-toggle input.ms-inline{flex:1;min-width:70px;width:auto;height:26px;border:0;outline:none;background:none;box-shadow:none;border-radius:0;font-family:inherit;font-size:13.5px;color:var(--ink);padding:0 0 0 7px;cursor:pointer;transition:none}.ms .ms-toggle input.ms-inline:hover,.ms .ms-toggle input.ms-inline:focus{border:0;box-shadow:none;background:none}.ms.open .ms-toggle input.ms-inline{cursor:text}.ms-inline::placeholder{color:#00000040}.ms-caret{position:absolute;right:9px;top:50%;transform:translateY(-50%);color:#00000040;display:grid;place-items:center;pointer-events:none;transition:color .2s}.ms-caret svg{width:13px;height:13px}.ms-caret .ico-search,.ms.open .ms-caret .ico-chev{display:none}.ms.open .ms-caret .ico-search{display:block}.ms.open .ms-caret{color:#00000073}.ms-chip{display:inline-flex;align-items:center;gap:4px;background:#0000000f;border:0;color:var(--ink);border-radius:4px;padding:2px 4px 2px 8px;font-family:var(--mono);font-size:12.5px;font-weight:500;line-height:20px;max-width:100%}.ms-chip button{border:0;background:none;color:#00000073;font-size:12px;line-height:1;padding:0 3px;border-radius:3px;cursor:pointer;transition:color .2s}.ms-chip button:hover{color:var(--ink);background:none}.ms.disabled{pointer-events:none}.ms.disabled .ms-toggle{background:var(--paper);box-shadow:none}.ms-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;background:var(--panel);border-radius:8px;box-shadow:var(--shadow-pop);padding:4px;max-height:280px;display:flex;flex-direction:column;animation:msIn .14s ease;scroll-margin:12px}.ms-panel[hidden]{display:none}@keyframes msIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.ms-options{overflow:auto;display:flex;flex-direction:column;gap:1px}.ms-opt{display:flex;align-items:center;gap:8px;padding:5px 12px;border-radius:4px;font-size:13.5px;cursor:pointer;min-height:32px;transition:background .2s}.ms-opt:hover{background:#0000000a}.ms-opt.sel{background:var(--teal-soft)}.ms-opt.sel .ms-opt-name{font-weight:600}.ms-opt-name{font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.ms-opt-meta{margin-left:auto;font-size:11px;color:var(--ink-soft);white-space:nowrap}.ms-check{width:13px;height:13px;color:var(--teal);opacity:0;flex:none;transition:opacity .15s}.ms-opt.sel .ms-check{opacity:1}.ms-opt.hide{display:none}.ms-empty,.ms-noresult{font-size:13px;color:#00000040;padding:14px 9px;text-align:center}.aselect{position:relative;display:inline-block;vertical-align:middle;max-width:100%}.field .aselect{display:block;width:100%}.sched-row .aselect{display:inline-block;width:auto;min-width:170px}.aselect select{display:none!important}.as-sel{position:relative;display:flex;align-items:center;width:100%;min-height:32px;border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:0 30px 0 11px;cursor:pointer;font-size:14px;transition:border-color .2s,box-shadow .2s}.field .as-sel{min-height:36px}.aselect:hover .as-sel{border-color:var(--teal-hover)}.aselect.open .as-sel{border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.aselect.disabled{pointer-events:none}.aselect.disabled .as-sel{background:var(--paper);cursor:not-allowed}.aselect.disabled .as-value{color:#00000040}.aselect .as-sel input.as-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border:0;outline:none;background:transparent;box-shadow:none;border-radius:0;font-family:inherit;font-size:14px;color:var(--ink);padding:0 30px 0 11px;cursor:pointer;transition:none}.aselect .as-sel input.as-input:hover,.aselect .as-sel input.as-input:focus{border:0;box-shadow:none;background:transparent}.aselect.open .as-sel input.as-input{cursor:text}.as-value{flex:1;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.as-value.ph{color:#00000040}.as-arrow{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:#00000040;pointer-events:none;display:grid;place-items:center}.as-arrow svg{width:12px;height:12px}.as-arrow .ico-search,.aselect.open .as-arrow .ico-chev{display:none}.aselect.open .as-arrow .ico-search{display:block}.as-clear{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:16px;height:16px;border:0;border-radius:50%;background:#00000040;color:#fff;display:none;place-items:center;cursor:pointer;padding:0;line-height:1;z-index:2;transition:background .2s}.as-clear svg{width:8px;height:8px}.as-clear:hover{background:#00000073}.aselect.has-value:hover .as-clear{display:grid}.aselect.has-value:hover .as-arrow{display:none}.aselect.disabled .as-clear{display:none!important}.as-drop{position:absolute;top:calc(100% + 4px);left:0;min-width:100%;z-index:45;background:var(--panel);border-radius:8px;box-shadow:var(--shadow-pop);padding:4px;max-height:256px;overflow:auto;animation:msIn .14s ease;scroll-margin:12px}.as-opt{display:flex;align-items:center;gap:8px;padding:5px 12px;border-radius:4px;font-size:14px;min-height:32px;cursor:pointer;transition:background .2s;white-space:nowrap}.as-opt:hover{background:#0000000a}.as-opt.sel{background:var(--teal-soft);font-weight:600}.as-opt.hide{display:none}.as-empty{padding:14px;text-align:center;color:#00000040;font-size:13px}#view-overview.active{display:flex;flex-direction:column;height:calc(100vh - 74px);min-height:480px;overflow:hidden}#view-overview .page-title,#view-overview .ov-stats{margin-bottom:12px;flex:none}#view-overview #ovAlert{flex:none}#view-overview .ov-alert{margin-bottom:12px}#view-overview .stat-card{padding:12px 14px}#view-overview .stat-num{font-size:21px}#view-overview .ov-grid{flex:1;min-height:0;margin-bottom:12px;align-items:stretch}#view-overview .ov-grid .card{display:flex;flex-direction:column;min-height:0}#view-overview .ov-grid .card-h{padding:10px 16px;flex:none}#view-overview .ov-grid .card-pad{overflow:auto;flex:1;min-height:0;padding:10px 16px 12px}#view-overview .ov-row{padding:8px 0}#view-overview>.card{flex:none}#view-overview>.card .card-h{padding:9px 16px}#view-overview>.card .card-pad{padding:10px 16px 12px}#view-overview .chart{height:64px}@media (max-height:600px){#view-overview.active{height:auto;overflow:visible}}.ov-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stat-card{background:var(--panel);border:1px solid var(--split);border-radius:8px;padding:16px;display:flex;gap:13px;align-items:flex-start;cursor:pointer;box-shadow:var(--shadow);transition:box-shadow .2s,transform .2s}.stat-card:hover{box-shadow:0 6px 18px #00000014;transform:translateY(-1px)}.stat-ico{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex:none}.stat-ico svg{width:19px;height:19px}.stat-ico.teal{background:var(--teal-soft);color:var(--teal)}.stat-ico.blue{background:#f9f0ff;color:#722ed1}.stat-ico.red{background:var(--err-soft);color:var(--err)}.stat-ico.amber{background:#fffbe6;color:#d48806}.stat-num{font-size:24px;font-weight:700;line-height:1.15}.stat-lbl{font-size:12px;color:var(--ink-soft);font-weight:600}.stat-sub{font-size:11.5px;color:var(--ink-soft);margin-top:4px}.ov-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:14px;margin-bottom:16px;align-items:start}.health-bar{display:flex;height:9px;border-radius:6px;overflow:hidden;background:var(--paper);margin-bottom:10px}.health-bar span{height:100%;min-width:4px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-soft);margin-bottom:6px}.legend i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:-1px}.ov-row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid #f0f0f0}.ov-row:last-child{border-bottom:0;padding-bottom:2px}.ov-dot{width:9px;height:9px;border-radius:50%;flex:none}.ov-dot.ok{background:#52c41a}.ov-dot.loading{background:#722ed1;animation:pulse 1.1s ease-in-out infinite}.ov-dot.fail{background:var(--err)}.ov-dot.unknown{background:#bfbfbf}.ov-main{flex:1;min-width:0}.ov-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-meta{font-size:11.5px;color:var(--ink-soft);font-family:var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.ov-side{font-size:11.5px;color:var(--ink-soft);text-align:right;flex:none}.ov-empty{color:var(--ink-soft);font-size:12.5px;text-align:center;padding:18px 0}.ov-row.click{cursor:pointer;margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:8px;transition:background .15s}.ov-row.click:hover{background:#fafafa}.ov-meta.err{color:var(--err)}.ov-alert{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--err);background:var(--err-soft);border:1px solid #ffccc7;border-radius:8px;padding:8px 12px;margin-bottom:14px}.ov-alert .mono{font-family:var(--mono);font-size:11.5px}.ov-alert .btn{margin-left:auto}.chart{display:flex;align-items:flex-end;gap:4px;height:110px}.chart .bar{flex:1;background:linear-gradient(180deg,#4096ff,var(--teal));border-radius:4px 4px 2px 2px;min-height:3px;position:relative;cursor:pointer}.chart .bar:hover{filter:brightness(1.15)}.chart .bar.err{background:linear-gradient(180deg,#ff7875,var(--err))}.chart .bar .tipv{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-size:10.5px;padding:2px 7px;border-radius:5px;opacity:0;pointer-events:none;transition:.12s;white-space:nowrap;z-index:5}.chart .bar:hover .tipv{opacity:1}.chart-x{display:flex;gap:4px;font-size:10px;color:var(--ink-soft);margin-top:7px}.chart-x span{flex:1;text-align:center}.where-list{display:flex;flex-direction:column;gap:7px}.where-row{display:grid;grid-template-columns:minmax(78px,auto) 1fr;gap:8px;align-items:center}.where-tbl{font-family:var(--mono);font-size:11.5px;font-weight:600;color:#0958d9;background:var(--teal-soft);border:1px solid #91caff;border-radius:6px;padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.where-input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12.5px;font-family:var(--mono);background:var(--panel);color:var(--ink)}.where-input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.radio-card{border:1px solid var(--line);border-radius:9px;padding:12px;cursor:pointer;background:var(--panel)}.radio-card input{display:none}.radio-card b{display:block;font-size:13px;margin-bottom:3px}.radio-card span{font-size:11.5px;color:var(--ink-soft);line-height:1.45}.radio-card:has(input:checked){border-color:var(--teal);background:var(--teal-soft);outline:1px solid var(--teal)}.notify-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.notify-card{border:1px solid var(--line);border-radius:9px;background:var(--panel);overflow:hidden;transition:border-color .15s,background .15s}.notify-card:has(input[type=checkbox]:checked){border-color:var(--teal);background:var(--teal-soft)}.notify-card-h{display:flex;align-items:flex-start;gap:9px;padding:12px;margin:0;cursor:pointer}.notify-card-h input[type=checkbox]{accent-color:var(--teal);width:16px;height:16px;margin-top:1px;flex:none;cursor:pointer}.notify-card-t{display:flex;flex-direction:column;gap:2px;min-width:0}.notify-card-t b{font-size:13px}.notify-card-t span{font-size:11.5px;color:var(--ink-soft);line-height:1.45}.notify-card-body{padding:0 12px 12px;border-top:1px solid #91caff}.notify-card-body input{width:100%;border:1px solid var(--line);border-radius:6px;padding:7px 11px;font-size:13.5px;font-family:inherit;background:#fff;color:var(--ink);margin-top:10px;transition:border-color .2s,box-shadow .2s}.notify-card-body input:hover{border-color:var(--teal-hover)}.notify-card-body input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.notify-when{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.notify-when-lb{font-size:12.5px;color:var(--ink-soft)}.cdc-note{font-size:12px;color:#ad6800;background:#fffbe6;border:1px solid #ffe58f;border-radius:8px;padding:9px 12px;line-height:1.5}.wf-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap}.wf-bar-l{font-size:12.5px;color:var(--ink-soft)}.wf-canvas{position:relative;height:480px;border:1px solid var(--line);border-radius:10px;background:#f6f8fb;background-image:radial-gradient(#dde3ea 1.1px,transparent 1.1px);background-size:20px 20px;overflow:hidden;touch-action:none;cursor:grab}.wf-canvas.panning{cursor:grabbing}.wf-world{position:absolute;top:0;left:0;width:1200px;height:1400px;transform-origin:0 0}.wf-lines{position:absolute;top:0;left:0;width:1200px;height:1400px;pointer-events:none;overflow:visible}.wf-node{position:absolute;width:152px;box-sizing:border-box;display:flex;align-items:center;gap:8px;border:1px solid #e3e8ee;border-radius:11px;background:#fff;box-shadow:0 2px 6px #14285012;padding:9px 10px;cursor:grab;-webkit-user-select:none;user-select:none;transition:box-shadow .15s,border-color .15s,transform .05s}.wf-node:hover{border-color:var(--teal);box-shadow:0 8px 22px #1677ff33}.wf-node.dragging{cursor:grabbing;box-shadow:0 14px 30px #00000038;z-index:6}.wf-ico{flex:none;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font-size:16px;background:var(--teal-soft);color:var(--teal)}.wf-main{min-width:0;flex:1}.wf-kicker{display:block;font-size:8.5px;font-weight:800;letter-spacing:.8px;color:#fa8c16;margin-bottom:1px}.wf-h{font-weight:600;font-size:12.5px;color:var(--ink);min-width:0}.wf-h .nm{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-sub{font-size:11px;color:var(--ink-soft);margin-top:2px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-tag{display:inline-block;font-size:8.5px;font-weight:700;letter-spacing:.3px;border-radius:4px;padding:1px 5px;margin-top:5px;background:#eef1f5;color:var(--ink-soft)}.wf-tag.m-full{background:var(--teal-soft);color:var(--teal)}.wf-tag.m-incremental{background:#e6f4ff;color:#1668dc}.wf-tag.m-cdc{background:#fff7e6;color:#fa8c16}.wf-port{position:absolute;width:11px;height:11px;border-radius:50%;background:#fff;border:2px solid #b6c2cf;top:50%;transform:translateY(-50%)}.wf-port.in{left:-6px}.wf-port.out{right:-6px}.wf-node:hover .wf-port{border-color:var(--teal)}.wf-node.trigger{border-color:#ffd591;border-left:4px solid #fa8c16}.wf-node.trigger .wf-ico{background:#fff7e6;color:#fa8c16}.wf-node.src .wf-ico{background:var(--teal-soft);color:var(--teal)}.wf-node.api .wf-ico{background:#f9f0ff;color:#722ed1}.wf-node.map .wf-ico{background:#e6f4ff;color:#1668dc}.wf-node.dst .wf-ico{background:#f6ffed;color:#389e0d}.wf-node.email .wf-ico{background:#e6fffb;color:#08979c}.wf-node.gapo .wf-ico{background:#f9f0ff;color:#722ed1}.wf-node.ok-notify{border-color:#b7eb8f;border-left:4px solid #52c41a}.wf-node.ok-notify .wf-ico{background:#f6ffed;color:#389e0d}.wf-node.err-notify{border-color:#ffccc7;border-left:4px solid #ff4d4f}.wf-node.err-notify .wf-ico{background:#fff1f0;color:#cf1322}.wf-node.all-notify{border-color:#bae0ff;border-left:4px solid #1677ff}.wf-node.all-notify .wf-ico{background:#e6f4ff;color:#1668dc}.wf-node.ok-notify,.wf-node.err-notify,.wf-node.all-notify{width:224px;max-width:224px}.wf-node.ok-notify .wf-h .nm,.wf-node.err-notify .wf-h .nm,.wf-node.all-notify .wf-h .nm,.wf-node.ok-notify .wf-sub,.wf-node.err-notify .wf-sub,.wf-node.all-notify .wf-sub{white-space:normal;overflow:visible;text-overflow:clip}.wf-node.muted{opacity:.72;border-style:dashed}.wf-node.muted .wf-ico{background:#f0f0f0;color:#8c8c8c}.wf-node.selected{outline:2px solid var(--teal);outline-offset:2px;box-shadow:0 0 0 4px #1677ff29,0 8px 22px #1677ff33}.wf-canvas.selmode{cursor:default}.wf-canvas.selmode .wf-node.wf-selectable{cursor:pointer}.wf-tools{display:flex;align-items:center;gap:4px}.wf-tool{width:30px;height:30px;border:1px solid var(--line);background:#fff;border-radius:7px;display:grid;place-items:center;cursor:pointer;font-size:14px;color:var(--ink-soft);transition:border-color .15s,color .15s,background .15s}.wf-tool:hover{border-color:var(--teal);color:var(--teal)}.wf-tool.on{background:var(--teal);border-color:var(--teal);color:#fff}.wf-tsep{width:1px;height:18px;background:var(--line);margin:0 3px}.wf-canvas-big{height:auto;flex:1 1 auto;border:0;border-radius:0}.wf-canvas-big .wf-world,.wf-canvas-big .wf-lines{width:2200px;height:1600px}.wf-edit{position:absolute;right:10px;bottom:-7px;font-size:9.5px;color:var(--teal);background:#fff;border:1px solid #d6e4ff;border-radius:5px;padding:0 5px;opacity:0;transition:opacity .15s;pointer-events:none}.wf-node:hover .wf-edit{opacity:1}.map-row{display:grid;grid-template-columns:1fr 28px 1fr 110px;gap:10px;align-items:center;margin-bottom:9px;font-family:var(--mono);font-size:12.5px}.map-row .arrow{text-align:center;color:var(--ink-soft)}.map-row select,.map-row input{font-family:var(--mono);font-size:12.5px;border:1px solid var(--line);border-radius:6px;padding:7px 10px;background-color:var(--panel);color:var(--ink);width:100%}.sched-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:13px}.sched-row input,.sched-row select{width:auto;border:1px solid var(--line);border-radius:6px;padding:7px 10px;font-size:13px;font-family:inherit;background-color:var(--panel);color:var(--ink);transition:border-color .2s,box-shadow .2s}.sched-row input:hover,.sched-row select:hover{border-color:var(--teal-hover)}.sched-row input:focus,.sched-row select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.sched-row input[type=number]{width:70px}.sched-row input.cron-raw{font-family:var(--mono);width:160px}.sched-preview{margin-top:10px;background:var(--teal-soft);border:1px solid #91caff;border-radius:8px;padding:9px 12px;font-size:12.5px;color:#0958d9;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sched-preview code{font-family:var(--mono);background:#fff;border:1px solid #91caff;border-radius:5px;padding:2px 7px;font-size:11.5px;color:var(--teal)}.day-chips{display:flex;gap:6px;flex-wrap:wrap}.day-chip{border:1px solid var(--line);background:var(--panel);color:var(--ink-soft);border-radius:18px;padding:6px 12px;font-size:12.5px;font-weight:500}.day-chip:hover{border-color:#4096ff}.day-chip.on{background:var(--teal);border-color:var(--teal);color:#fff}.cf-row{display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:start;width:100%}.cf-row>label{font-size:12.5px;font-weight:600;padding-top:8px}.tagbox{display:flex;gap:6px;flex-wrap:wrap;align-items:center;border:1px solid var(--line);border-radius:8px;padding:5px 7px;background:var(--panel);min-height:38px}.tagbox input{border:0;width:62px;font-size:13px;font-family:var(--mono);color:var(--ink);background:none;padding:4px}.tagbox input:focus{outline:none}.tag{display:inline-flex;align-items:center;gap:5px;background:var(--teal-soft);border:1px solid #91caff;color:#0958d9;border-radius:6px;padding:3px 5px 3px 9px;font-family:var(--mono);font-size:12.5px}.tag button{border:0;background:none;color:#1677ff;font-size:13px;padding:0 4px;border-radius:4px;line-height:1;cursor:pointer}.tag button:hover{background:var(--err-soft);color:var(--err)}.tag-add{border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);border-radius:6px;width:26px;height:26px;font-size:14px;line-height:1}.tag-add:hover{border-color:var(--teal);color:var(--teal)}.tip{position:relative;display:inline-flex}.tip-icon{width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);font-size:12px;font-weight:600;display:grid;place-items:center;cursor:help;padding:0}.tip-icon:hover,.tip-icon:focus-visible{border-color:var(--teal);color:var(--teal);background:var(--teal-soft)}.tip-body{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%) translateY(4px);width:300px;background:var(--ink);color:#ffffffd9;border-radius:10px;padding:13px 15px;font-size:12px;line-height:1.65;opacity:0;visibility:hidden;transition:.15s;z-index:40;box-shadow:0 10px 28px #0000004d;pointer-events:none}.tip-body:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:7px solid transparent;border-top-color:var(--ink)}.tip:hover .tip-body,.tip:focus-within .tip-body{opacity:1;visibility:visible;transform:translate(-50%)}.tip-body b{color:#fff;display:block;margin-bottom:6px;font-size:12.5px}.tip-body code{font-family:var(--mono);font-size:11px;background:#ffffff1f;border-radius:4px;padding:1px 5px;color:#91caff}.tip-body .tip-grid{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:7px 0;font-family:var(--mono);font-size:11px}.tip-body .tip-grid span:nth-child(odd){color:#91caff}.log-pre{margin-top:6px;background:#001529;color:#ffffffc7;border-radius:8px;padding:14px 16px;font-family:var(--mono);font-size:12.5px;line-height:1.75;overflow:auto;min-height:240px;max-height:54vh;white-space:pre-wrap;word-break:break-word}.log-pre .err{color:#ff7875;font-weight:600}.log-pre .run{color:#69b1ff}.log-pre .cursor{display:inline-block;width:7px;height:12px;background:#69b1ff;vertical-align:-1px;margin-left:3px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--teal);margin-right:5px;animation:pulse 1.1s ease-in-out infinite;vertical-align:1px}.toast{position:fixed;top:24px;left:50%;background:var(--panel);color:var(--ink);padding:10px 16px;border-radius:8px;font-size:14px;box-shadow:var(--shadow-pop);opacity:0;transform:translate(-50%) translateY(-10px);transition:.25s;z-index:60;pointer-events:none;display:flex;align-items:center;gap:8px}.toast:before{content:"â„¹";flex:none;width:17px;height:17px;border-radius:50%;background:var(--teal);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}@media (max-width:880px){body{--side-w:72px}aside{width:72px}aside .logo-txt,aside .nav-sec,aside .nav-item span,aside .user-meta,aside .logout-btn{display:none}aside .logo{justify-content:center;padding-left:0;padding-right:0}aside .nav-item{justify-content:center;padding:11px 0;gap:0}aside .side-foot{display:flex;justify-content:center}aside .user-card{padding:6px;gap:0}aside .side-collapse{justify-content:center;padding:11px 0;gap:0}aside .side-collapse span{display:none}main{margin-left:72px}.grid-2,.grid-3,.radio-cards,.notify-cards{grid-template-columns:1fr}.ov-stats{grid-template-columns:repeat(2,1fr)}.ov-grid{grid-template-columns:1fr}.steps{padding:13px 16px}.step-label{display:none}.step:after{margin:0 8px}.tip-body{left:auto;right:-10px;transform:translateY(4px)}.tip-body:after{left:auto;right:18px;transform:none}.tip:hover .tip-body,.tip:focus-within .tip-body{transform:none}}.jd-top{display:flex;flex-direction:column;gap:12px;margin-bottom:6px}.jd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.jd-meta .badge{font-size:12.5px}.jd-pill{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:3px 11px;color:var(--ink)}.jd-pill svg{width:13px;height:13px;flex:none;color:var(--ink-soft)}.jd-cfgbar{display:flex;flex-wrap:wrap;gap:1px;background:var(--split);border:1px solid var(--split);border-radius:9px;overflow:hidden}.jd-cfgbar>div{background:var(--panel);padding:7px 13px;flex:1 1 120px;min-width:110px}.jd-cfgbar .k{font-size:10.5px;color:var(--ink-soft);margin-bottom:2px;white-space:nowrap}.jd-cfgbar .v{font-size:12.5px;font-weight:600}.jd-cfgbar .v.mono{font-family:var(--mono);font-weight:500}.jd-conns{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}.jd-conn{flex:1 1 220px;display:flex;align-items:center;gap:10px;border:1px solid var(--split);border-radius:9px;padding:9px 13px;background:var(--panel);min-width:0}.jd-conn .dot{width:9px;height:9px;border-radius:50%;flex:none}.jd-conn .role{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:1px}.jd-conn .nm{font-weight:600;font-size:13.5px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jd-conn .jd-pill{margin-left:auto;flex:none}.jd-conn-arrow{flex:none;color:var(--ink-soft);display:flex;align-items:center}.jd-conn-arrow svg{width:20px;height:20px}.jd-sec{margin-top:22px}.jd-sec-h{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:11px}.jd-sec-h:after{content:"";flex:1;height:1px;background:var(--split)}.jd-sec-h .ct{font-weight:600;letter-spacing:0;text-transform:none;color:var(--teal);background:var(--teal-soft);border-radius:20px;padding:1px 8px;font-size:11px}.jd-sec-h .sp-r{margin-left:auto;font-weight:500;letter-spacing:0;text-transform:none;color:var(--ink-soft);font-size:11px}.jd-canvas{position:relative;border:1px solid var(--split);border-radius:9px;overflow:auto;max-height:470px;background-color:#fafafa;background-image:radial-gradient(circle,#e0e0e0 1px,transparent 1px);background-size:20px 20px}.jd-canvas-world{position:relative;min-width:100%}.jd-canvas .cnode,.jd-canvas .cnode-head,.jd-canvas .crow,.jd-canvas .crow .port{cursor:default}.jd-canvas .crow.src.mapped{background:var(--teal-soft)}.jd-canvas .crow.src.off{background:#f1f3f4}.jd-canvas .crow.src.off .cn{text-decoration:line-through;color:var(--ink-soft)}.jd-canvas .crow.dst.taken{background:#f9f0ff}.jd-cnode-where{padding:7px 12px;background:var(--teal-soft);border-bottom:1px solid #f0f0f0;font-size:11.5px;display:flex;gap:7px;align-items:baseline}.jd-cnode-where .lb{font-weight:700;color:#0958d9;font-size:10px;letter-spacing:.4px;flex:none}.jd-cnode-where .cd{font-family:var(--mono);color:var(--ink);word-break:break-word}.jd-canvas-lines{position:absolute;top:0;left:0;overflow:visible;pointer-events:none;z-index:1}.jd-wlist{display:flex;flex-direction:column;gap:7px}.jd-wrow{display:flex;align-items:baseline;gap:9px;border:1px solid var(--split);border-radius:8px;padding:8px 12px;background:var(--panel);font-size:12.5px}.jd-wrow .tb{font-family:var(--mono);font-weight:600;flex:none}.jd-wrow .kw{font-size:10px;font-weight:700;color:#0958d9;letter-spacing:.4px;flex:none}.jd-wrow .cd{font-family:var(--mono);color:var(--ink);word-break:break-word}.jd-sqlbox{border:1px solid var(--split);border-radius:9px;overflow:hidden;margin-bottom:11px}.jd-sqlbox:last-child{margin-bottom:0}.jd-sqlbox-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:9px 13px;background:#fafafa;border-bottom:1px solid var(--split)}.jd-sqlbox-h .nm{font-family:var(--mono);font-weight:600;font-size:12.5px;color:#d48806}.jd-sqlbox-h .meta{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}.jd-sqlbox-h .meta .chip{font-size:11px;background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:1px 7px;font-family:var(--mono);color:var(--ink-soft)}.jd-sqlbox-h .meta .chip b{color:var(--ink);font-weight:600}.jd-sqlbox pre{margin:0;padding:11px 13px;font-family:var(--mono);font-size:11.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--ink);background:var(--panel);max-height:280px;overflow:auto}.jd-sqlbox pre .kw{color:#0958d9;font-weight:600}.jd-sqlbox pre .fn{color:#722ed1}.jd-sqlbox pre .str{color:#389e0d}.jd-sqlbox pre .com{color:#8c8c8c;font-style:italic}.jd-empty{font-size:12.5px;color:var(--ink-soft);padding:14px;text-align:center;border:1px dashed var(--line);border-radius:9px}@media (max-width:560px){.jd-conns{flex-direction:column}.jd-conn-arrow{transform:rotate(90deg);align-self:center}}.wfl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}.wfl-card{border:1px solid var(--split);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);overflow:hidden;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .06s;display:flex;flex-direction:column}.wfl-card:hover{border-color:var(--teal);box-shadow:0 10px 26px #1677ff24;transform:translateY(-1px)}.wfl-card-h{display:flex;align-items:center;gap:11px;padding:13px 14px;border-bottom:1px solid var(--split)}.wfl-ic{width:38px;height:38px;border-radius:10px;background:#fff7e6;color:#fa8c16;display:grid;place-items:center;font-size:18px;flex:none}.wfl-card-t{min-width:0;flex:1}.wfl-card-t b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wfl-card-t span{font-size:11.5px;color:var(--ink-soft)}.wfl-card-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px;flex:1}.wfl-flow{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.wfl-pill{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:2px 9px;font-family:var(--mono);font-size:10.5px;color:var(--ink);white-space:nowrap}.wfl-pill.muted{color:var(--ink-soft);border-style:dashed}.wfl-flow .ar{color:var(--teal);font-weight:700;font-size:12px}.wfl-card-foot{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--split);font-size:11.5px;color:var(--ink-soft)}.wfl-card-foot .acts{margin-left:auto;display:flex;gap:2px}.wfl-empty{grid-column:1/-1;text-align:center;color:var(--ink-soft);padding:46px 16px;border:1px dashed var(--line);border-radius:10px}#wfTableBody td{vertical-align:top}.wf-flow-cell{line-height:1.55}.wf-flow-ln{display:block}.wf-flow-ln+.wf-flow-ln{margin-top:5px;padding-top:5px;border-top:1px dashed var(--split)}.wf-flow-cell .ar{color:var(--teal);font-weight:700;margin:0 1px}#logTableBody td{vertical-align:top}.lg-flow-ln{display:block}.lg-flow-ln+.lg-flow-ln{margin-top:5px;padding-top:5px;border-top:1px dashed var(--split)}.lg-flow-ln.bad{color:var(--err)}.lg-flow-ln .ar{color:var(--teal);font-weight:700;margin:0 1px}.ld-streams{display:flex;flex-direction:column;gap:8px;margin-top:6px}.ld-stream{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--split);border-left:3px solid var(--ok);border-radius:8px;padding:8px 11px;background:var(--panel)}.ld-stream.fail{border-left-color:var(--err)}.ld-stream-n{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-soft);flex:none}.ld-stream .flow{font-family:var(--mono);font-size:12.5px;color:var(--ink)}.ld-stream .flow .ar{color:var(--teal);font-weight:700;margin:0 2px}.ld-stream-rows{margin-left:auto;font-size:11.5px;color:var(--ink-soft)}.ld-stream-err{flex-basis:100%;font-family:var(--mono);font-size:11px;color:var(--err);margin-top:2px}.wfe-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--paper);display:none;flex-direction:column;z-index:70}.wfe-overlay.open{display:flex}.wfe-top{display:flex;align-items:center;gap:12px;padding:9px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex:none;box-shadow:0 1px 4px #0000000a;z-index:2}.wfe-ic-btn{width:34px;height:34px;border:1px solid var(--line);background:var(--panel);border-radius:8px;display:grid;place-items:center;font-size:15px;color:var(--ink-soft);flex:none}.wfe-ic-btn:hover{border-color:var(--teal);color:var(--teal)}.wfe-brand{display:flex;align-items:center;gap:9px;min-width:0}.wfe-brand .bdot{width:30px;height:30px;border-radius:8px;background:#fa8c161f;color:#fa8c16;display:grid;place-items:center;font-size:15px;flex:none}.wfe-name{font-size:15px;font-weight:600;border:1px solid transparent;border-radius:7px;padding:6px 10px;width:280px;max-width:40vw;background:var(--paper);font-family:inherit;color:var(--ink)}.wfe-name:hover{border-color:var(--line)}.wfe-name:focus{outline:none;border-color:var(--teal);background:#fff;box-shadow:0 0 0 2px #0591ff1f}.wfe-spacer{margin-left:auto}.wfe-body{flex:1 1 auto;display:flex;min-height:0;position:relative}.wfe-canvas{flex:1 1 auto;border:0;border-radius:0;height:auto;min-width:0}.wfe-tools{display:flex;align-items:center;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:3px 5px}.wfe-tools .wf-tool{width:28px;height:28px;font-size:13px}.wfe-tools .zoom-level{min-width:42px}.wfe-canvas.selmode{cursor:default}.wfe-plus{position:absolute;right:-48px;top:75%;transform:translateY(-50%);width:22px;height:22px;border-radius:6px;border:1px solid var(--teal);background:#fff;color:var(--teal);font-size:16px;font-weight:600;line-height:1;display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 6px #1677ff38;padding:0;z-index:5;opacity:0;pointer-events:none;transition:opacity .14s}.wfe-plus:before{content:"";position:absolute;top:-13px;right:-13px;bottom:-13px;left:-13px}.wfe-plus:after{content:"";position:absolute;right:100%;left:auto;top:50%;transform:translateY(-50%);width:26px;height:12px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='12'%3E%3Cpath d='M1 6H24M24 6l-5-4M24 6l-5 4' fill='none' stroke='%231677ff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center}.wfe-plus.wfe-plus-left:after{right:auto;left:100%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='12'%3E%3Cpath d='M25 6H2M2 6l5-4M2 6l5 4' fill='none' stroke='%231677ff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center}.wf-node:hover .wfe-plus,.wf-node.wfe-active .wfe-plus,.wfe-plus.show{opacity:1;pointer-events:auto}.wfe-plus:hover{background:var(--teal);color:#fff;border-color:var(--teal)}#wfeWorld .wf-node.wfe-prompt .wfe-plus{display:none}#wfeWorld .wf-node.wfe-prompt .nm{color:#d4380d;font-weight:600}#wfeWorld .wf-node.wfe-prompt .wf-sub,#wfeWorld .wf-node.wfe-needtbl .wf-sub{color:#d4380d;white-space:normal}#wfeWorld .wf-node.wfe-needtbl{border-color:#ffd591}#wfeWorld .wf-node.api.wfe-needtbl,#wfeWorld .wf-node.src.wfe-needtbl,#wfeWorld .wf-node.dst.wfe-needtbl{width:224px;max-width:224px}#wfeWorld .wf-node.api.wfe-needtbl .wf-sub,#wfeWorld .wf-node.src.wfe-needtbl .wf-sub,#wfeWorld .wf-node.dst.wfe-needtbl .wf-sub{white-space:nowrap}#wfeWorld .wf-node.wfe-prompt .wf-ico{background:#fff2e8;color:#d4380d}.wfe-plus.wfe-plus-always{opacity:1;pointer-events:auto}.wfe-panel{position:absolute;border:1.5px dashed #c7d4e3;border-radius:14px;background:#1677ff0b;z-index:0;pointer-events:none}.wfe-panel-t{position:absolute;top:-11px;left:16px;background:var(--panel);border:1px solid #c7d4e3;border-radius:7px;padding:2px 10px;font-size:11px;font-weight:700;color:var(--ink-soft);letter-spacing:.2px;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis}.wfe-panel-rz{position:absolute;right:-5px;bottom:-5px;width:14px;height:14px;border-radius:4px;border:1.5px solid #c7d4e3;background:var(--panel);cursor:nwse-resize;pointer-events:auto;z-index:2}.wfe-panel-rz:hover{background:var(--teal);border-color:var(--teal)}.wfe-panel-map{position:absolute;top:-12px;right:14px;display:inline-flex;align-items:center;gap:5px;background:var(--panel);border:1px solid #91caff;color:#0958d9;border-radius:7px;padding:2px 10px;font-size:11px;font-weight:600;cursor:pointer;pointer-events:auto;z-index:2;box-shadow:0 1px 3px #0000000f}.wfe-panel-map:hover{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}.wfe-panel-acts{position:absolute;top:-12px;right:14px;display:flex;align-items:center;gap:6px;z-index:2;pointer-events:auto}.wfe-panel-acts .wfe-panel-map{position:static;top:auto;right:auto}.wfe-panel-del{display:inline-flex;align-items:center;background:var(--panel);border:1px solid #ffccc7;color:#cf1322;border-radius:7px;padding:2px 8px;font-size:11px;font-weight:600;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .14s;box-shadow:0 1px 3px #0000000f}.wfe-panel.hover .wfe-panel-del,.wfe-panel-acts:hover .wfe-panel-del{opacity:1;pointer-events:auto}.wfe-panel-del:hover{background:#fff1f0;border-color:#ff4d4f}.wfe-panel-notify-add{position:absolute;right:-158px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:5px;background:var(--panel);border:1px dashed #91caff;color:#0958d9;border-radius:8px;padding:4px 11px;font-size:11px;font-weight:600;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .14s;z-index:2;box-shadow:0 1px 3px #0000000f}.wfe-panel.hover .wfe-panel-notify-add{opacity:1;pointer-events:auto}.wfe-panel-notify-add:hover{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}.wfe-mapzone{position:absolute;z-index:1;pointer-events:none;border:1.4px dashed #bcd0e8;border-radius:12px;background-color:#f7faff8c;background-image:radial-gradient(circle,rgba(22,119,255,.09) 1px,transparent 1px);background-size:18px 18px}.wfe-mapzone-t{position:absolute;top:8px;left:12px;display:inline-flex;align-items:center;gap:5px;background:var(--panel);border:1px solid #91caff;color:#0958d9;border-radius:6px;padding:1px 8px;font-size:10px;font-weight:700;letter-spacing:.2px}#wfeWorld .cnode{cursor:default;-webkit-user-select:none;user-select:none}body.wfe-noselect,body.wfe-noselect *{-webkit-user-select:none!important;user-select:none!important}#wfeWorld .cnode.dragging{box-shadow:0 14px 34px #0003;z-index:6}#wfeWorld .cnode .crow.src,#wfeWorld .cnode .crow.dst{cursor:crosshair}.wfe-resp{max-height:220px;overflow:auto;background:#f6f8fb;border:1px solid #e3e9f0;border-radius:7px;padding:8px 10px;font-family:var(--mono);font-size:11px;line-height:1.45;color:#33404f;white-space:pre-wrap;word-break:break-all;margin-top:3px}.wfe-apidet{margin-top:10px;border:1px solid var(--split);border-radius:8px;padding:6px 10px;background:#fafbfc}.wfe-apidet>summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--ink);list-style:none}.wfe-apidet>summary::-webkit-details-marker{display:none}.wfe-apidet>summary:before{content:"â–¸ ";color:var(--ink-soft)}.wfe-apidet[open]>summary:before{content:"â–¾ "}.api-kv-grp{margin-top:8px}.api-kv-h{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:3px}.api-kv-line{display:flex;gap:10px;justify-content:space-between;font-size:11.5px;padding:2px 0;border-bottom:1px dashed #eef1f5}.api-kv-line .k{color:#0958d9}.api-kv-line .v{color:var(--ink-soft);word-break:break-all;text-align:right}.aj-tree{white-space:normal}.aj-obj{padding-left:13px;border-left:1px dotted #d9e1ea}.aj-ind{padding-left:13px}.aj-line{padding:1px 0}.aj-key{color:#8c8c8c}.aj-key.aj-click{color:#0958d9;cursor:pointer;font-weight:600;text-decoration:underline dotted;border-radius:3px;padding:0 2px}.aj-key.aj-click:hover{background:var(--teal-soft);color:var(--teal)}.aj-key.aj-sel{background:#fff1b8;color:#ad6800;text-decoration:none}.aj-key.aj-col{color:#0958d9;cursor:pointer;border-radius:3px;padding:0 2px}.aj-key.aj-col:hover{background:var(--teal-soft);color:var(--teal)}.aj-key.aj-col.aj-colon{background:#d9f7be;color:#389e0d;font-weight:600}.aj-val.string{color:#389e0d}.aj-val.number{color:#cf1322}.aj-val.boolean{color:#722ed1}.aj-val.null{color:#8c8c8c;font-style:italic}.aj-meta{color:#b0b8c1}.aj-cur{font-family:var(--mono);background:#e6f4ff;color:#0958d9;padding:1px 6px;border-radius:4px;font-weight:600}.aj-clear{border:0;background:none;color:#cf1322;cursor:pointer;font-size:11px;padding:0 2px}#wfeWorld .wf-node.trigger{width:192px;max-width:192px}#wfeWorld .wf-node.ok-notify,#wfeWorld .wf-node.err-notify,#wfeWorld .wf-node.all-notify{width:224px;max-width:224px}.wfe-plus.wfe-plus-left{right:auto;left:-48px}.wfe-api-info{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:7px;padding:7px 9px}#wfeWorld .wf-node.wfe-prompt{width:216px;max-width:216px}.wfe-hint{position:absolute;left:50%;bottom:14px;transform:translate(-50%);background:#fffffff2;border:1px solid var(--line);border-radius:20px;padding:6px 15px;font-size:12px;color:var(--ink-soft);box-shadow:0 4px 14px #00000014;z-index:6;white-space:nowrap}.wfe-hint b{color:var(--ink)}.wfe-inspector{position:relative;inset:auto;z-index:1;width:384px;flex:none;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0;color:var(--ink);box-shadow:-4px 0 20px #0000000d}.wfe-inspector.closed{display:none}.wfe-ins-h{display:flex;align-items:center;gap:11px;padding:14px 16px;border-bottom:1px solid var(--split);flex:none}.wfe-ins-x{margin-left:auto;width:28px;height:28px;border:1px solid var(--line);background:var(--panel);border-radius:7px;color:var(--ink-soft);font-size:13px;display:grid;place-items:center;flex:none;cursor:pointer}.wfe-ins-x:hover{border-color:var(--err);color:var(--err);background:var(--err-soft)}.wfe-ins-ic{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;font-size:17px;flex:none;background:var(--teal-soft);color:var(--teal)}.wfe-ins-ic.trigger{background:#fff7e6;color:#fa8c16}.wfe-ins-ic.ok{background:#f6ffed;color:#389e0d}.wfe-ins-ic.err{background:#fff1f0;color:#cf1322}.wfe-ins-ic.dst{background:#f6ffed;color:#389e0d}.wfe-ins-ic.api{background:#f9f0ff;color:#722ed1}.wfe-ins-ic.sql{background:#fffbe6;color:#d48806}.day-chip:disabled{opacity:.42;cursor:not-allowed}.wfe-sqlta{width:100%;font-family:var(--mono);font-size:12px;line-height:1.5;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--panel);color:var(--ink);resize:vertical;min-height:120px}.wfe-sqlta:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px var(--teal-soft)}.wfe-coltbl{border:1px solid var(--line);border-radius:8px;overflow:hidden;max-height:340px;overflow-y:auto}.wfe-colrow{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:5px 11px;border-bottom:1px solid #f0f2f5;font-size:12px}.wfe-colrow:last-child{border-bottom:0}.wfe-colrow .cn{font-family:var(--mono);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wfe-colrow .ct{font-family:var(--mono);color:var(--ink-soft);font-size:11px;flex:none}.wfe-sqlpre{margin:0;padding:9px 11px;font-family:var(--mono);font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:var(--ink);background:#fffbf2;border:1px solid #ffe58f;border-radius:8px;max-height:260px;overflow:auto}.wfe-sqlpre .kw{color:#0958d9;font-weight:600}.wfe-sqlpre .fn{color:#722ed1}.wfe-sqlpre .str{color:#389e0d}.wfe-sqlpre .com{color:#8c8c8c;font-style:italic}.wfe-ins-t{min-width:0}.wfe-ins-t b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wfe-ins-t span{font-size:11.5px;color:var(--ink-soft)}.wfe-ins-body{padding:16px;overflow:auto;flex:1 1 auto}.wfe-ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:100%;color:var(--ink-soft);text-align:center;padding:30px}.wfe-ph .big{font-size:40px;opacity:.5;line-height:1}.wfe-fld{margin-bottom:15px}.wfe-fld>label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}.wfe-fld select,.wfe-fld input[type=text],.wfe-fld input[type=time],.wfe-fld input[type=number],.wfe-fld textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-size:13.5px;font-family:inherit;background:var(--panel);color:var(--ink);transition:border-color .2s,box-shadow .2s}.wfe-fld textarea{font-family:var(--mono);font-size:12px;min-height:64px;resize:vertical}.wfe-fld select:hover,.wfe-fld input:hover,.wfe-fld textarea:hover{border-color:var(--teal-hover)}.wfe-fld select:focus,.wfe-fld input:focus,.wfe-fld textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.wfe-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.wfe-inline>*{flex:none}.wfe-chips{display:flex;flex-wrap:wrap;gap:6px}.wfe-chips .empty{font-size:12px;color:var(--ink-soft);font-style:italic}.wfe-sec{font-size:10.5px;font-weight:600;letter-spacing:.7px;text-transform:uppercase;color:var(--ink-soft);margin:20px 0 9px;display:flex;align-items:center;gap:8px}.wfe-sec:after{content:"";flex:1;height:1px;background:var(--split)}.wfe-mini{font-size:11.5px;color:var(--ink-soft);margin-top:7px;line-height:1.55}.wfe-prev{background:var(--teal-soft);border:1px solid #91caff;border-radius:8px;padding:9px 12px;font-size:12.5px;color:#0958d9;margin-top:4px}.wfe-prev code{font-family:var(--mono);background:#fff;border:1px solid #91caff;border-radius:5px;padding:1px 6px;font-size:11px;color:var(--teal);margin-left:4px}.wfe-btn-block{width:100%;justify-content:center;margin-top:4px}.wfe-cardrow{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:9px;padding:9px 11px;margin-bottom:8px;background:var(--panel)}.wfe-cardrow .nm{font-weight:600;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wfe-cardrow .meta{font-size:11px;color:var(--ink-soft)}.wfe-cardrow .sp{margin-left:auto;display:flex;gap:4px}.wfe-x{width:26px;height:26px;border:1px solid var(--line);background:var(--panel);border-radius:6px;color:var(--ink-soft);font-size:13px;display:grid;place-items:center;flex:none}.wfe-x:hover{border-color:var(--err);color:var(--err);background:var(--err-soft)}.wfe-note{font-size:11.5px;border-radius:8px;padding:9px 11px;line-height:1.5;margin-top:8px}.wfe-note.warn{background:#fffbe6;border:1px solid #ffe58f;color:#ad6800}.wfe-note.ok{background:var(--ok-soft);border:1px solid #b7eb8f;color:#389e0d}.wfe-msg-prev{white-space:pre-wrap;font-size:11.5px;line-height:1.5;background:#f6f8fb;border:1px solid #e3e9f0;border-radius:8px;padding:9px 11px;color:#33404f;margin-top:3px}.wfe-msg-prev.ok{background:#f6ffed;border-color:#d9f7be}.wfe-msg-prev.err{background:#fff7f6;border-color:#ffd6d2}.wfe-map{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:none;place-items:center;z-index:95;padding:20px}.wfe-map.open{display:grid}.crow .cs{font-family:var(--mono);font-size:9.5px;color:#08979c;background:#e6fffb;border:1px solid #b5f5ec;border-radius:4px;padding:0 5px;margin-left:8px;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none}.crow.dst .cs{order:5}.cnode.sample{width:auto}@media (max-width:880px){.wfe-inspector{width:300px}.wfe-name{width:160px}}.api-method{display:inline-block;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.3px;padding:2px 8px;border-radius:5px;border:1px solid var(--line);color:var(--ink-soft);background:#f6f8fb}.api-method.get{color:#0958d9;border-color:#91caff;background:#e6f4ff}.api-method.post{color:#389e0d;border-color:#b7eb8f;background:#f6ffed}.api-method.put{color:#d46b08;border-color:#ffd591;background:#fff7e6}.api-method.patch{color:#7546c9;border-color:#d3adf7;background:#f9f0ff}.api-method.delete{color:#cf1322;border-color:#ffa39e;background:#fff1f0}.wf-node.wf-expand{flex-direction:column;align-items:stretch;width:188px;padding:0;gap:0}.wf-node.wf-expand .wf-row1{display:flex;align-items:center;gap:8px;padding:9px 10px}.wf-node.wf-expand .wf-cols{border-top:1px solid #eef1f5;background:#fbfcfe;padding:4px 0;border-radius:0 0 10px 10px}.wf-node.wf-expand .wf-col{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:3px 11px;font-size:10.5px;line-height:1.4}.wf-node.wf-expand .wf-col.mapped{background:var(--teal-soft)}.wf-node.wf-expand .wf-col.mapped .cn{color:var(--teal);font-weight:600}#wfeWorld .crow.picking{background:#fff7e6;box-shadow:inset 0 0 0 1.5px #fa8c16}.wf-node.wf-expand .wf-qsql{border-top:1px solid #ffe58f;background:#fffbf2;border-radius:0 0 10px 10px;overflow:hidden}.wf-node.wf-expand .wf-qsql-h{display:flex;align-items:center;gap:6px;padding:5px 10px;font-family:var(--mono);font-weight:600;font-size:11px;color:#d48806;background:#fffbe6;border-bottom:1px solid #ffe58f}.wf-node.wf-expand .wf-qsql-h .qicon{font-weight:700;flex:none}.wf-node.wf-expand .wf-qsql-h .qtag{margin-left:auto;font-family:var(--sans);font-size:9px;font-weight:700;letter-spacing:.3px;color:#d48806;background:#fff;border:1px solid #ffe58f;border-radius:4px;padding:1px 5px}.wf-node.wf-expand .wf-qsql pre{margin:0;padding:8px 10px;font-family:var(--mono);font-size:10px;line-height:1.5;white-space:pre-wrap;word-break:break-word;color:var(--ink);max-height:88px;overflow:auto}.wf-node.wf-expand .wf-qsql pre .kw{color:#0958d9;font-weight:600}.wf-node.wf-expand .wf-qsql pre .fn{color:#722ed1}.wf-node.wf-expand .wf-qsql pre .str{color:#389e0d}.wf-node.wf-expand .wf-qsql pre .com{color:#8c8c8c;font-style:italic}.wf-node.wf-expand .wf-col .cn{font-family:var(--mono);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-node.wf-expand .wf-col .ct{font-family:var(--mono);color:var(--ink-soft);font-size:9.5px;flex:none}.wf-node.wf-expand .wf-col-empty{padding:5px 11px;font-size:10.5px;color:var(--ink-soft)}.wf-node.wf-expand .wf-port{position:absolute}.tb-bar select,.tb-foot select{appearance:none;-webkit-appearance:none;-moz-appearance:none;height:34px;border:1px solid var(--line);border-radius:6px;background-color:var(--panel);color:var(--ink);font-family:inherit;font-size:13.5px;line-height:1.2;padding:0 30px 0 12px;cursor:pointer;box-shadow:0 2px #00000003;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;transition:border-color .2s,box-shadow .2s,color .2s}.tb-bar select{min-width:172px;max-width:100%}.tb-foot select{min-width:118px;height:32px}.tb-foot .pg-btn{height:32px}.tb-bar select:hover,.tb-foot select:hover{border-color:var(--teal-hover)}.tb-bar select:focus,.tb-foot select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px #0591ff1f}.tb-bar select:disabled,.tb-foot select:disabled{background-color:var(--paper);color:#00000040;cursor:not-allowed;box-shadow:none}.tb-bar select:has(option[value=""]:checked){color:var(--ink-soft)}.tb-bar select option{color:var(--ink)}.tb-bar .tb-search input{height:34px}
