:root {
    --dfBackgroundColor: #ffffff;
    --dfBackgroundSize: 0px;
    --dfBackgroundImage: none;

    --dfNodeType: flex;
    --dfNodeTypeFloat: none;
    --dfNodeBackgroundColor: #ffffff;
    --dfNodeTextColor: #000000;
    --dfNodeBorderSize: 0px;
    --dfNodeBorderColor: rgba(230, 230, 230, 1);
    --dfNodeBorderRadius: 8px;
    --dfNodeMinHeight: 48px;
    --dfNodeMinWidth: 180px;
    --dfNodePaddingTop: 0px;
    --dfNodePaddingBottom: 0px;
    --dfNodeBoxShadowHL: 0px;
    --dfNodeBoxShadowVL: 0px;
    --dfNodeBoxShadowBR: 0px;
    --dfNodeBoxShadowS: 0px;
    --dfNodeBoxShadowColor: null;

    --dfNodeHoverBackgroundColor: #ffffff;
    --dfNodeHoverTextColor: #000000;
    --dfNodeHoverBorderSize: 0px;
    --dfNodeHoverBorderColor: #000000;
    --dfNodeHoverBorderRadius: 8px;

    --dfNodeHoverBoxShadowHL: 0px;
    --dfNodeHoverBoxShadowVL: 2px;
    --dfNodeHoverBoxShadowBR: 15px;
    --dfNodeHoverBoxShadowS: 2px;
    --dfNodeHoverBoxShadowColor: rgba(178, 231, 252, 1);

    --dfNodeSelectedBackgroundColor: null;
    --dfNodeSelectedTextColor: rgba(0, 0, 0, 1);
    --dfNodeSelectedBorderSize: 0px;
    --dfNodeSelectedBorderColor: rgba(0, 144, 164, 1);
    --dfNodeSelectedBorderRadius: 8px;

    --dfNodeSelectedBoxShadowHL: 0px;
    --dfNodeSelectedBoxShadowVL: 2px;
    --dfNodeSelectedBoxShadowBR: 15px;
    --dfNodeSelectedBoxShadowS: 2px;
    --dfNodeSelectedBoxShadowColor: rgba(178, 211, 252, 1);

    --dfInputBackgroundColor: rgba(249, 249, 249, 1);
    --dfInputBorderSize: 0px;
    --dfInputBorderColor: #000000;
    --dfInputBorderRadius: 0px;
    --dfInputLeft: 0px;
    --dfInputHeight: 0px;
    --dfInputWidth: 0px;

    --dfInputHoverBackgroundColor: #ffffff;
    --dfInputHoverBorderSize: 0px;
    --dfInputHoverBorderColor: #000000;
    --dfInputHoverBorderRadius: 0px;

    --dfOutputBackgroundColor: #ffffff;
    --dfOutputBorderSize: 0px;
    --dfOutputBorderColor: #000000;
    --dfOutputBorderRadius: 0px;
    --dfOutputRight: 0px;
    --dfOutputHeight: 0px;
    --dfOutputWidth: 0px;

    --dfOutputHoverBackgroundColor: #ffffff;
    --dfOutputHoverBorderSize: 0px;
    --dfOutputHoverBorderColor: #000000;
    --dfOutputHoverBorderRadius: 0px;

    --dfLineWidth: 1px;
    --dfLineColor: rgba(144, 144, 144, 1);
    --dfLineHoverColor: rgba(0, 144, 164, 1);
    --dfLineSelectedColor: #43b993;

    --dfRerouteBorderWidth: 1px;
    --dfRerouteBorderColor: #000000;
    --dfRerouteBackgroundColor: #ffffff;

    --dfRerouteHoverBorderWidth: 2px;
    --dfRerouteHoverBorderColor: #000000;
    --dfRerouteHoverBackgroundColor: #ffffff;

    --dfDeleteDisplay: none;
    --dfDeleteColor: #ffffff;
    --dfDeleteBackgroundColor: #000000;
    --dfDeleteBorderSize: 2px;
    --dfDeleteBorderColor: #ffffff;
    --dfDeleteBorderRadius: 50px;
    --dfDeleteTop: -15px;

    --dfDeleteHoverColor: #000000;
    --dfDeleteHoverBackgroundColor: #ffffff;
    --dfDeleteHoverBorderSize: 2px;
    --dfDeleteHoverBorderColor: #000000;
    --dfDeleteHoverBorderRadius: 50px;

}

#drawflow {
    background: var(--dfBackgroundColor);
    background-size: var(--dfBackgroundSize) var(--dfBackgroundSize);
    background-image: var(--dfBackgroundImage);
}

.drawflow .drawflow-node {
    display: var(--dfNodeType);
    background: var(--dfNodeBackgroundColor);
    color: var(--dfNodeTextColor);
    border: var(--dfNodeBorderSize) solid var(--dfNodeBorderColor);
    border-radius: var(--dfNodeBorderRadius) !important;
    min-height: var(--dfNodeMinHeight);
    width: auto;
    min-width: var(--dfNodeMinWidth);
    padding-top: var(--dfNodePaddingTop);
    padding-bottom: var(--dfNodePaddingBottom);
    -webkit-box-shadow: var(--dfNodeBoxShadowHL) var(--dfNodeBoxShadowVL) var(--dfNodeBoxShadowBR) var(--dfNodeBoxShadowS) var(--dfNodeBoxShadowColor);
    box-shadow: var(--dfNodeBoxShadowHL) var(--dfNodeBoxShadowVL) var(--dfNodeBoxShadowBR) var(--dfNodeBoxShadowS) var(--dfNodeBoxShadowColor);
}

