:root{--ink:#273b49;--muted:#7d8b94;--line:#e5eaed;--accent:#436859}*{box-sizing:border-box}html,body{margin:0;height:100%;background:#f7f9fa;color:var(--ink);font-family:Inter,"Segoe UI",sans-serif;font-size:13px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.35;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #537f6c;outline-offset:2px}button{color:inherit}h1:focus{outline:none}.studio{display:grid;grid-template-columns:246px minmax(420px,1fr) 304px;grid-template-rows:78px minmax(0,1fr);height:100dvh;min-height:600px;overflow:hidden}.app-header{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:white;border-bottom:1px solid var(--line);gap:24px}.brand{display:flex;gap:13px;align-items:center}.brand-mark{background:#243f36;border-radius:10px;color:#fff;font-size:25px;padding:5px 11px;letter-spacing:-6px;padding-right:17px}.brand strong{font-size:21px;font-weight:650;letter-spacing:-.8px}.brand-product{font-weight:400;color:#6c797b}.brand small{display:block;font-size:9px;letter-spacing:1.8px;color:var(--muted);margin-top:5px}.experimental{font-size:8px;letter-spacing:.8px;margin-left:8px;padding:2px 5px;background:#f0f4f1;color:#5a7465;border-radius:3px}.header-actions{display:flex;align-items:center;gap:10px}.local-label{font-size:11px;color:#769083;margin-right:12px}.file-open{position:relative;overflow:hidden;border:1px solid #d7dfe2;background:#fff;border-radius:5px;padding:7px 12px;cursor:pointer;font-weight:600}.file-open input{position:absolute;opacity:0;width:100%;height:100%;inset:0;cursor:pointer}.library{border-right:1px solid var(--line);background:#fff;padding:24px 15px;overflow:auto;display:flex;flex-direction:column}.aside-title{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.6px;font-weight:700;color:#71808a;padding:0 7px 15px}.aside-title span{font-size:9px;letter-spacing:.6px;color:#96a2aa}.service-list{max-height:175px;overflow:auto}.service-item{display:flex;width:100%;gap:10px;align-items:center;text-align:left;border:0;background:transparent;padding:12px;border-radius:7px;font-size:12px}.service-item>span:nth-child(2){flex:1;overflow:hidden;text-overflow:ellipsis}.service-item.active{background:#edf3ef;color:#345d49}.service-item small{display:block;font-size:9px;color:#8a9990;margin-top:3px}.catalog-heading{margin-top:28px;padding-bottom:7px}.aside-help{font-size:10px;color:#9ba5ab;margin:0 7px 15px}.block-tile{border:1px solid transparent;background:white;text-align:left;display:flex;align-items:center;gap:11px;width:100%;padding:9px 7px;border-radius:7px;margin-bottom:3px}.block-tile:hover{border-color:#dfe7e5;background:#f9fbfa}.block-symbol{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;font-size:19px;flex-shrink:0}.block-tile strong{font-size:12px;font-weight:600;display:block}.block-tile small{font-size:9px;display:block;color:#8b989f;margin-top:4px}.add-symbol{margin-left:auto;font-size:16px;color:#a1adb3}.library-bottom{margin-top:auto;padding:25px 7px 0}.library-bottom button{border:0;background:none;padding:0;color:#5a7e70;font-size:11px}.library-bottom p{font-size:10px;line-height:1.8;color:#9aa5ac;margin-top:14px}.workspace{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}.workspace-heading{display:flex;align-items:center;justify-content:space-between;padding:23px 26px 20px;background:#fcfdfd;gap:12px}.eyebrow{font-size:9px;letter-spacing:1.7px;color:#8c9a9f;margin-bottom:8px}h1{font-size:22px;font-weight:550;letter-spacing:-.6px;margin:0;display:flex;gap:12px;align-items:center}.status-pill{font-size:9px;background:#edf2f0;color:#748b7f;border-radius:20px;padding:5px 9px;font-weight:500;letter-spacing:0}.editor-toolbar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:8px 16px;background:white;gap:12px}.tool-group{display:flex;align-items:center;gap:4px}.tool-group button{background:none;border:0;padding:6px 8px;font-size:11px;border-radius:4px}.tool-group button:hover:not(:disabled){background:#eef2f1}.tool-group button:first-child,.tool-group button:nth-child(2){font-size:18px;padding:1px 7px}.divider{width:1px;height:20px;background:var(--line);margin:0 6px}.toolbar-search{display:flex;align-items:center;gap:8px;min-width:160px;max-width:300px;flex:1;background:#f6f8f9;border-radius:5px;padding:3px 9px}.toolbar-search>span{font-size:20px;color:#a0aab0}.toolbar-search input{width:100%;background:none;border:0;outline:none;font-size:11px}.toolbar-search kbd{font-size:8px;color:#a8b0b4}.canvas-container{flex:1;position:relative;min-height:0;overflow:hidden}.flow-canvas{width:100%;height:100%;display:block;touch-action:none;user-select:none;outline:none;background:#f7f9fa}.flow-node{cursor:grab}.flow-node:active{cursor:grabbing}.node-shadow{fill:#1f364a24;filter:blur(2px);pointer-events:none}.node-body{fill:#fff;stroke:#d9e1e6;stroke-width:1.2}.selected .node-body{stroke:#537f6c;stroke-width:2.4}.node-title{font-size:12px;font-weight:650;fill:#304655;pointer-events:none}.node-type{font-size:9px;fill:#85959e;pointer-events:none}.node-symbol{font-size:20px;pointer-events:none}.port-label{font-size:10px;fill:#758693;pointer-events:none}.port{fill:#fff;stroke:#849da7;stroke-width:2;cursor:crosshair}.port:hover,.port.pending{fill:#537f6c;stroke:#365f4e;r:8}.input-port{fill:#e6eeeb;stroke:#7a9d8f}.edge-hit{stroke:transparent;stroke-width:16;fill:none;cursor:pointer}.edge-line{stroke:#b1bec6;stroke-width:1.8;fill:none;pointer-events:none}.edge.highlight .edge-line{stroke:#527d68;stroke-width:3}.edge:hover .edge-line{stroke:#527d68;stroke-width:3}.canvas-help{position:absolute;left:20px;bottom:22px;font-size:9px;color:#8c9ba5;pointer-events:none}.zoom-controls{position:absolute;right:20px;bottom:17px;display:flex;align-items:center;border:1px solid #e0e6e8;background:#fff;border-radius:7px;box-shadow:0 3px 15px #25413b08;padding:4px}.zoom-controls button{border:0;background:none;padding:6px 10px;font-size:12px}.zoom-controls span{font-size:10px;width:38px;text-align:center;color:#7a8b94}.workspace-footer{height:35px;flex-shrink:0;background:#fff;border-top:1px solid var(--line);padding:0 19px;display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#8a969d;gap:10px}.workspace-footer b{font-weight:400;margin:0 8px}.workspace-footer i{display:inline-block;background:#789d88;width:5px;height:5px;border-radius:100%;margin-right:5px}.inspector{border-left:1px solid var(--line);padding:24px 20px;overflow:auto;background:white;min-height:0}.inspector .aside-title{padding-left:0;padding-right:0}.inspector h2{font-size:19px;font-weight:550;line-height:1.4;margin:10px 0 6px;letter-spacing:-.3px}.inspector-description{font-size:11px;color:#89959e;line-height:1.7;margin-bottom:20px}.inspector-node-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:10px;font-size:23px;margin-top:15px}.inspector-empty{margin-top:80px;text-align:center;padding:0 12px}.inspector-empty>span{font-size:40px;color:#c9d3d7}.inspector-empty h2{font-size:18px;margin:20px 0 12px}.inspector-empty p{font-size:12px;color:#8e9da6;line-height:1.9}.keyboard-tip{text-align:left;border-top:1px solid var(--line);margin-top:32px;padding-top:20px;color:#99a5ac;font-size:10px;line-height:3}.keyboard-tip kbd{display:inline-block;background:#f5f7f8;border:1px solid #e8edef;padding:0 6px;line-height:1.7;margin-right:7px;border-radius:3px;color:#81949c}.field{display:flex;flex-direction:column;gap:6px;margin:15px 0;font-size:11px;font-weight:550;color:#596d7b}.field input,.field select,.field textarea{width:100%;border:1px solid #dce3e7;border-radius:5px;background:#fff;padding:9px;color:#344955;font-size:12px;min-width:0}.field textarea{font-family:Consolas,monospace;resize:vertical;line-height:1.6}.field small,.field-note{font-size:9px;color:#9aa5ac;font-weight:400;line-height:1.6;overflow-wrap:anywhere}.legacy-note{font-size:10px;color:#8e805d;background:#faf8f0;border-radius:5px;padding:10px;line-height:1.7;margin-top:15px}.advanced-fields{border-top:1px solid var(--line);padding-top:14px;margin-top:20px}.advanced-fields summary{font-size:11px;color:#687f8b;cursor:pointer}.section-label{font-size:9px;letter-spacing:1.6px;color:#82929b;border-top:1px solid var(--line);padding-top:24px;margin:24px 0 15px}.key-options{display:flex;flex-wrap:wrap;gap:5px}.key-options button{border:1px solid #dce3e7;border-radius:4px;background:white;width:30px;height:29px}.key-options button.active{background:#e0eee6;border-color:#7a9c87;color:#3f7156}.connection-hint{position:absolute;top:18px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#294e3d;color:white;padding:10px 14px;border-radius:6px;font-size:11px;box-shadow:0 4px 18px #294e3d20}.connection-hint button{color:white;background:transparent;border:0;text-decoration:underline;margin-left:12px}.empty-canvas{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none;color:#85969e}.empty-canvas>span{font-size:50px;color:#b5c8bd}.empty-canvas h2{font-size:21px;font-weight:500;margin:15px}.empty-canvas p{font-size:12px}.search-results{position:absolute;top:152px;right:16px;width:360px;max-height:400px;overflow:auto;background:white;z-index:4;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 40px #233d4820}.search-results>div{padding:12px;color:#8c9ca5;font-size:10px;border-bottom:1px solid var(--line)}.search-results>div button{float:right;background:none;border:0;font-size:10px}.search-results>button{display:block;text-align:left;width:100%;border:0;background:white;padding:12px;border-bottom:1px solid #f2f4f5}.search-results>button:hover{background:#f3f7f4}.search-results strong{font-size:12px;display:block}.search-results span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;margin-top:4px;color:#8597a1}.mud-button-root{font-family:inherit!important;text-transform:none!important;font-size:11px!important;letter-spacing:0!important}.mud-button-filled-primary{background:#345f4b!important}.mud-input{font-family:inherit!important;font-size:12px!important}.mud-input-label{font-size:12px!important}#blazor-error-ui{display:none;background:#fff3cd;position:fixed;bottom:0;left:0;right:0;z-index:9999;padding:14px}.valid.modified:not([type=checkbox]){outline:none}@media(max-width:1150px){.studio{grid-template-columns:210px minmax(360px,1fr) 265px}.local-label{display:none}.app-header{padding:0 18px}.header-actions{gap:5px}.library{padding:20px 9px}.inspector{padding:20px 14px}.canvas-help{display:none}.toolbar-search kbd{display:none}.workspace-heading{padding:20px 18px}h1{font-size:19px}.brand-product{font-size:17px}}@media(max-width:900px){.studio{min-width:900px}.experimental{display:none}}
.service-list,.block-tile,.aside-title,.aside-help,.library-bottom{flex-shrink:0}.close-inspector{display:none}@media(max-width:900px){.studio{min-width:600px;grid-template-columns:170px minmax(0,1fr);grid-template-rows:110px minmax(0,1fr)}.app-header{flex-wrap:wrap;gap:4px;padding:10px 16px}.brand strong{font-size:18px}.header-actions{width:100%;justify-content:flex-end}.local-label{display:none}.inspector{display:none}.inspector-open .inspector{display:block;position:fixed;right:0;top:110px;bottom:0;width:280px;z-index:5;box-shadow:-10px 0 30px #243e4815}.close-inspector{display:block;background:none;border:0;color:#70848e;font-size:10px;margin-bottom:18px}.block-tile{gap:6px}.block-tile small{font-size:8px}.block-tile strong{font-size:11px}.block-symbol{width:28px;height:30px}.workspace-heading{padding:15px 14px}h1{font-size:17px}.workspace-heading .mud-button-root{max-width:90px}.workspace-footer{font-size:8px}.editor-toolbar{flex-wrap:wrap;padding:7px 10px}.toolbar-search{max-width:none;width:100%}.search-results{top:185px;right:10px;width:calc(100% - 20px)}.brand small{font-size:8px}}

/* EV-03: draggable connection control */
.edge-handle{fill:#fff;stroke:#82979e;stroke-width:1.5;cursor:grab}.edge-handle:hover,.edge.highlight .edge-handle{fill:#eaf2ed;stroke-width:2.5}.edge-handle:active{cursor:grabbing}


/* EV-04: identification band */
.node-header{fill:#e9eef2;pointer-events:none}

