.visualiser-root { display: flex; justify-content: center; align-items: flex-start; height: 100%; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: $spacePadding; } .visualiser-container { position: relative; width: min(100%, 760px); } .visualiser-flow { width: 100%; padding: 20px 16px; display: flex; flex-direction: column; align-items: center; gap: 10px; } .visualiser-level { width: 100%; display: flex; justify-content: center; align-items: flex-start; } .visualiser-level-row { display: grid; align-items: center; justify-items: center; } .visualiser-node { width: 220px; padding: 12px 14px; border-radius: 12px; background: linear-gradient( 135deg, lighten($mode--light-bg, 2%), lighten($blue, 38%) ); border: 1px solid rgba($blue, 0.28); color: $leftMenu-background; font-weight: 600; text-align: center; letter-spacing: 0.2px; box-shadow: 0 6px 14px rgba($blue, 0.2); transition: opacity 0.16s ease, transform 0.16s ease, box-shadow 0.16s ease; } .visualiser-node.is-hovered { transform: translateY(-1px); box-shadow: 0 10px 22px rgba($blue, 0.33); } .visualiser-node.is-related { box-shadow: 0 8px 18px rgba($blue, 0.27); } .visualiser-node.is-dim { opacity: 0.45; } .visualiser-node-content { display: flex; align-items: center; justify-content: center; gap: 8px; } .visualiser-connector { display: flex; flex-direction: column; align-items: center; gap: 4px; margin: 2px 0; } .visualiser-connector-line { width: 2px; height: 18px; background: linear-gradient(180deg, rgba($blue, 0.6), rgba($blue, 0.2)); } .visualiser-connector-arrow { width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 8px solid rgba($blue, 0.6); } .visualiser-connector-tail { width: 2px; height: 10px; background: rgba($blue, 0.2); } .visualiser-connector-branch { width: 100%; height: 34px; } .visualiser-connector-spacer { width: 100%; height: 34px; } .visualiser-connector-branch-line { stroke: rgba($blue, 0.55); stroke-width: 2px; vector-effect: non-scaling-stroke; } .visualiser-connector-branch-arrow { fill: rgba($blue, 0.55); } @include color-mode(dark) { .visualiser-node { background: linear-gradient( 135deg, lighten($mode--dark-bg, 6%), rgba($blue, 0.35) ); border: 1px solid rgba($blue, 0.45); color: $leftMenu-color; box-shadow: 0 8px 18px rgba($blue, 0.28); } .visualiser-connector-line { background: linear-gradient(180deg, rgba($blue, 0.8), rgba($blue, 0.3)); } .visualiser-connector-arrow { border-top-color: rgba($blue, 0.8); } .visualiser-connector-tail { background: rgba($blue, 0.3); } .visualiser-connector-branch-line { stroke: rgba($blue, 0.8); } .visualiser-connector-branch-arrow { fill: rgba($blue, 0.8); } .visualiser-outcome-connector-line { stroke: rgba($blue, 0.65); } .visualiser-outcome-connector-arrow { fill: rgba($blue, 0.65); } } .visualiser-outcome-connectors { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; } .visualiser-outcome-connector-line { fill: none; stroke: rgba($blue, 0.45); stroke-width: 2px; stroke-dasharray: 4, 4; vector-effect: non-scaling-stroke; transition: opacity 0.16s ease, stroke-width 0.16s ease, stroke 0.16s ease; } .visualiser-outcome-connector-arrow { fill: rgba($blue, 0.45); } .visualiser-outcome-connector-label { font-size: 2px; font-weight: 600; fill: $blue; paint-order: stroke fill; stroke: $mode--light-bg; stroke-width: 1px; stroke-linecap: round; stroke-linejoin: round; user-select: none; transition: opacity 0.16s ease, fill 0.16s ease; } .visualiser-outcome-connector-line.is-active { stroke-width: 2.6px; stroke: rgba($blue, 0.75); stroke-dasharray: 0; } .visualiser-outcome-connector-line.is-active-outgoing { stroke-width: 2.8px; stroke: rgba($blue, 0.82); stroke-dasharray: 0; filter: drop-shadow(0 0 3px rgba($blue, 0.6)); } .visualiser-outcome-connector-line.is-active-incoming { stroke-width: 2.2px; stroke: rgba($blue, 0.58); stroke-dasharray: 2, 2; } .visualiser-outcome-connector-line.is-dim { opacity: 0.2; } .visualiser-outcome-connector-label.is-active { fill: darken($blue, 8%); } .visualiser-outcome-connector-label.is-active-outgoing { fill: darken($blue, 12%); } .visualiser-outcome-connector-label.is-active-incoming { fill: darken($blue, 2%); } .visualiser-outcome-connector-label.is-dim { opacity: 0.25; } @include color-mode(dark) { .visualiser-outcome-connector-label { fill: lighten($blue, 20%); stroke: $mode--dark-bg; } }