:root{font-family:"Segoe UI",Arial,sans-serif;color:#263347;background:#edf0f5;--ink:#263347;--muted:#718098;--border:#d9dfe8;--accent:#cc3349;--canvas:#e8edf4;--paper:#fff;--blue:#4772b8;--purple:#8b63b2;--green:#2d8d76}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--ink);padding:9px 13px;cursor:pointer;font-size:13px;font-weight:600}button:hover{background:#f1f4f9;border-color:#aebbd0}button:disabled{opacity:.45;cursor:wait}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #95b8f0;outline-offset:2px}.primary{background:var(--accent);border-color:var(--accent);color:white}.primary:hover{background:#b3263b;color:white}.dark{background:#314056;color:#fff;border-color:#314056}.dark:hover{background:#425572;color:#fff}.brand{display:flex;gap:9px;align-items:center;font-size:17px;font-weight:700;white-space:nowrap}.brand>span:last-child{font-size:12px;font-weight:400;color:var(--muted);border-left:1px solid var(--border);margin-left:7px;padding-left:14px}.brand-symbol{display:inline-flex;background:var(--accent);border-radius:9px 9px 9px 2px;width:27px;height:27px;justify-content:center;color:white;font-size:26px;line-height:21px;font-family:Georgia,serif}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 25px}.account{display:flex;gap:14px;align-items:center;font-size:12px;color:var(--muted)}.account button{padding:5px 12px}.workspace{display:grid;grid-template-columns:220px minmax(380px,1fr) 285px;height:calc(100vh - 64px)}.library{background:#f9fafc;border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;overflow:auto}.section-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.section-top h2{font-size:13px;margin:0}.section-top>button{padding:3px 9px}.library nav{margin:13px -4px 10px;display:grid;gap:5px;max-height:28vh;overflow:auto}.flow-item{text-align:left;background:none;border-color:transparent;line-height:1.5;overflow:hidden;text-overflow:ellipsis}.flow-item.active{background:#e5ebf6;color:#34568c;border-color:#d2dcee}.flow-item small{display:block;font-size:10px;color:var(--muted);font-weight:400}.wide{width:100%;font-size:11px}.palette{border-top:1px solid var(--border);padding-top:25px;margin-top:24px}.palette h2{font-size:13px;margin:0}.palette p{color:var(--muted);font-size:11px;line-height:1.6}.palette button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;margin:8px 0;padding:11px;background:white}.palette button>span:last-child{margin-left:auto;color:#9aa7ba}.kind-dot{display:inline-block;width:9px;height:9px;background:var(--blue);border-radius:50%;flex-shrink:0}.kind-dot.text{background:#ba9650}.kind-dot.wavespeed{background:var(--blue)}.kind-dot.poyo{background:var(--purple)}.kind-dot.output{background:var(--green)}.library-bottom{margin-top:auto;padding-top:25px;display:flex;gap:7px;align-items:center;color:var(--muted);font-size:10px}.status-dot{width:6px;height:6px;background:#5b799e;border-radius:50%}.editor{display:flex;flex-direction:column;min-width:0}.flow-toolbar{height:87px;padding:14px 22px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:8px}.flow-toolbar input{border:0;background:none;font-size:19px;color:var(--ink);font-weight:600;min-width:100px;width:100%;padding:2px 0}.flow-toolbar>div:first-child{min-width:0}.flow-meta{display:flex;gap:12px;align-items:center;margin-top:5px;font-size:11px;color:var(--muted)}#save-status{color:#b16a27}.actions{display:flex;gap:7px;flex-shrink:0}.actions button{font-size:11px;padding:8px 10px}.canvas-wrapper{position:relative;flex:1;overflow:hidden;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background-color:var(--canvas);background-image:radial-gradient(#b9c5d6 .8px,transparent .8px);background-size:20px 20px}#canvas{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab}#canvas:active{cursor:grabbing}#world{position:absolute;transform-origin:0 0;width:100%;height:100%;pointer-events:none}#connections{position:absolute;left:0;top:0;width:20000px;height:20000px;overflow:visible;pointer-events:none}#connections path{stroke:#8197b8;stroke-width:2;fill:none}#connections path.preview{stroke:#cc3349;stroke-dasharray:5 5}.node{position:absolute;width:230px;background:#fff;border:1px solid #c0ccdd;border-radius:11px;box-shadow:0 3px 9px #3753760d;pointer-events:auto;cursor:default}.node.selected{outline:2px solid #6686b6;outline-offset:2px}.node-head{padding:13px 15px;cursor:move;touch-action:none;border-bottom:1px solid #edf0f4;font-size:12px;font-weight:600;display:flex;align-items:center;gap:8px;min-height:44px}.node-sub{font-size:10px;color:#8492a7;padding:9px 15px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-ports{padding:6px 0 10px;font-size:10px;color:#697993}.port-row{height:25px;position:relative;display:flex;align-items:center;justify-content:space-between;padding:0 16px}.port{position:absolute;width:13px;height:13px;padding:0;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #7a90b1;background:#7a90b1;z-index:3;cursor:crosshair}.port:hover,.port.connecting{background:var(--accent);box-shadow:0 0 0 2px var(--accent)}.port.in{left:-7px}.port.out{right:-7px}.port-label-out{margin-left:auto;color:#99a5b7}.node-summary{font-size:10px;color:#8996a9;padding:5px 15px 12px;min-height:25px;max-height:55px;overflow:hidden}.canvas-tools{position:absolute;bottom:20px;left:20px;background:#fff;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;gap:6px;padding:4px;z-index:4}.canvas-tools button{border:0;padding:5px 9px}.canvas-tools span{font-size:10px;width:32px;text-align:center}.canvas-help{position:absolute;right:20px;bottom:24px;font-size:10px;color:#7e8da2;pointer-events:none}.editor-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;min-height:60px;padding:12px 20px}.editor-footer>span{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-footer button{font-size:11px;flex-shrink:0}.inspector{border-left:1px solid var(--border);background:#fff;overflow:auto;padding:22px 17px}.inspector .section-top{margin-bottom:24px}.inspector .section-top button{font-size:10px;color:#ae3850}.inspector label,dialog label{display:block;font-size:11px;font-weight:600;margin:16px 0 7px}.inspector input,.inspector select,.inspector textarea,dialog input,dialog textarea,dialog select{width:100%;border:1px solid var(--border);border-radius:6px;background:#fbfcfe;padding:9px;color:var(--ink);font-size:12px}.inspector textarea{min-height:120px;resize:vertical;line-height:1.6;font-family:Consolas,monospace}.inspector .muted,.connection-info p{font-size:11px;line-height:1.8;color:var(--muted)}.connection-info{margin-top:26px;padding-top:18px;border-top:1px solid var(--border)}.connection-info h3{font-size:12px}.apply{margin-top:12px;width:100%}#edge-list{margin-top:15px;font-size:10px}#edge-list>div{display:flex;gap:5px;align-items:center;border-top:1px solid #edf0f5;padding:6px 0}#edge-list span{flex:1;overflow:hidden;text-overflow:ellipsis}#edge-list button{font-size:10px;padding:2px 5px}#empty-canvas{position:absolute;top:24%;left:10%;z-index:3}#empty-canvas h1{font-weight:500;font-size:33px;letter-spacing:-1px;line-height:1.25}#empty-canvas p{font-size:13px;color:#6c7d95}#empty-canvas button{margin-top:15px}dialog{border:1px solid var(--border);padding:25px;border-radius:14px;width:min(720px,94vw);max-height:88vh;color:var(--ink);box-shadow:0 20px 100px #15264240}dialog::backdrop{background:#14213866;backdrop-filter:blur(3px)}.modal-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:20px}.modal-top h2{font-size:20px;font-weight:600;margin:0}.modal-top button{border:0;font-size:23px;padding:0 6px}dialog p{font-size:12px;line-height:1.8;color:var(--muted)}.template{display:block;width:100%;text-align:left;margin:10px 0;padding:16px}.template strong{display:block;font-size:14px}.template span{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:6px;line-height:1.6}dialog form>button{margin-top:16px}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#edf1f7;padding:16px;border-radius:7px;font:11px/1.7 Consolas,monospace;color:#384f70}code{overflow-wrap:anywhere;font-family:Consolas,monospace;font-size:11px}.key-row,.run-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e4e9f0;padding:12px 0;font-size:12px}.run-row button{font-size:11px}.run-row small,.key-row small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.danger{color:#b92e4b}.notice{border-left:3px solid #b48642;padding-left:12px}#toast{position:fixed;left:50%;bottom:25px;transform:translateX(-50%);background:#263347;color:#fff;max-width:90vw;padding:13px 20px;border-radius:9px;z-index:20;font-size:12px;box-shadow:0 6px 24px #26334733}.login-screen{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:white}.login-panel{padding:9vh 11%;display:flex;flex-direction:column;justify-content:center}.login-panel h1{font-size:42px;font-weight:500;letter-spacing:-1.5px;line-height:1.2;margin:14px 0}.login-panel p{color:var(--muted);font-size:13px;line-height:1.8;max-width:400px}.login-panel .quiet{margin-top:55px;font-size:12px;color:#a55666}.login-panel form{max-width:350px;margin-top:20px}.login-panel label{display:block;font-size:12px;margin:12px 0 7px}.login-panel input{display:block;border:1px solid var(--border);padding:13px;border-radius:7px;width:100%;margin-bottom:10px}.login-panel button.primary{margin-top:10px;width:100%;padding:13px}.login-panel #change-email{margin-top:10px}.login-panel #login-error{color:#b3263b}.login-panel .login-footnote{font-size:10px;margin-top:30px}.login-diagram{background:#e8edf4;display:flex;flex-direction:column;align-items:center;justify-content:center;background-image:radial-gradient(#b9c5d6 .8px,transparent .8px);background-size:20px 20px}.sample-block{width:280px;border:1px solid #bfccdd;background:white;border-radius:12px;padding:23px;font-size:16px;box-shadow:0 7px 25px #71849c12}.sample-block span{display:block;font-size:11px;color:var(--muted);margin-top:12px}.provider-sample{border-color:#ab91c6}.sample-line{height:76px;border-left:2px solid #a3b1c8}.login-diagram .sample-line:nth-of-type(4){border-color:#a893bf}[hidden]{display:none!important}@media(max-width:1200px){.workspace{grid-template-columns:185px minmax(330px,1fr) 250px}.actions{gap:4px}.actions button{padding:7px;font-size:10px}.flow-toolbar{padding:12px}.flow-toolbar input{font-size:16px}.canvas-help{display:none}}@media(max-width:900px){.workspace{grid-template-columns:165px minmax(330px,1fr);height:calc(100vh - 64px)}.inspector{position:fixed;right:0;top:151px;bottom:60px;width:250px;z-index:5;box-shadow:-4px 0 15px #46577212;display:none}.inspector.open{display:block}.brand>span:last-child{font-size:10px}.topbar{padding:0 14px}.account>span{display:none}.login-screen{grid-template-columns:1fr}.login-diagram{display:none}.login-panel{padding:8vh 9%}.login-panel h1{font-size:36px}}@media(max-width:560px){.workspace{grid-template-columns:115px minmax(0,1fr)}.library{padding:14px 7px}.palette button{font-size:10px;padding:9px 6px;gap:6px}.flow-item{font-size:10px;padding:6px}.wide{font-size:9px;padding:8px 4px}.library .section-top h2{font-size:11px}.flow-toolbar{height:106px;align-items:flex-start;flex-direction:column;justify-content:center}.actions{width:100%;justify-content:flex-end}.flow-toolbar input{font-size:15px}.flow-meta{font-size:9px}.editor-footer{padding:10px;justify-content:flex-end}.editor-footer>span{display:none}.editor-footer button{font-size:9px}.library-bottom{font-size:9px}.brand{font-size:13px;gap:6px}.brand>span:last-child{padding-left:8px;margin-left:1px}#empty-canvas h1{font-size:24px}#empty-canvas{left:8%;right:8%}.inspector{top:170px;width:240px}.canvas-tools{left:10px;bottom:14px}.canvas-tools button{padding:5px}.canvas-tools span{font-size:9px}.palette p{font-size:10px}.section-top>button{padding:2px 5px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.inspector-close{display:none}@media(max-width:900px){.inspector-close{display:block}}
