:root{font-family:Inter,Segoe UI,Malgun Gothic,sans-serif;color:#20304c;background:#f3f6fb;font-size:13px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{border:1px solid #d8e2ee;border-radius:7px;background:#fff;color:#38506d;padding:8px 11px;cursor:pointer}button:hover{border-color:#70a6ef}button.on,.primary{background:#1672ee!important;border-color:#1672ee;color:#fff}input,select{padding:8px;border:1px solid #d8e2ee;border-radius:6px;background:#fff;color:#30405c}header{height:54px;background:#fff;display:flex;gap:16px;align-items:center;padding:0 20px;border-bottom:1px solid #e3eaf4}header b{font-size:18px;color:#132750}header small{color:#8c9bad}.logo{color:#1479f7;font-size:29px}.grow{flex:1}.layout{display:grid;grid-template-columns:220px minmax(550px,1fr) 285px;height:calc(100vh - 54px);min-height:730px}.layout>aside{background:#fff;overflow:auto;padding:16px 12px;border-right:1px solid #e2eaf5}.layout>.right{border-left:1px solid #e2eaf5;border-right:none}.sidehead{font-weight:700;margin:5px 5px 14px}.sideitem{display:block;width:100%;text-align:left;border:0;margin-bottom:3px}.sideitem.selected{background:#e3f0ff;color:#0870eb}.filetree{font-size:12px;line-height:1.9;overflow-wrap:anywhere}.fileitem{padding-left:5px;cursor:pointer}.fileitem:hover{background:#edf5ff}hr{border:0;border-top:1px solid #e5ebf3;margin:18px 0}label{display:block;color:#5f7190;font-size:12px;margin-bottom:7px}.full{width:100%;margin:6px 0}#folder{width:100%}.hint{color:#94a1b6;font-size:11px;line-height:1.5}.stats{display:flex;gap:10px;padding:13px 12px}.stat{background:#fff;border:1px solid #e6edf5;border-radius:12px;padding:11px 16px;flex:1;min-width:100px;box-shadow:0 2px 8px #1232a008}.stat b{font-size:20px;color:#116ce8;display:block}.stat span{color:#6b7c95;font-size:11px}.toolbar{display:flex;align-items:center;gap:6px;padding:10px 12px;background:#fff;border-top:1px solid #e5ebf5;border-bottom:1px solid #e5ebf5}.toolbar strong{font-size:14px;white-space:nowrap}.toolbar button{white-space:nowrap;padding:7px}.canvasbar{display:flex;align-items:center;gap:15px;background:#fff;padding:8px 13px}.canvasbar label{margin:0;display:flex;align-items:center;gap:6px;white-space:nowrap}.canvasbar #testInput{width:260px}.canvasbar input[type=checkbox]{width:auto}#simStatus{font-size:12px;color:#6383a8}.canvaswrap{height:calc(100vh - 534px);min-height:330px;overflow:auto;background:#f8fbff}.canvas{width:1300px;height:780px;position:relative;background-image:radial-gradient(#d5e0ed 1px,transparent 1px);background-size:16px 16px}#groups,#edges,#nodes{position:absolute;top:0;right:0;bottom:0;left:0}#groups{pointer-events:none}.group{position:absolute;top:18px;height:620px;border-radius:15px;padding:15px;color:#415775;font-weight:700;font-size:14px}.group.ui{left:22px;width:300px;background:#eaf3ff}.group.api{left:340px;width:300px;background:#e7f8f1}.group.service{left:658px;width:300px;background:#fff5e7}.group.db{left:976px;width:300px;background:#fff0f2}#edges{overflow:visible;pointer-events:none}#edges path{fill:none;stroke:#94a6c0;stroke-width:2.6;pointer-events:stroke;cursor:pointer}#edges path.active{stroke:#0caa72;stroke-width:4;stroke-dasharray:12 8;animation:flow .65s linear infinite;filter:drop-shadow(0 0 3px #3ad59a)}#edges path.failed{stroke:#f04452;stroke-width:4;stroke-dasharray:7 5;animation:flow .8s linear infinite}#edges path.possible{stroke:#408dff;stroke-dasharray:7 7;animation:flow .9s linear infinite}@keyframes flow{to{stroke-dashoffset:-40}}.node{position:absolute;width:210px;min-height:69px;background:#fff;border:2px solid #c6d8ee;border-radius:11px;box-shadow:0 4px 12px #263e7217;padding:14px 16px;cursor:grab;-webkit-user-select:none;user-select:none}.node.ui{border-color:#84b6fb}.node.api{border-color:#8ad8b0}.node.service{border-color:#f5bf81}.node.db{border-color:#f9acb4}.node.selected{border-color:#116eed;box-shadow:0 0 0 4px #1576f122}.node.success{border-color:#11b87e;box-shadow:0 0 12px #12b88666}.node.running{border-color:#1878ff;animation:pulse 1s ease-in-out infinite alternate}.node.error{border-color:#f03749;background:#fff4f4;animation:pulseRed .75s ease-in-out infinite alternate}.node.disabled-target{opacity:.3}.node.valid-target{box-shadow:0 0 0 6px #20bc7440;border-color:#15aa73}.node .sub{font-size:11px;color:#8090a8;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node .type{font-size:10px;color:#8aa0bc;margin-bottom:5px;text-transform:uppercase}.port{position:absolute;top:50%;width:14px;height:14px;background:#267cf5;border:3px solid white;border-radius:50%;box-shadow:0 0 0 2px #267cf5;transform:translateY(-50%);cursor:crosshair;z-index:3}.port.in{left:-8px}.port.out{right:-8px}.statuspill{position:absolute;right:4px;top:-19px;background:#1b72ed;color:#fff;padding:3px 8px;border-radius:6px;font-size:10px}@keyframes pulse{to{box-shadow:0 0 0 8px #348cfd33,0 0 18px #1878ff77}}@keyframes pulseRed{to{box-shadow:0 0 0 9px #f0374933}}.bottom{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:9px;padding:10px 12px;height:285px}.panel{background:#fff;border:1px solid #e4ebf4;border-radius:10px;padding:12px;overflow:hidden}.panel h3{margin:0 0 11px;font-size:13px}.scroll{height:225px;overflow:auto}.logitem{border-bottom:1px solid #eef1f7;padding:8px 3px;font-size:11px;line-height:1.4}.logitem small{color:#91a0b3;margin-right:6px}.green{color:#129e72}.red{color:#df4254}.blue{color:#1474ef}.grey{color:#8998ae}.detail{margin:13px 0;padding:12px;border-radius:8px;background:#f4f8fd;overflow-wrap:anywhere}.detail strong{display:block;margin-bottom:8px}.right .rule{padding:8px 5px;border-bottom:1px solid #eef2f7;font-size:12px}.right .rule span{float:right}.ok{color:#08a26d}.bad{color:#ed4550}.warn{color:#d98b19}.right #details input{width:100%;margin:6px 0}.upload{display:block;text-align:center;background:#f3f7fe;border:1px dashed #b8ccec;border-radius:7px;padding:12px;cursor:pointer;margin-top:7px}.upload input{display:none}dialog{border:1px solid #d9e5f2;border-radius:13px;padding:25px;min-width:340px;box-shadow:0 15px 55px #142d4b44}dialog label{margin:12px 0}dialog input,dialog select{display:block;width:100%;margin-top:6px}.actions{display:flex;justify-content:flex-end;gap:7px}@media(max-width:1250px){.layout{grid-template-columns:185px minmax(450px,1fr) 230px}.toolbar,.stats{flex-wrap:wrap}.canvaswrap{height:400px}.bottom{height:300px}}.modalBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#091f4266;display:grid;place-items:center;z-index:100}.modal{background:#fff;border-radius:14px;padding:25px;width:360px;box-shadow:0 20px 70px #1235}.modal input,.modal select{width:100%;margin-top:5px}.modal .actions{margin-top:18px}.node.file{border-color:#bab5db}.node{touch-action:none}.contextDismiss{position:fixed;top:0;right:0;bottom:0;left:0;z-index:190;background:transparent}.contextMenu{position:fixed;z-index:200;width:230px;padding:7px;background:#fff;box-shadow:0 12px 32px #20385a30;border:1px solid #dfe7f2;border-radius:10px}.contextTitle{font-size:11px;color:#647895;padding:9px 10px;border-bottom:1px solid #e8edf5;margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contextMenu button{display:block;width:100%;text-align:left;border:none;background:transparent;border-radius:6px;color:#263e60;padding:10px;font-size:12px}.contextMenu button:hover{background:#e7f1ff;color:#1466d5}.canvas{overflow:visible}.group{border:1px solid #ffffffaa}.node:hover{filter:brightness(.99);box-shadow:0 6px 17px #2f5d9633}.port:hover{box-shadow:0 0 0 6px #297ef640}#edges path:hover{stroke-width:7;filter:drop-shadow(0 0 5px #2675ec88)}.stats .stat{min-height:70px;box-shadow:0 3px 14px #1737650b}button:focus-visible{outline:2px solid #2e83f6;outline-offset:2px}:root{font-family:Inter,Pretendard,Segoe UI,Malgun Gothic,sans-serif;color:#152747;background:#f4f7fc}header{height:62px;padding:0 24px;gap:14px}.logo{display:grid;place-items:center;background:linear-gradient(135deg,#18a1ff,#1257e9);color:#fff;width:37px;height:37px;border-radius:11px;font-size:28px;box-shadow:0 5px 12px #2570e833}header b{font-size:19px}header small{color:#94a4bf;font-weight:600}.globalSearch{width:min(360px,27vw);background:#f8faff}.headerProject{background:#eef4ff;color:#326cce;border-radius:18px;padding:7px 12px;font-size:12px}.layout{height:calc(100vh - 62px);grid-template-columns:238px minmax(640px,1fr) 305px}.layout>aside{padding:20px 14px}.layout>.right{padding:18px 16px}.sidehead{color:#19385f;font-size:13px}.sidePlus{float:right;color:#487eca}.projectLabel{padding:12px 11px;border:1px solid #d7e4f7;border-radius:9px;background:linear-gradient(180deg,#fff,#f7faff);font-weight:700;margin-bottom:16px}.sideitem{padding:12px 13px;border-radius:9px;color:#345073;font-weight:600}.sideitem.selected{color:#0769e9;border-left:3px solid #1674f3;background:#e8f1ff}.tree{font-size:12px}.treefolder,.treefile{border:none;display:flex;align-items:center;gap:8px;width:100%;padding:8px 6px;text-align:left;font-size:12px;color:#263e63}.treefolder{font-weight:700}.treefolder small{margin-left:auto;color:#9caac0}.foldericon{color:#589bea}.treechildren{margin-left:17px;border-left:1px solid #e0e7f2;padding-left:8px}.treefile{border-radius:6px;color:#426082}.treefile.active{background:#e6f0ff;color:#126cec;font-weight:700}.treeicon{font-size:17px}.treeicon.ui{color:#24a8f5}.treeicon.api{color:#0dba88}.treeicon.service{color:#f59b35}.treeicon.db{color:#f24e65}main{min-width:0}.stats{padding:14px;gap:9px}.stat{min-width:0;position:relative;min-height:82px;padding:14px 12px 12px 57px}.stat span:not(.statIcon){color:#304b75;font-weight:700}.stat .statIcon{position:absolute;left:12px;top:18px;display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:#e7f1ff;color:#1972e9;font-size:20px}.stat:nth-child(2) .statIcon{background:#f1eaff;color:#8449e5}.stat:nth-child(3) .statIcon{background:#e2f8ef;color:#04a873}.stat:nth-child(4) .statIcon{background:#fff0e8;color:#e86628}.stat:nth-child(6) .statIcon{background:#ffebf5;color:#d94789}.stat:nth-child(7) .statIcon{background:#fff0f0;color:#e9404b}.stat:nth-child(7) b{color:#ed3f4e}.toolbar,.canvasbar{margin:0 14px;background:#fff}.toolbar{border:1px solid #e8eef8;border-radius:13px 13px 0 0;padding:12px}.toolbar strong{font-size:16px;color:#183252}.canvasbar{border-left:1px solid #e8eef8;border-right:1px solid #e8eef8}.canvaswrap{margin:0 14px;border:1px solid #e8eef8;border-top:none;border-radius:0 0 13px 13px;background:#fff;height:calc(100vh - 569px);min-height:355px}.canvas{background-color:#fdfefe}.group{border:1px solid #fff!important;top:12px;padding:15px 12px;font-size:15px}.group.ui{background:linear-gradient(135deg,#e6f2ff,#f5f9ff)}.group.api{background:linear-gradient(135deg,#e5f9f0,#f6fefb)}.group.service{background:linear-gradient(135deg,#fff1de,#fffbf3)}.group.db{background:linear-gradient(135deg,#ffebf0,#fff8f9)}.groupGlyph{margin-right:7px;font-size:19px}.node{display:flex;align-items:center;gap:11px;width:210px;min-height:82px;padding:12px 14px;border-width:1.5px;border-radius:12px;box-shadow:0 5px 16px #193d721c}.node .nodeglyph{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:13px;background:#e9f2ff;color:#147afa;font-size:25px}.node.api .nodeglyph{background:#e6f8ef;color:#0ba96f}.node.service .nodeglyph{background:#fff0df;color:#e98815}.node.db .nodeglyph{background:#ffe8ed;color:#e93a56}.nodetext{min-width:0}.node .type{font-size:10px;color:#8c9eb7;margin-bottom:4px}.node b{font-size:13px;color:#1b3353}.node .sub{font-size:10px}.bottom{padding:12px 14px;gap:12px}.panel{border-radius:13px;padding:15px}.panel h3{font-size:14px;color:#152f51}.right .detail{border:1px solid #eaf0f8}.contextMenu{min-width:245px;border-color:#c9dcf4;box-shadow:0 16px 42px #12365d42}.contextMenu button:hover{background:#e8f2ff}.port{width:15px;height:15px}#edges path{stroke-width:3;pointer-events:stroke!important}#edges path:hover{stroke-width:9}#edges path{pointer-events:stroke}@media(max-width:1380px){.layout{grid-template-columns:195px minmax(560px,1fr) 245px}.stat{padding-left:12px}.stat .statIcon{display:none}header small{display:none}.toolbar{flex-wrap:wrap}.canvaswrap{height:380px}}#nodes{pointer-events:none}#nodes .node{pointer-events:auto}#edges{pointer-events:none}#edges path{pointer-events:stroke!important;stroke-linecap:round}#edges{pointer-events:auto!important;overflow:visible}#edges .edgeGroup{pointer-events:auto}#edges .edgeHit{fill:none;stroke:transparent!important;stroke-width:20!important;pointer-events:stroke!important;cursor:context-menu;filter:none!important}#edges .edgeHit:hover{stroke:#4a95fc45!important}.contextMenu{z-index:1000!important;min-width:242px;padding:9px;border:1px solid #d5e3fa;box-shadow:0 20px 55px #11376936}.contextMenu button:hover{background:#e9f2ff;color:#0660d4}.toolbarHint{font-size:11px;color:#70849c;margin-left:10px}.tree{margin-top:5px}.treefolder,.treefile{display:flex!important;align-items:center;gap:7px;width:100%;text-align:left;min-height:28px;border:0;border-radius:5px;background:transparent;font-size:12px;overflow:hidden;white-space:nowrap;padding-top:5px;padding-bottom:5px}.treefolder .caret{font-size:12px;color:#637a9b}.treefolder .foldericon{color:#599ce7}.treefolder small{margin-left:auto;color:#8fa5c2}.treefile.active{background:#e4efff!important;color:#176bdf!important;font-weight:700}.treefile .treeicon{font-size:14px;min-width:17px;text-align:center}.treefolder:hover,.treefile:hover{background:#eaf2ff}header{background:#fff!important;border-bottom:1px solid #e3eaf3!important}.layout{background:#f4f7fc}.stat{background:#fff;box-shadow:0 3px 16px #193d720b;border:1px solid #eaf0f8}.canvas{background-color:#fff!important;background-image:radial-gradient(#ced9e9 .8px,transparent .8px)!important;background-size:17px 17px!important}.group{border-radius:17px!important}.node{background:#fff!important;box-shadow:0 6px 17px #1b407d24!important}.node.selected{box-shadow:0 0 0 3px #1b7aff36,0 7px 19px #2563eb27!important}#edges path.active{animation:edgePulse 1.15s linear infinite;stroke:#10ac82!important;stroke-dasharray:10 7}#edges path.failed{stroke:#eb465c!important;stroke-dasharray:8 7;animation:edgePulse .8s linear infinite}@keyframes edgePulse{to{stroke-dashoffset:-34}}@media(max-width:1400px){.toolbarHint{display:none}}.canvas{isolation:isolate}#groups{z-index:0}#edges{z-index:1;pointer-events:none!important}#edges .edgeGroup{pointer-events:none!important}#edges .edgeHit{pointer-events:stroke!important;stroke:transparent!important;stroke-width:18px!important}#edges .edgeGroup>path:not(.edgeHit){pointer-events:none!important}#nodes{z-index:2;pointer-events:none!important}.contextMenu{max-height:min(70vh,460px);overflow-y:auto;min-width:250px;border-radius:12px;padding:8px;background:#fff;box-shadow:0 15px 45px #18345a36}.contextMenu button{min-height:39px;font-weight:600}.treefolder{background:transparent!important;color:#304966}.treefolder:hover{background:#edf5ff!important}.treefile{background:transparent!important}.treefile.active{background:#e7f1ff!important}.canvaswrap{min-height:440px}.node .type{font-weight:700;letter-spacing:.035em}.node.ui .type{color:#2876d9}.node.api .type{color:#069a75}.node.service .type{color:#d57a12}.node.db .type{color:#d44965}.node:hover{z-index:3;transform:translateY(-1px)}.stat{transition:box-shadow .2s ease}.stat:hover{box-shadow:0 6px 20px #12366516}@media(max-width:1450px){.layout{grid-template-columns:205px minmax(570px,1fr) 260px}.toolbar button{padding:6px 8px}.canvaswrap{min-height:440px}}#edges,#edges .edgeGroup{pointer-events:none!important}#edges .edgeHit{pointer-events:stroke!important;stroke:transparent!important;stroke-width:24px!important}#nodes{pointer-events:none!important}#nodes .node{pointer-events:auto!important}.contextMenu{z-index:2100!important}#edges .edgeGroup.edge-selected>path:not(.edgeHit){stroke:#136bff!important;stroke-width:4!important;filter:drop-shadow(0 0 4px #2e7bff9c)}#edges .edgeGroup.edge-selected .edgeHit{stroke:#1b78ff23!important;stroke-width:24px!important}#nodes .node.selected{outline:2px solid #1679ff;outline-offset:3px;box-shadow:0 0 0 6px #3187ff30,0 7px 20px #2963dd38!important}.nodeglyph svg,.groupGlyph svg{width:21px;height:21px}.sidePlus{cursor:pointer;color:#146ffa;border:0;background:transparent;padding:2px 6px;font-size:18px}.projectSwitch{width:100%;margin:7px 0;padding:7px;border:1px solid #d8e3f4;background:#fff;border-radius:7px}.projectImport{display:block;cursor:pointer;border:1px solid #c4d9f7;color:#175aba;text-align:center;padding:8px;border-radius:7px;margin:5px 0 12px}.projectImport input{display:none}.edgeSelectionDetail{border:1px solid #91baff;background:#eff6ff;border-radius:8px;padding:12px}.edgeSelectionDetail button{margin-top:8px}.node{cursor:grab;-webkit-user-select:none;user-select:none}.node:active{cursor:grabbing}.node .port{cursor:crosshair}.editorSplit{display:flex;min-width:0;gap:10px;align-items:stretch;position:relative}.editorSplit>.canvaswrap{flex:1 1 auto;min-width:0;overflow:auto}.graphInspector{flex:0 0 302px;width:302px;min-width:0;background:#fff;border:1px solid #d9e3f2;border-radius:11px;box-shadow:0 3px 18px #12366516;display:flex;flex-direction:column;max-height:550px;color:#243955}.inspectorHeading{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #e7edf6;background:#f4f8ff}.inspectorHeading button,.graphInspector h4 button{border:0;background:#e6f0ff;color:#176bd2;border-radius:6px;cursor:pointer}.inspectorContents{overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.inspectorContents>label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600}.inspectorContents input:not([type=checkbox]),.inspectorContents select,.inspectorContents textarea{box-sizing:border-box;width:100%;border:1px solid #cedbed;border-radius:6px;padding:7px;font-size:12px;background:#fff;color:#233c5d}.graphInspector h4{font-size:12px;margin:8px 0 2px;display:flex;justify-content:space-between;align-items:center}.inspectorField,.mappingRow{display:flex;gap:4px;align-items:center;flex-wrap:wrap;background:#f8faff;padding:6px;border-radius:7px}.inspectorField>input{flex:1 1 100%}.inspectorField>select{flex:1 1 90px}.inlineCheck{display:flex;gap:3px;align-items:center;font-size:11px;white-space:nowrap}.inspectorField>button,.mappingRow>button{border:0;color:#ce4157;background:transparent;cursor:pointer}.mappingRow>input{flex:1 1 88px;min-width:0;width:88px!important}.mappingRow>span{font-size:12px}.inspectorHint{font-size:11px;color:#70819b;line-height:1.5}.inspectorRoute{background:#eef5ff;border-radius:7px;padding:10px;font-size:12px;font-weight:700}@media(max-width:1100px){.editorSplit{flex-direction:column}.graphInspector{width:auto;flex-basis:auto;max-height:320px}}.canvaswrap.pan-ready,.canvaswrap.pan-ready *{cursor:grab!important;-webkit-user-select:none!important;user-select:none!important}.canvaswrap.pan-ready:active,.canvaswrap.pan-ready:active *{cursor:grabbing!important}.canvaswrap{position:relative;overflow:hidden!important;touch-action:none}.canvas{position:relative;overflow:visible}.canvasActions{position:absolute;top:4px;right:6px;z-index:9;background:#fff;display:flex;gap:4px;border:1px solid #dbe4f0;border-radius:6px;padding:4px}.customCanvas{position:absolute;border:2px dashed #547fcb;border-radius:12px;background:#c0d7ff29;z-index:1;cursor:move;box-sizing:border-box}.customCanvas.canvasSelected{border-color:#1265ff;box-shadow:0 0 0 3px #1265ff30}.customCanvasTitle{padding:8px;font-weight:700;color:#28518e}.canvasResize{position:absolute;bottom:5px;right:5px;display:flex;flex-direction:column;width:75px}.canvasResize input{width:75px}.loadOverlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0005;display:flex;align-items:center;justify-content:center;z-index:10000}.loadDialog{background:#fff;padding:24px;border-radius:12px;min-width:320px;display:flex;flex-direction:column;gap:10px;box-shadow:0 12px 40px #0003}.loadDialog progress{width:100%;height:16px}.layout{grid-template-columns:238px minmax(0,1fr) 305px!important;height:calc(100vh - 62px)}.layout.left-collapsed{grid-template-columns:40px minmax(0,1fr) 305px!important}.layout.right-collapsed{grid-template-columns:238px minmax(0,1fr) 40px!important}.layout.left-collapsed.right-collapsed{grid-template-columns:40px minmax(0,1fr) 40px!important}.layout>main{display:flex;flex-direction:column;min-height:0;overflow:hidden}.layout>aside{position:relative;min-width:0}.collapseControl{position:sticky;top:0;z-index:5;float:right;padding:3px 7px;margin:-9px -7px 8px 5px;background:#eaf2ff;color:#175bd0}.left-collapsed .projectSidebar,.right-collapsed .right{padding:12px 6px!important;overflow:hidden}.left-collapsed .projectSidebar .sidebarBody,.right-collapsed .right .sidebarBody{display:none}.left-collapsed .collapseControl,.right-collapsed .collapseControl{float:none;margin:0;padding:6px;width:28px}.editorSplit{flex:1;min-height:150px}.canvaswrap{height:100%!important;min-height:0!important;overflow:auto}.footerBar{display:flex;justify-content:center;background:#f4f7fc;flex:0 0 29px}.footerBar button{padding:3px 12px;font-size:11px}.bottom{height:245px;flex:0 0 245px;min-height:0}.bottom .scroll{height:180px}.group{pointer-events:none!important;padding:0!important;overflow:visible;border:1px solid #c4d8ed!important}.group .areaTitle{height:42px;display:flex;align-items:center;gap:8px;padding:0 13px;pointer-events:auto;cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:12px 12px 0 0}.group.areaSelected{outline:2px solid #1879f5;outline-offset:2px}.group .areaMoveHint{margin-left:auto;opacity:.6}.group .areaResizeCorner{pointer-events:auto;position:absolute;bottom:2px;right:2px;cursor:nwse-resize;touch-action:none;color:#2864b0;padding:6px}.areaProperties{padding:10px;background:#f2f7ff;border-radius:9px;margin-bottom:15px}.areaProperties input{display:block;width:100%}.areaProperties label{margin-top:8px}.areaProperties small{font-size:11px;color:#69809c}.canvasActions{z-index:10}.layout .right{overflow:auto}.editorSplit>.canvaswrap{flex:1;min-width:0;max-width:100%;margin:0 0 0 14px!important}.editorSplit>.graphInspector{margin-right:14px}.canvaswrap{overflow:hidden!important}.areaTitle:hover{background:#ffffff45}.group .areaResizeCorner:hover{color:#0e55e5;background:#fff8;border-radius:7px}.node:has(.nestedViews){height:auto;min-height:150px;z-index:4}.nestedViews{display:flex;flex-direction:column;gap:6px;margin:8px 13px 9px;padding-top:7px;border-top:1px solid #d8e4f4}.nestedViewNode{display:flex;align-items:center;gap:5px;padding:6px;background:#f8fbff;border:1px solid #b7d6ff;border-radius:6px;color:#16488d;font-size:11px;text-align:left;cursor:pointer;flex-wrap:wrap}.nestedViewNode svg{width:13px;height:13px}.nestedViewNode small{width:100%;color:#6b7a94;padding-left:18px}.nestedViewNode:hover,.nestedViewNode:focus-visible{border-color:#1976ee;background:#ebf4ff;outline:1px solid #1976ee}#nodes .node:has(~.node){box-sizing:border-box}#nodes .node:has(.nestedViews){height:auto}#nodes .node[style*="z-index: 3"]{display:block;padding:12px 14px;overflow:visible;background:#f0f6ff!important;border:2px solid #76a9ed}#nodes .node[style*="z-index: 3"]>.nodeglyph{display:inline-flex;vertical-align:middle}#nodes .node[style*="z-index: 3"]>.nodetext{display:inline-block;vertical-align:middle;max-width:calc(100% - 65px)}#nodes .node[style*="z-index: 5"]{padding:6px 9px;min-height:55px;box-shadow:0 2px 7px #193d721c!important}#nodes .node[style*="z-index: 5"] .nodeglyph{width:24px;height:24px;flex-basis:24px}#nodes .node[style*="z-index: 5"] .sub{display:none}.nodeDimensions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;border-radius:8px;background:#f3f7ff;margin:8px 0}.nodeDimensions strong,.nodeDimensions small{grid-column:1/-1}.nodeDimensions input{width:100%}.nodeResizeGrip{position:absolute;bottom:3px;right:3px;width:17px;height:18px;cursor:nwse-resize;color:#2874db;font-size:14px;z-index:7;touch-action:none;opacity:.25;text-align:center}.node:hover .nodeResizeGrip,.node.selected .nodeResizeGrip{opacity:1}#nodes .node{box-sizing:border-box;overflow:visible}#nodes .node[style*="z-index: 3"]>.port{z-index:6}.canvas #edges{z-index:8!important;pointer-events:none!important;overflow:visible}.canvas #edges .edgeGroup{pointer-events:none!important}.canvas #edges .edgeHit{pointer-events:stroke!important;stroke:transparent!important;stroke-width:18px!important}.canvas #nodes{z-index:4!important;pointer-events:none!important}.canvas #nodes .node{pointer-events:auto!important}.canvas #nodes .node .port{z-index:10!important}#nodes .node[style*="z-index: 3"]{display:block!important;padding:12px 14px!important}#nodes .node[style*="z-index: 3"]>.nodeglyph{position:absolute!important;left:12px;top:10px;display:flex!important;align-items:center;justify-content:center}#nodes .node[style*="z-index: 3"]>.nodetext{position:absolute!important;left:48px;right:12px;top:9px;display:block!important;max-width:none!important;margin:0!important;pointer-events:none}#nodes .node[style*="z-index: 3"]>.nodetext .sub{display:none}#nodes .node[style*="z-index: 3"]>.nodeglyph{z-index:6!important;top:8px!important}#nodes .node[style*="z-index: 3"]>.nodetext{z-index:6!important;top:8px!important;min-height:34px;background:#f0f6ff;border-radius:5px;padding:2px 4px}#nodes .node[style*="z-index: 3"]>.nodetext b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}#nodes .node.has-children{display:block!important;padding:0!important;min-height:120px}#nodes .node.has-children>.nodeglyph{position:absolute!important;top:9px!important;left:12px!important;z-index:7!important;width:32px!important;height:32px!important;display:flex!important;align-items:center;justify-content:center}#nodes .node.has-children>.nodetext{position:absolute!important;top:8px!important;left:50px!important;right:12px!important;width:auto!important;max-width:none!important;min-height:38px!important;display:block!important;padding:2px 4px!important;margin:0!important;border-radius:5px;background:#f0f6ff!important;z-index:7!important;pointer-events:none}#nodes .node.has-children>.nodetext b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#nodes .node.has-children>.nodetext .sub{display:none!important}#nodes .node.has-children>.port{top:50%}.sqlInspector{min-width:0;margin-top:12px}.sqlQueryText{width:100%;min-height:180px;max-width:100%;box-sizing:border-box;resize:vertical;white-space:pre;overflow:auto;font:12px/1.5 Consolas,monospace}.canvas #edges .edgeGroup>path.edgeBase.trace-live,.canvas #edges .edgeGroup.edge-selected>path.edgeBase.trace-live{fill:none!important;stroke:var(--trace-edge-color,#2563eb)!important;stroke-width:5.5px!important;stroke-dasharray:11 8!important;stroke-linecap:round!important;stroke-linejoin:round!important;opacity:1!important;filter:drop-shadow(0 0 2px var(--trace-edge-color,#2563eb))!important;animation:vcsTraceFlow1040 .65s linear infinite!important}.canvas #edges .edgeGroup>path.edgeBase.trace-live.trace-current{stroke-width:6.5px!important}@keyframes vcsTraceFlow1040{0%{stroke-dashoffset:0}to{stroke-dashoffset:-38}}.canvas #nodes .node.node-trace-colored{border-color:var(--trace-color,#2563eb)!important;box-shadow:0 0 0 3px var(--trace-color,#2563eb)!important}@media(prefers-reduced-motion:reduce){.canvas #edges .edgeGroup>path.edgeBase.trace-live{animation:none!important}}.traceSequence{position:sticky;top:8px;left:8px;z-index:50;display:flex;align-items:center;gap:7px;max-width:min(100%,1150px);width:max-content;overflow-x:auto;white-space:nowrap;padding:7px 10px;border:1px solid #d9e3f1;border-radius:8px;background:#fffffff2;box-shadow:0 3px 14px #1e293b1b;font-size:12px;pointer-events:auto}.traceSequence strong{flex-shrink:0;margin-right:5px;color:#334155}.traceStage{display:flex;gap:5px;align-items:center;border:1px solid;border-radius:6px;padding:4px 7px;opacity:.55;flex-shrink:0;max-width:220px;overflow:hidden;text-overflow:ellipsis;transition:opacity .25s,background .25s}.traceStage.current{opacity:1;background:#eff6ff;font-weight:700}.traceStage.passed{opacity:.85}.traceStage i{display:inline-block;width:8px;height:8px;flex-shrink:0;border-radius:50%}.traceSequence{position:relative;top:auto;left:auto;z-index:2;max-width:100%;width:100%;min-height:36px;margin:0 0 5px;box-shadow:none;border-radius:6px;overflow-x:auto;flex-shrink:0}.canvaswrap{position:relative}.graphHoverTooltip{position:absolute;z-index:100;pointer-events:none;max-width:325px;min-width:175px;padding:10px 12px;border:1px solid #b9c9de;border-radius:9px;background:#fff;color:#26364e;box-shadow:0 8px 28px #243e652c;font-size:12px;line-height:1.55;overflow-wrap:anywhere;white-space:pre-wrap}.graphHoverTooltip strong{display:block;color:#124b93;font-size:13px;margin-bottom:5px}.graphHoverTooltip div{margin-top:3px}.agentPanel{padding:12px;display:flex;flex-direction:column;gap:9px;border:1px solid #55738d;border-radius:8px;margin:6px;background:#4361801f}.agentPanel input,.agentPanel select{max-width:100%;width:100%;box-sizing:border-box}.agentPanel small{font-size:11px;line-height:1.5}.layout>main>.toolbar{display:flex;flex-wrap:wrap;align-items:center;align-content:center;column-gap:6px;row-gap:8px;min-width:0;height:auto;flex:0 0 auto}.layout>main>.toolbar>strong,.layout>main>.toolbar>.toolbarHint,.layout>main>.toolbar>button{flex-shrink:0}.layout>main>.toolbar>.toolbarHint{white-space:nowrap;overflow-wrap:normal}.layout>main>.toolbar>.grow{flex:1 1 10px;min-width:0}.layout>main>.canvasbar{flex:0 0 auto;min-width:0;flex-wrap:wrap;row-gap:6px}.layout>main>.canvasbar label{min-width:0}.layout>main>.canvasbar #testInput{max-width:min(260px,35vw)}@media(max-width:1800px){.layout>main>.toolbar>.toolbarHint{display:none}}@media(max-width:1050px){.layout>main>.toolbar>strong{flex-basis:100%}}.headerAgentDownload,.agentDownload{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid #bcd5fe;border-radius:8px;padding:7px 10px;background:#eff6ff;color:#1d4ed8;text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap;flex-shrink:0}.headerAgentDownload:hover,.agentDownload:hover{background:#dbeafe}.agentDownload{width:100%;box-sizing:border-box;margin:7px 0}@media(max-width:1100px){.headerAgentDownload{font-size:0;padding:8px}.headerAgentDownload:after{content:"에이전트 ↓";font-size:12px}}.agentModalBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;background:#091b397a;display:flex;align-items:center;justify-content:center;padding:18px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.agentModal{width:min(580px,100%);max-height:min(780px,calc(100dvh - 36px));display:flex;flex-direction:column;min-height:0;background:#fff;border:1px solid #dbe6f5;border-radius:16px;box-shadow:0 22px 85px #0a27504b;overflow:hidden}.agentModalHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 14px;border-bottom:1px solid #e8eef7;flex-shrink:0}.agentModalHeader h2{font-size:18px;color:#15355d;margin:0 0 7px}.agentModalHeader p{font-size:12px;color:#7186a3;margin:0}.agentModalClose{width:32px;height:32px;padding:0;flex:none;font-size:17px}.agentModalBody{min-height:0;overflow-y:auto;padding:8px 24px 20px;overscroll-behavior:contain}.agentModalStep{display:flex;align-items:center;gap:9px;margin:17px 0 11px;color:#254767;font-size:13px}.agentModalStep span{display:grid;place-items:center;width:23px;height:23px;background:#e5efff;border-radius:50%;color:#1864d3;font-weight:800}.agentModalIntro{display:flex;flex-direction:column;gap:6px}.agentModalIntro small,.agentModalHelp{font-size:12px;line-height:1.55;color:#6d819b;margin:0}.agentModalIntro .agentDownload{margin:0 0 4px;max-width:100%}.agentModalFields{display:grid;grid-template-columns:1fr;gap:9px}.agentModalFields label,.agentModalProject label{display:block;margin:0;font-weight:600}.agentModalFields input,.agentModalProject select{display:block;margin-top:6px;width:100%;min-width:0}.agentModalActions{margin-top:10px}.agentModalActions button{width:100%}.agentModalProject{display:flex;flex-direction:column;gap:9px}.agentModalProject>button{width:100%;min-height:38px}.agentModalProject>.full{margin:0}.agentModalFooter{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 24px;border-top:1px solid #e8eef7;background:#f8fbff;flex-shrink:0}.agentModalFooter span{font-size:11px;color:#607b99;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agentModalFooter button{flex-shrink:0}:root{scrollbar-width:thin;scrollbar-color:#a9bed9 #edf2f9}.projectSidebar,.right,.sidebarBody,.tree,.filetree,.scroll,.canvaswrap,.agentModalBody,#details{scrollbar-width:thin;scrollbar-color:#a9bed9 #edf2f9}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#edf2f9;border-radius:12px}::-webkit-scrollbar-thumb{background:#a9bed9;border:2px solid #edf2f9;border-radius:12px}::-webkit-scrollbar-thumb:hover{background:#718eaf}::-webkit-scrollbar-corner{background:#edf2f9}@media(max-width:640px){.agentModalBackdrop{padding:8px}.agentModal{max-height:calc(100dvh - 16px)}.agentModalHeader{padding:16px}.agentModalBody{padding:8px 16px 16px}.agentModalFooter{padding:10px 16px}}.agentConnectionStatus{font-size:12px;padding:9px 11px;border-radius:8px;background:#f2f6fb;color:#32527a;overflow-wrap:anywhere;margin:8px 0}header .ravionyxBrand{display:inline-flex;align-items:center;gap:7px;flex:none;min-width:0;white-space:nowrap}header .ravionyxSymbol{display:block;width:38px;height:38px;object-fit:contain;flex:none}header .ravionyxWordmark{display:block;width:130px;height:37px;object-fit:contain;flex:none}header .productTitle{white-space:nowrap;flex:none;font-size:15px}@media(max-width:1500px){header .ravionyxWordmark{width:112px}header .productTitle{font-size:13px}header .ravionyxBrand{gap:5px}}@media(max-width:1160px){header .ravionyxWordmark{width:110px}header>small{display:none}}@media(max-width:850px){header .ravionyxSymbol{width:32px;height:32px}header .ravionyxWordmark{width:92px}}.agentConnectButton{display:flex;width:100%;align-items:center;gap:8px;text-align:left;margin:10px 0 12px;padding:11px 12px;border:1px solid #1c68e4;border-radius:10px;background:linear-gradient(110deg,#1769df,#338cf6);color:#fff;box-shadow:0 4px 11px #2069df24;font-size:12px;font-weight:750;white-space:nowrap}.agentConnectButton span:first-child{font-size:18px;line-height:1}.agentConnectButton span:nth-child(2){flex:1}.agentConnectButton:hover,.agentConnectButton:focus-visible{background:linear-gradient(110deg,#0f55c6,#267fe9);color:#fff;outline:2px solid #9bc5ff;outline-offset:1px}.projectSidebar .unifiedImport{width:100%;background:#eef5ff;color:#155bbb;font-weight:700;padding:10px 4px;white-space:normal;line-height:1.4}.agentImportLink{display:block;width:100%;padding:6px 0 10px;background:transparent;border:0;font-size:11px;text-align:left;color:#2b65ba;white-space:normal}.agentImportLink:hover{text-decoration:underline}.serverProjectOptions{border-top:1px solid #e4edf8;padding:9px 0}.serverProjectOptions summary{font-size:11px;color:#71849f;cursor:pointer;margin-bottom:8px}.serverProjectOptions input{width:100%;min-width:0}.modeExplanation{display:inline-flex;align-items:center;font-size:11px;line-height:1.3;color:#3d699b;max-width:275px;white-space:normal;flex:0 1 245px}.pptExportButton{border-color:#9bc8ed;color:#1358a4;background:#eef7ff;font-weight:700}.pptExportButton:hover{background:#dfefff}@media(max-width:1500px){.modeExplanation{flex-basis:100%;max-width:none;order:20}}.crossFileConnections{display:flex;flex-direction:column;gap:9px;padding:12px 9px;margin:10px 0;background:#f6f9fe;border:1px solid #dce8f8;border-radius:9px;min-width:0}.crossFileConnections>strong{font-size:12px;color:#1f4475}.crossFileConnections>small{font-size:10px;color:#667e9b}.crossFileConnectionGroup{display:flex;flex-direction:column;gap:5px;max-height:240px;overflow:auto;min-width:0}.crossFileConnectionGroup>b{font-size:11px;color:#24496e;position:sticky;top:0;background:#f6f9fe;padding-bottom:3px;z-index:1}.crossFileConnectionGroup>small{font-size:11px;color:#7890ae}.crossFileConnectionItem{display:flex;flex-direction:column;align-items:stretch;gap:3px;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere;padding:7px 8px;border:1px solid #dce6f3;background:#fff;color:#20416d;border-radius:6px}.crossFileConnectionItem:hover,.crossFileConnectionItem:focus-visible{background:#e8f1ff;border-color:#75a7f5;outline:1px solid #9fc2ff}.crossFileConnectionItem span{font-weight:650;font-size:11px}.crossFileConnectionItem small{color:#6f86a0;font-size:10px}.layout.resizableLayout{grid-template-columns:var(--left-panel-width,238px) minmax(0,1fr) var(--right-panel-width,305px)!important;min-height:0}.layout.resizableLayout.left-collapsed{grid-template-columns:40px minmax(0,1fr) var(--right-panel-width,305px)!important}.layout.resizableLayout.right-collapsed{grid-template-columns:var(--left-panel-width,238px) minmax(0,1fr) 40px!important}.layout.resizableLayout.left-collapsed.right-collapsed{grid-template-columns:40px minmax(0,1fr) 40px!important}.layout .projectSidebar,.layout .right{position:relative;min-width:0}.panelResizeHandle{position:absolute;z-index:50;top:0;bottom:0;width:9px;cursor:col-resize;touch-action:none;background:transparent}.panelResizeHandle:hover,.panelResizeHandle:active{background:#297cee2e}.leftResize{right:0;transform:translate(40%)}.rightResize{left:0;transform:translate(-40%)}.left-collapsed .leftResize,.right-collapsed .rightResize{display:none}.footerBar{position:relative;flex:0 0 29px}.footerResizeHandle{position:absolute;top:-6px;height:12px;left:0;right:0;cursor:row-resize;touch-action:none;z-index:25}.footerResizeHandle:hover,.footerResizeHandle:active{background:#297cee2e}.bottom{min-height:0;max-height:calc(100% - 170px)}.bottom .panel{min-height:0;display:flex;flex-direction:column}.bottom .panel .scroll{flex:1;min-height:0;height:auto}.treeNotice{font-size:11px;line-height:1.55;color:#5d789a;background:#eff5ff;border:1px solid #dce9fb;border-radius:7px;padding:8px 9px;margin-bottom:8px}.treefolder,.treefile{min-width:0;overflow:hidden;text-overflow:ellipsis}.canvas{outline:2px dashed #83a5d9;outline-offset:-3px;border-radius:6px;background-clip:padding-box}.group .areaResizeTopLeft{position:absolute;top:1px;left:1px;z-index:9;pointer-events:auto;touch-action:none;cursor:nwse-resize;padding:5px;color:#2563eb;font-weight:700;border-radius:7px}.group .areaResizeTopLeft:hover{background:#dbeafe;color:#1747a9}.tree>button{white-space:nowrap}.group .areaResizeHandle{position:absolute;z-index:12;display:flex;align-items:center;justify-content:center;width:19px;height:19px;box-sizing:border-box;border:1px solid transparent;border-radius:5px;color:#2563eb;background:#eff6ffe6;font-size:12px;font-weight:700;line-height:1;touch-action:none;-webkit-user-select:none;user-select:none;pointer-events:auto}.group .areaResizeNW{top:0;left:0;cursor:nwse-resize}.group .areaResizeNE{top:0;right:0;cursor:nesw-resize}.group .areaResizeSW{bottom:0;left:0;cursor:nesw-resize}.group .areaResizeSE{bottom:0;right:0;cursor:nwse-resize}.group .areaResizeHandle:hover{color:#1747a9;background:#dbeafe;border-color:#7aabf6}.dbRouteInspection{margin:10px 0;padding:10px;border:1px solid #dbe5f1;border-radius:10px;display:flex;flex-direction:column;gap:6px;min-width:0;background:#f8fbff}.dbRouteInspection p{margin:0;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.dbRouteInspection small{font-size:11px;color:#64748b;overflow-wrap:anywhere}.dbRouteSuccess{color:#047857}.dbRouteUnknown{color:#a16207}.workspaceTabs{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.workspaceTabs button{font-size:12px;font-weight:700;padding:7px 10px;border:1px solid #cbdcf5;border-radius:7px;background:#fff;color:#415879;cursor:pointer}.workspaceTabs button.active{background:#e5efff;border-color:#3380ea;color:#165ac9}.sourceWorkspace{flex:1;min-height:250px;display:flex;flex-direction:column;background:#fff;border:1px solid #dce5f3;border-radius:10px;margin:0 12px 10px;overflow:hidden}.sourceWorkspaceHeader{padding:12px 15px;border-bottom:1px solid #e5eaf2;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.sourceWorkspaceHeader span{font-size:12px;color:#64748b;overflow-wrap:anywhere;flex:1}.sourceWorkspaceHeader button{padding:7px 12px;border-radius:6px;border:1px solid #bfd4ef;background:#fff;cursor:pointer}.sourceLines{flex:1;min-height:0;overflow:auto;font:12px/1.6 Consolas,D2Coding,monospace;background:#fbfcff;color:#172b4d}.sourceLine{display:flex;white-space:pre;min-width:max-content}.sourceLineNumber{position:sticky;left:0;min-width:58px;text-align:right;padding-right:13px;margin-right:14px;border-right:1px solid #e0e8f5;background:#f2f5fb;color:#8292a8;-webkit-user-select:none;user-select:none}.sourceLine code{font:inherit;white-space:pre}.sourceLineActive,.sourceLineActive .sourceLineNumber{background:#fff2c6}.sourceWorkspaceInfo,.sourceWorkspaceError{padding:22px;overflow-wrap:anywhere}.sourceWorkspaceError{color:#b91c1c}.sourceFolderPicker{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
