@mixin node-terminal-style($side) {
    --size: 11px;
    --offset-extra: 4px;

    position: absolute;
    #{$side}: calc(var(--offset-extra) * -1 - 0.65rem);
    display: grid;
    place-items: center;
    width: calc(var(--size) + var(--offset-extra) * 2);
    height: calc(var(--size) + var(--offset-extra) * 2);
    margin-top: 0.25rem;
    transform: translateY(calc(var(--offset-extra) * -1));

    color: $brand-primary;

    &::after {
        position: absolute;
        z-index: -1;
        content: "";
        width: var(--size);
        height: var(--size);
        border-radius: 50%;
        background-color: $white;
    }

    &.mapped-over {
        --size: 20px;
        #{$side}: calc(var(--offset-extra) * -1 - 0.8rem);
        margin-top: 0;
    }

    .terminal-icon {
        position: absolute;
        top: calc(var(--offset-extra) - 1px);
        left: calc(var(--offset-extra) - 1px);
        width: calc(var(--size) + 2px);
        height: calc(var(--size) + 2px);
        pointer-events: none;
    }
}
