:host { display: block; position: relative; width: 100%; height: 100%; } .rete-editor-shell { position: relative; width: 100%; height: 100%; overflow: hidden; } .rete-editor-canvas { position: relative; z-index: 1; } .rete-lanes-layer { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; } .rete-lanes-content { position: absolute; top: 0; left: 0; transform-origin: 0 0; } .rete-lane-band { position: absolute; border-top: 2px solid transparent; border-bottom: 1px solid rgba(100, 116, 139, 0.42); box-sizing: border-box; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72); } .rete-lane-headers { position: absolute; inset: 0 auto 0 0; z-index: 3; width: 190px; overflow: hidden; pointer-events: none; background: linear-gradient(90deg, rgba(248, 250, 252, 0.82) 0%, rgba(248, 250, 252, 0.54) 72%, transparent 100%); } .rete-lane-header { position: absolute; left: 12px; width: 158px; min-height: 68px; padding: 9px 11px 8px; border: 1px solid rgba(148, 163, 184, 0.7); border-left: 6px solid #94a3b8; border-radius: 10px; background: rgba(255, 255, 255, 0.96); box-shadow: 0 8px 20px rgba(15, 23, 42, 0.14); color: #0f172a; overflow: hidden; } .rete-lane-header-kicker { color: #64748b; font-size: 9px; font-weight: 800; letter-spacing: 0.09em; line-height: 1; text-transform: uppercase; } .rete-lane-header-name { margin-top: 4px; font-size: 13px; font-weight: 800; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .rete-lane-header-meta, .rete-lane-header-description { margin-top: 3px; color: #64748b; font-size: 10px; font-weight: 600; line-height: 1.2; } .rete-lane-header-description { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .rete-lane-header--compact { min-height: 38px; padding-top: 7px; padding-bottom: 6px; } .rete-lane-header--compact .rete-lane-header-kicker, .rete-lane-header--compact .rete-lane-header-meta, .rete-lane-header--compact .rete-lane-header-description { display: none; } .rete-lane-header--compact .rete-lane-header-name { margin-top: 0; } .rete-editor-toolbar { position: absolute; top: 12px; left: 12px; z-index: 36; display: inline-flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; pointer-events: none; } .rete-editor-toolbar--with-lanes { left: 202px; } .rete-editor-toolbar-group { position: relative; display: inline-flex; gap: 6px; align-items: center; padding: 12px 10px 10px; border: 1px solid rgba(148, 163, 184, 0.72); border-radius: 16px; background: rgba(255, 255, 255, 0.94); box-shadow: 0 14px 28px rgba(15, 23, 42, 0.14); backdrop-filter: blur(12px); pointer-events: auto; } .rete-editor-toolbar-legend { position: absolute; top: -10px; left: 12px; padding: 2px 8px; border: 1px solid rgba(148, 163, 184, 0.7); border-radius: 999px; background: #f8fafc; color: #475569; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .rete-editor-toolbar-btn { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 1px solid rgba(203, 213, 225, 0.95); border-radius: 12px; background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%); color: #0f172a; font-size: 16px; transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease; } .rete-editor-toolbar-btn:hover { border-color: #94a3b8; box-shadow: 0 10px 18px rgba(15, 23, 42, 0.12); transform: translateY(-1px); } .rete-editor-toolbar-btn-active { border-color: #0f766e; background: linear-gradient(180deg, #ccfbf1 0%, #99f6e4 100%); color: #134e4a; box-shadow: inset 0 0 0 1px rgba(15, 118, 110, 0.18); } .rete-editor-selection-badge { position: absolute; top: 16px; right: 16px; z-index: 35; display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px; border: 1px solid #99f6e4; border-radius: 999px; background: rgba(15, 118, 110, 0.96); color: #f0fdfa; font-size: 13px; font-weight: 700; box-shadow: 0 14px 30px rgba(15, 23, 42, 0.18); cursor: grab; } .rete-editor-selection-box { position: absolute; z-index: 30; border: 1px solid #0f766e; background: rgba(20, 184, 166, 0.12); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35); pointer-events: none; } .rete-editor-loading { position: absolute; inset: 0; z-index: 40; display: flex; align-items: center; justify-content: center; background: rgba(248, 250, 252, 0.24); pointer-events: none; } .rete-editor-loading-card { display: inline-flex; align-items: center; gap: 10px; padding: 10px 14px; border: 1px solid #cbd5e1; border-radius: 999px; background: rgba(255, 255, 255, 0.96); color: #0f172a; box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16); font-size: 13px; font-weight: 600; } .rete-editor-spinner { width: 15px; height: 15px; border-radius: 999px; border: 2px solid rgba(15, 23, 42, 0.18); border-top-color: #2563eb; animation: rete-editor-spin 0.75s linear infinite; } @keyframes rete-editor-spin { to { transform: rotate(360deg); } } :host ::ng-deep [data-testid="node"] { user-select: none; -webkit-user-select: none; } :host ::ng-deep [data-testid="node"] input, :host ::ng-deep [data-testid="node"] textarea { user-select: text; -webkit-user-select: text; }