.animate-text {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}

    .animate-text.in-view {
        opacity: 1;
        transform: translateY(0);
    }

.delay-1 {
    transition-delay: 0.2s;
}

.delay-2 {
    transition-delay: 0.4s;
}

.slide-left-on-view,
.slide-right-on-view {
    opacity: 0;
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.slide-left-on-view {
    transform: translateX(-40px);
}

.slide-right-on-view {
    transform: translateX(40px);
}

    .slide-left-on-view.in-view,
    .slide-right-on-view.in-view {
        opacity: 1;
        transform: translateX(0);
    }

.blur-in-on-view {
    opacity: 0;
    filter: blur(8px);
    transform: translateY(15px);
    transition: opacity 1.8s ease, filter 1.8s ease, transform 1.8s ease;
}

    .blur-in-on-view.in-view {
        opacity: 1;
        filter: blur(0);
        transform: translateY(0);
    }

.typewriter-on-view {
    opacity: 0;
    overflow: hidden;
    white-space: nowrap;
    border-right: 2px solid #fff;
    width: 0;
}

    .typewriter-on-view.in-view {
        opacity: 1;
        animation: typing 2s steps(14, end) forwards, blinkCursor 0.8s step-end infinite;
    }

@keyframes typing {
    from {
        width: 0;
    }

    to {
        width: 14ch;
    }
}

@keyframes blinkCursor {
    50% {
        border-color: transparent;
    }
}

.video-hero {
    position: relative;
    width: 100vw;
    min-height: 520px;
    margin-left: calc(50%-50vw);
    overflow: hidden;
    background: transparent;
}

.video-hero-bg {
    position: absolute !important;
    top: 50% !important;
    left: 50% !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 100% !important;
    min-height: 100% !important;
    transform: translate(-50%, -50%);
    object-fit: cover !important;
    display: block !important;
    background: transparent;
}

.video-hero-overlay {
    position: absolute;
    inset: 0;
    /* background: rgba(0,0,0,.35); /* darkens video so text is readable */
    z-index: 2;
}

.video-hero-content {
    position: relative;
    z-index: 3;
    min-height: 520px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 40px;
    color: white;
    max-width: 1920px;
}