/* ── Animated line + dot decorations ── */

.cf-anim-h,
.cf-anim-v,
.cf-anim-br {
    position: absolute;
    pointer-events: none;
    z-index: 0;
}

.cf-anim-h {
    top: -60px;
    right: calc(100% - 300px);
    width: 35vw;
    height: 32px;
}

@media screen and (max-width: 1024px) {
    .cf-anim-h {
        width: 40vw;
    }
}

.cf-anim-h .cf-line {
    position: absolute;
    top: 16px;
    left: 0;
    width: calc(100% - 50px);
    height: 1px;
    background: #374151;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 900ms cubic-bezier(0.65, 0, 0.35, 1);
}

.cf-anim-h .cf-dot {
    position: absolute;
    top: 50%;
    right: 0;
    width: 32px;
    height: 32px;
    margin-top: -16px;
    border-radius: 50%;
    background: #EB001B;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 400ms ease 700ms, transform 400ms ease 700ms;
}

.cf-anim-h.is-visible .cf-line {
    transform: scaleX(1);
}

.cf-anim-h.is-visible .cf-dot {
    opacity: 1;
    transform: scale(1);
}

.cf-anim-v {
    /* Offsets the parent's pt-24 (96px) so the line starts flush with the section's top edge. */
    top: -96px;
    left: -20px;
    bottom: 15%;
    width: 32px;
    z-index: -1;
}

.cf-anim-v .cf-line {
    position: absolute;
    top: 0;
    left: 50%;
    bottom: 48px;
    width: 1px;
    background: #767676;
    transform: translateX(-50%) scaleY(0);
    transform-origin: top;
    transition: transform 900ms cubic-bezier(0.65, 0, 0.35, 1);
}

.cf-anim-v .cf-dot {
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 32px;
    height: 32px;
    margin-left: -16px;
    border-radius: 50%;
    background: #005EAD;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 400ms ease 700ms, transform 400ms ease 700ms;
}

.cf-anim-v.is-visible .cf-line {
    transform: translateX(-50%) scaleY(1);
}

.cf-anim-v.is-visible .cf-dot {
    opacity: 1;
    transform: scale(1);
}

.cf-anim-br {
    bottom: 0;
    left: calc(100% - 40px);
    width: 35vw;
    height: 32px;
}

.cf-anim-br .cf-line {
    position: absolute;
    top: 16px;
    right: 0;
    width: calc(100% - 50px);
    height: 1px;
    background: #374151;
    transform: scaleX(0);
    transform-origin: right;
    transition: transform 900ms cubic-bezier(0.65, 0, 0.35, 1);
}

.cf-anim-br .cf-dot {
    position: absolute;
    top: 50%;
    left: 0;
    width: 32px;
    height: 32px;
    margin-top: -16px;
    border-radius: 50%;
    background: #62B9CC;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 400ms ease 700ms, transform 400ms ease 700ms;
}

.cf-anim-br.is-visible .cf-line {
    transform: scaleX(1);
}

.cf-anim-br.is-visible .cf-dot {
    opacity: 1;
    transform: scale(1);
}