.drawflow .drawflow-node:hover {
    background: var(--dfNodeHoverBackgroundColor);
    color: var(--dfNodeHoverTextColor);
    border: var(--dfNodeHoverBorderSize) solid var(--dfNodeHoverBorderColor);
    border-radius: var(--dfNodeHoverBorderRadius) !important;
    -webkit-box-shadow: var(--dfNodeHoverBoxShadowHL) var(--dfNodeHoverBoxShadowVL) var(--dfNodeHoverBoxShadowBR) var(--dfNodeHoverBoxShadowS) var(--dfNodeHoverBoxShadowColor);
    box-shadow: var(--dfNodeHoverBoxShadowHL) var(--dfNodeHoverBoxShadowVL) var(--dfNodeHoverBoxShadowBR) var(--dfNodeHoverBoxShadowS) var(--dfNodeHoverBoxShadowColor);
    cursor: pointer;
}

.drawflow .drawflow-node.selected {
    background: var(--dfNodeSelectedBackgroundColor);
    color: var(--dfNodeSelectedTextColor);
    border: var(--dfNodeSelectedBorderSize) solid var(--dfNodeSelectedBorderColor);
    border-radius: var(--dfNodeSelectedBorderRadius) !important;
    -webkit-box-shadow: var(--dfNodeSelectedBoxShadowHL) var(--dfNodeSelectedBoxShadowVL) var(--dfNodeSelectedBoxShadowBR) var(--dfNodeSelectedBoxShadowS) var(--dfNodeSelectedBoxShadowColor);
    box-shadow: var(--dfNodeSelectedBoxShadowHL) var(--dfNodeSelectedBoxShadowVL) var(--dfNodeSelectedBoxShadowBR) var(--dfNodeSelectedBoxShadowS) var(--dfNodeSelectedBoxShadowColor);
}

.drawflow .drawflow-node .input {
    left: var(--dfInputLeft);
    background: var(--dfInputBackgroundColor);
    border: var(--dfInputBorderSize) solid var(--dfInputBorderColor);
    border-radius: var(--dfInputBorderRadius) !important;
    height: var(--dfInputHeight);
    width: var(--dfInputWidth);
}

.drawflow .drawflow-node .input:hover {
    background: var(--dfInputHoverBackgroundColor);
    border: var(--dfInputHoverBorderSize) solid var(--dfInputHoverBorderColor);
    border-radius: var(--dfInputHoverBorderRadius) !important;
}

.drawflow .drawflow-node .outputs {
    float: var(--dfNodeTypeFloat);
}

.drawflow .drawflow-node .output {
    right: var(--dfOutputRight);
    background: var(--dfOutputBackgroundColor);
    border: var(--dfOutputBorderSize) solid var(--dfOutputBorderColor);
    border-radius: var(--dfOutputBorderRadius) !important;
    height: var(--dfOutputHeight);
    width: var(--dfOutputWidth);
}

.drawflow .drawflow-node .output:hover {
    background: var(--dfOutputHoverBackgroundColor);
    border: var(--dfOutputHoverBorderSize) solid var(--dfOutputHoverBorderColor);
    border-radius: var(--dfOutputHoverBorderRadius) !important;
}

.drawflow .connection .main-path {
    stroke-width: var(--dfLineWidth);
    stroke: var(--dfLineColor);
}

.drawflow .connection .main-path:hover {
    stroke: var(--dfLineHoverColor);
}

.drawflow .connection .main-path.selected {
    stroke: var(--dfLineSelectedColor);
}

.drawflow .connection .point {
    stroke: var(--dfRerouteBorderColor);
    stroke-width: var(--dfRerouteBorderWidth);
    fill: var(--dfRerouteBackgroundColor);
}

.drawflow .connection .point:hover {
    stroke: var(--dfRerouteHoverBorderColor);
    stroke-width: var(--dfRerouteHoverBorderWidth);
    fill: var(--dfRerouteHoverBackgroundColor);
}

.drawflow-delete {
    display: var(--dfDeleteDisplay);
    color: var(--dfDeleteColor);
    background: var(--dfDeleteBackgroundColor);
    border: var(--dfDeleteBorderSize) solid var(--dfDeleteBorderColor);
    border-radius: var(--dfDeleteBorderRadius) !important;
}

.parent-node .drawflow-delete {
    top: var(--dfDeleteTop);
}

.drawflow-delete:hover {
    color: var(--dfDeleteHoverColor);
    background: var(--dfDeleteHoverBackgroundColor);
    border: var(--dfDeleteHoverBorderSize) solid var(--dfDeleteHoverBorderColor);
    border-radius: var(--dfDeleteHoverBorderRadius) !important;
}