:root{--bg:#101116;--panel:#17191f;--panel2:#1d2028;--line:#2d313b;--muted:#9298a7;--text:#f2f3f7;--purple:#9b8cff;--blue:#71a8ff;--orange:#f2a36b;--green:#76c99b;--pink:#ed83b5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input{font:inherit}button{cursor:pointer;color:inherit}.app-shell{height:100vh;min-width:980px;display:flex;flex-direction:column;background:radial-gradient(circle at 52% 20%,#1b1d26 0,#101116 46%)}.topbar{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid var(--line);background:#121318}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;min-width:250px}.brand small{font-size:9px;letter-spacing:1.2px;color:#747b8b;font-weight:600;margin-left:2px}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:#8275e8;color:white;font-size:15px}.project-name{display:flex;align-items:center;gap:8px;color:#cfd2da;font-weight:600}.status-dot{width:7px;height:7px;border-radius:50%;background:#6ed19b;box-shadow:0 0 0 3px #234b3a}.top-actions{display:flex;align-items:center;gap:9px;min-width:250px;justify-content:flex-end}.ghost-button,.primary-button,.run-button{border:1px solid var(--line);border-radius:6px;background:#20232c;padding:9px 14px;font-weight:600}.primary-button{border-color:#8c7df6;background:#8275e8;color:#fff}.icon-button{border:1px solid transparent;background:transparent;color:#aeb4c1;border-radius:5px;padding:6px 8px}.icon-button:hover,.ghost-button:hover{background:#292d38;color:#fff}.workspace{display:grid;grid-template-columns:240px minmax(520px,1fr) 285px;min-height:0;flex:1}.panel{background:var(--panel);border-right:1px solid var(--line)}.right-panel{border-right:0;border-left:1px solid var(--line)}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 18px 16px}.eyebrow{display:block;font-size:9px;letter-spacing:1.4px;color:#7c8393;font-weight:700;margin-bottom:6px}.panel h2{font-size:16px;margin:0;letter-spacing:-.2px}.node-library{padding:0 11px}.library-item{display:flex;align-items:center;width:100%;gap:10px;border:1px solid transparent;border-radius:7px;background:transparent;text-align:left;padding:11px 8px;margin-bottom:4px}.library-item:hover{background:#22252e;border-color:#303542}.library-item span:nth-child(2){display:flex;flex-direction:column;gap:3px;flex:1}.library-item b{font-size:12px}.library-item small{font-size:10px;color:var(--muted)}.library-item i{font-size:18px;color:#727988;font-style:normal}.node-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;font-weight:700;background:#292c38}.purple{color:var(--purple)}.blue{color:var(--blue)}.orange{color:var(--orange)}.green{color:var(--green)}.pink{color:var(--pink)}.left-footer{border-top:1px solid var(--line);margin-top:16px;padding:18px;display:flex;gap:12px;flex-wrap:wrap}.mini-stat{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:10px}.mini-stat b{color:#fff;font-size:17px}.hint{color:#747b8b;font-size:10px;line-height:1.5;margin-top:7px}.canvas-section{display:flex;flex-direction:column;min-width:0;background:#111319}.canvas-toolbar{height:54px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 18px;color:var(--muted)}.breadcrumbs strong{color:#d7d9e0;font-weight:600}.canvas-tools{display:flex;align-items:center;gap:5px}.canvas-tools span{font-size:11px;min-width:38px;text-align:center}.canvas{position:relative;overflow:hidden;flex:1;outline:none;cursor:grab}.canvas:active{cursor:grabbing}.canvas-grid{position:absolute;inset:-40px;background-image:linear-gradient(#252934 1px,transparent 1px),linear-gradient(90deg,#252934 1px,transparent 1px);background-size:28px 28px;opacity:.55}.connections{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.edge{fill:none;stroke:#7166c8;stroke-width:2;stroke-dasharray:5 5;opacity:.9}.node{position:absolute;width:190px;min-height:93px;background:#1a1d25;border:1px solid #373b48;border-radius:8px;box-shadow:0 12px 26px #08090d55;user-select:none}.node.selected{border-color:#9b8cff;box-shadow:0 0 0 2px #9b8cff33,0 12px 26px #08090d66}.node-head{display:flex;align-items:center;gap:8px;padding:10px 11px;border-bottom:1px solid #30343f;cursor:move}.node-head .node-icon{width:24px;height:24px;font-size:11px}.node-head b{font-size:11px;flex:1}.node-head button{padding:0 3px;background:none;border:0;color:#727989;font-size:16px}.node-body{padding:10px 11px;color:#9298a7;font-size:10px;line-height:1.45}.node-body strong{display:block;color:#e5e6eb;font-size:11px;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.port{position:absolute;width:8px;height:8px;border-radius:50%;border:2px solid #15171e;background:#9b8cff;top:43px}.port.in{left:-5px}.port.out{right:-5px}.runbar{height:60px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:#16181f}.run-status{display:flex;align-items:center;gap:8px;color:#a4aab8;font-size:11px}.run-indicator{width:7px;height:7px;border-radius:50%;background:#6ed19b}.run-indicator.busy{background:#f2b96b;animation:pulse 1s infinite}.run-indicator.error{background:#ec7272}@keyframes pulse{50%{opacity:.35}}.run-button{background:#8174e7;border-color:#9b8cff;padding:10px 17px}.run-button span{margin-right:7px}.inspector{padding:0 18px 22px}.type-badge{font-size:9px;color:#9c91ff;background:#292641;border:1px solid #4a4279;padding:4px 7px;border-radius:4px}.inspector-section{border-top:1px solid var(--line);padding:17px 0}.inspector label,.modal label{display:flex;flex-direction:column;gap:7px;color:#a3a9b7;font-size:11px;margin-bottom:15px}.inspector input,.inspector select,.inspector textarea,.modal input{width:100%;background:#111319;border:1px solid #353a47;color:#f0f1f5;border-radius:5px;padding:9px;outline:none}.inspector textarea{min-height:80px;resize:vertical;line-height:1.4}.inspector input:focus,.inspector select:focus,.inspector textarea:focus,.modal input:focus{border-color:#887bf0}.range-row{display:flex;align-items:center;justify-content:space-between}.range-row output{color:#c0b9ff}.range{width:100%;accent-color:#8b7df0}.preview{height:120px;border:1px dashed #454b59;border-radius:6px;background:linear-gradient(135deg,#20232e,#171921);display:grid;place-items:center;color:#7c8393;overflow:hidden}.preview img{width:100%;height:100%;object-fit:cover}.preview video{max-width:100%;max-height:100%}.upload{display:block;text-align:center;margin-top:8px;padding:8px;border:1px solid #353a47;border-radius:5px;color:#b8bdc8;cursor:pointer}.upload input{display:none}.danger{color:#ed8888;background:transparent;border:1px solid #5c333b;padding:7px 10px;border-radius:5px}.empty-state{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:7px;color:#8c93a1}.empty-state strong{color:#cdd0d8}.hidden{display:none!important}.toast{position:fixed;left:50%;bottom:82px;transform:translateX(-50%) translateY(12px);background:#292d38;border:1px solid #4a5060;padding:10px 15px;border-radius:6px;color:#f2f3f7;opacity:0;pointer-events:none;transition:.2s;z-index:5}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.modal-backdrop{position:fixed;inset:0;background:#05060a99;display:grid;place-items:center;z-index:4}.modal{width:410px;background:#1b1e26;border:1px solid #414652;border-radius:9px;padding:21px;box-shadow:0 25px 70px #0009}.modal-header{display:flex;justify-content:space-between}.modal-copy{font-size:11px;color:#9ba1ae;line-height:1.5;margin:8px 0 20px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}@media(max-width:1050px){.workspace{grid-template-columns:205px minmax(470px,1fr) 250px}.brand small{display:none}}@media(max-width:760px){.app-shell{min-width:0}.topbar{padding:0 12px}.brand{min-width:auto}.brand small,.project-name{display:none}.top-actions{min-width:auto}.top-actions .ghost-button{display:none}.workspace{display:block;position:relative}.left-panel,.right-panel{display:none}.canvas-toolbar{height:46px}.runbar{height:56px}.canvas{min-height:calc(100vh - 166px)}.modal{width:calc(100vw - 30px)}}