@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;600;700&family=Urbanist:wght@500;600;700;800&display=swap";:root{--font-heading: "Urbanist", "Manrope", "Segoe UI", system-ui, sans-serif;--font-body: "Inter", "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--canvas-bg: #ffffff;--canvas-bg-alt: #f8fafc;--canvas-radial-warmth: rgba(99, 155, 245, .04);--canvas-grid-dot: rgba(15, 23, 42, .35);--panel-border: #e2e6f0;--panel-text-primary: #1e293b;--panel-text-muted: #475569;--panel-section-title: #94a3b8;--palette-hover-bg: #f0f4ff;--palette-hover-text: #1e293b;--palette-hover-border: #c7d2fe;--node-ecu-fill: #ffffff;--node-ecu-border: #2563eb;--node-ecu-glow-rgb: 37, 99, 235;--node-hil-fill: #ffffff;--node-hil-border: #16a34a;--node-hil-glow-rgb: 22, 163, 74;--node-seskion-fill: #ffffff;--node-seskion-border: #7c3aed;--node-seskion-glow-rgb: 124, 58, 237;--node-breakout-fill: #ffffff;--node-breakout-border: #d97706;--node-breakout-glow-rgb: 217, 119, 6;--node-bus-fill: #f0f7ff;--node-bus-border: #0284c7;--node-bus-glow-rgb: 2, 132, 199;--node-default-fill: #ffffff;--node-default-border: #94a3b8;--node-default-glow-rgb: 148, 163, 184;--node-hil-typhoon-fill: #ffffff;--node-hil-typhoon-border: #0284c7;--node-hil-typhoon-glow-rgb: 2, 132, 199;--node-hil-opalrt-fill: #ffffff;--node-hil-opalrt-border: #7c3aed;--node-hil-opalrt-glow-rgb: 124, 58, 237;--node-hil-etas-fill: #ffffff;--node-hil-etas-border: #ea580c;--node-hil-etas-glow-rgb: 234, 88, 12;--node-hil-dspace-fill: #ffffff;--node-hil-dspace-border: #16a34a;--node-hil-dspace-glow-rgb: 22, 163, 74;--node-hil-ni-fill: #ffffff;--node-hil-ni-border: #1d6fe8;--node-hil-ni-glow-rgb: 29, 111, 232;--protocol-psi5-border: #7c3aed;--protocol-psi5-fill: rgba(124,58,237,.15);--protocol-spi-border: #ea580c;--protocol-spi-fill: rgba(234,88,12,.15);--protocol-can-border: #1d6fe8;--protocol-can-fill: rgba(29,111,232,.15);--protocol-lin-border: #0d9488;--protocol-lin-fill: rgba(13,148,136,.15);--protocol-eth-border: #0284c7;--protocol-eth-fill: rgba(2,132,199,.15);--protocol-squib-border: #dc2626;--protocol-squib-fill: rgba(220,38,38,.12);--protocol-pwr-border: #d97706;--protocol-pwr-fill: rgba(217,119,6,.15);--protocol-ao-border: #16a34a;--protocol-ao-fill: rgba(22,163,74,.15);--protocol-ai-border: #dc2626;--protocol-ai-fill: rgba(220,38,38,.12);--protocol-di-border: #1d6fe8;--protocol-di-fill: rgba(29,111,232,.12);--protocol-do-border: #9333ea;--protocol-do-fill: rgba(147,51,234,.12);--protocol-default-border: #94a3b8;--protocol-default-fill: rgba(148,163,184,.15)}html,body,#root{height:100%;width:100%;margin:0;padding:0}#root{max-width:none;padding:0}body{font-family:var(--font-body);color:#0b1224;background:#f8fafc;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.01em;color:#0a0f1f}*{box-sizing:border-box}.port-row{position:relative}.port-row .trash-btn{opacity:0;pointer-events:none;transition:opacity .12s ease}.port-row:hover .trash-btn,.port-row:focus-within .trash-btn{opacity:1;pointer-events:auto}.port-row-meta{line-height:1.2}.palette-item{color:var(--panel-text-primary);transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.palette-item:hover{background:var(--palette-hover-bg)!important;border:1px solid var(--palette-hover-border)!important;color:var(--palette-hover-text)!important;box-shadow:0 4px 12px #1e293b14!important}.breakout-board-node .breakout-handle{border:none!important;background:transparent!important;border-radius:8px;opacity:0;transition:opacity .12s ease}.react-flow__node:hover .breakout-handle,.react-flow__node.selected .breakout-handle,.breakout-handle.react-flow__handle-connecting,.breakout-handle.react-flow__handle-valid,.breakout-handle.is-active{opacity:1}.breakout-board-node .breakout-notch{transition:opacity .12s ease,background-color .12s ease,transform .12s ease}.react-flow__node:hover .breakout-board-node .breakout-notch,.react-flow__node.selected .breakout-board-node .breakout-notch,.breakout-board-node .breakout-notch.is-active{opacity:.62!important}.breakout-board-node .breakout-notch.is-dim{opacity:.14!important}.breakout-board-node .breakout-notch.is-active{background:#7c3aed!important;opacity:.95!important}.auth-layout{min-height:100vh;display:grid;grid-template-columns:3fr 2fr;background:#f6f3ff}.auth-hero{position:relative;padding:48px;display:flex;align-items:center;justify-content:center;overflow:hidden}.auth-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#7c3aed33,#a78bfa2e 45%,#ffffffe6);background-size:220% 220%;animation:hero-gradient 36s ease-in-out infinite}.auth-hero:after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(90,60,180,.22) 1px,transparent 1px);background-size:28px 28px;opacity:.2;pointer-events:none}.auth-hero-inner{position:relative;z-index:1;width:min(720px,100%);display:grid;gap:28px}.auth-hero-header{display:grid;gap:6px}.auth-hero-brand{font-family:var(--font-heading);font-weight:800;font-size:48px;letter-spacing:.12em;color:#4c1d95}.bl-taglineRow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:21px;max-width:520px}.bl-flip{display:inline-flex;align-items:center;padding:7px 14px;border-radius:0;background:#7c3aed1f;color:#4c1d95;font-weight:800}.bl-flipViewport{height:1.35em;overflow:hidden;display:block}.bl-flipStack{display:flex;flex-direction:column;--step: 1.35em;animation:bl-flip 7.5s ease-in-out infinite;transform:translateY(0)}.bl-flipWord{line-height:1.35em;white-space:nowrap}.bl-taglineSuffix{color:#5b21b6;opacity:.85;font-weight:600}.auth-panel{display:flex;align-items:center;justify-content:center;padding:32px 24px;background:#ffffffeb;border-left:1px solid rgba(124,58,237,.08)}.auth-card{width:min(420px,100%);display:grid;gap:12px}.auth-footnote{font-size:12px;color:#6b7280;text-align:center}.hero-schematic{width:min(640px,100%)}.hero-schematic svg{width:100%;height:auto}.hero-blueprint{opacity:.35}.hero-blueprint .hero-block rect{fill:#fff3;stroke:#4c1d9559;stroke-width:1.5}.hero-blueprint .hero-block text{fill:#4c1d958c;font-size:12px;font-weight:600}.hero-blueprint .hero-port{fill:#4c1d9580}.hero-blueprint .hero-wire{stroke:#4c1d9540;stroke-width:2;fill:none;stroke-linecap:round;stroke-dasharray:6 10;vector-effect:non-scaling-stroke}.hero-ink{opacity:0;animation:ink-fade 10s ease-in-out infinite}.hero-ink .hero-block rect{fill:#fff9;stroke:#5b21b6;stroke-width:2}.hero-ink .hero-block text{fill:#3b1d6a;font-size:12.5px;font-weight:700}.hero-ink .hero-port{fill:#6d28d9}.hero-ink .hero-wire{stroke:#6d28d9;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;vector-effect:non-scaling-stroke}.hero-ink .hero-wire.bus{stroke-width:3}.hero-label{font-size:11px;font-weight:700;fill:#4c1d95;opacity:0;animation:label-fade 10s ease-in-out infinite}.wire-can{animation:wire-can 10s linear infinite}.wire-di{animation:wire-di 10s linear infinite}.wire-ai{animation:wire-ai 10s linear infinite}.wire-do{animation:wire-do 10s linear infinite}@keyframes hero-gradient{0%{background-position:0% 20%}50%{background-position:100% 80%}to{background-position:0% 20%}}@keyframes bl-flip{0%,20%{transform:translateY(0)}33%{transform:translateY(calc(-1 * var(--step)))}33%,53%{transform:translateY(calc(-1 * var(--step)))}66%{transform:translateY(calc(-2 * var(--step)))}66%,86%{transform:translateY(calc(-2 * var(--step)))}to{transform:translateY(calc(-3 * var(--step)))}}@keyframes ink-fade{0%,14%{opacity:0}15%,85%{opacity:1}to{opacity:0}}@keyframes label-fade{0%,64%{opacity:0}65%,85%{opacity:1}to{opacity:0}}@keyframes wire-can{0%,14%{stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}15%{opacity:1}30%{stroke-dashoffset:0;opacity:1;filter:drop-shadow(0 0 6px rgba(124,58,237,.25))}65%{stroke-dashoffset:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}85%{opacity:1}to{opacity:0;stroke-dashoffset:100}}@keyframes wire-di{0%,29%{stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}30%{opacity:1}45%{stroke-dashoffset:0;opacity:1;filter:drop-shadow(0 0 6px rgba(124,58,237,.22))}65%{stroke-dashoffset:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}85%{opacity:1}to{opacity:0;stroke-dashoffset:100}}@keyframes wire-ai{0%,44%{stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}45%{opacity:1}55%{stroke-dashoffset:0;opacity:1;filter:drop-shadow(0 0 6px rgba(124,58,237,.2))}65%{stroke-dashoffset:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}85%{opacity:1}to{opacity:0;stroke-dashoffset:100}}@keyframes wire-do{0%,54%{stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 0 rgba(124,58,237,0))}55%{opacity:1}65%{stroke-dashoffset:0;opacity:1;filter:drop-shadow(0 0 6px rgba(124,58,237,.18))}85%{opacity:1}to{opacity:0;stroke-dashoffset:100}}@media (max-width: 900px){.auth-layout{grid-template-columns:1fr}.auth-hero{display:none}.auth-panel{min-height:100vh;border-left:none}}@media (prefers-reduced-motion: reduce){.auth-hero:before{animation:none}.bl-flipStack{animation:none;transform:translateY(0)}.hero-ink{animation:none;opacity:1}.hero-ink .hero-wire{animation:none;stroke-dashoffset:0;filter:none}.hero-label{animation:none;opacity:1}}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}
