// Overlay

.overlay,
.overlay-visible {
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    color: #fff;
    transition: padding .3s ease-out, background-color .3s, opacity .3s;
}

.overlay {
    padding-top: 10rem;
    background: rgba(0,0,0,.3);
    opacity: 0;
    a > & {
        cursor: pointer;
    }
    figure:hover & {
        padding-top: 0;
        opacity: 1;
    }
    a:hover {
        color: #fff;
        text-decoration: underline;
    }
    a.social-link {
        border-color: #fff;
    }
    .social-link:hover {
        color: #fff;
        text-decoration: none;
    }
}
.overlay-visible {
    figure:hover & {
        background: rgba( $primary-color, .9);
        padding-bottom: 9rem;
    }
}
.overlay-transparent {
    background: transparent;
}

// Global
.overlay-effect1,
.overlay-effect2,
.overlay-effect3,
.overlay-effect4 {
    overflow: hidden;
    figure, .banner {
        position: relative;
    }

    figure::after {
        content: '';
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        background: $primary-color-dark;
        opacity: 0;
        transition: opacity .3s, background .3s, transform .3s;
    }

    &:hover figure::after {
        opacity: .2;
    }
}
.overlay-effect2,
.overlay-effect4 {
    figure::before {
        content: '';
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        background-color: #fff;
        opacity: .2;
        transition: opacity .5s ease, transform .5s ease;
    }
}


// Zoom
.overlay-zoom {
    overflow: hidden;
    img {
        transition: transform .3s;
    }
    &:hover {
        img {
            transform: scale(1.08);
        }
    }
}

// Effect1
.overlay-effect1:hover figure::after {
    transform: scale(1, 1);
    visibility: visible;
    opacity: 0;
    transition: transform .5s linear, opacity .5s linear;
}
.overlay-effect1 figure::after {
    transform: scale(0, 1);
    opacity: .4;
    background-color: #fff;
    visibility: hidden;
}

// Effect2
.overlay-effect2:hover figure::after,
.overlay-effect2:hover figure::before {
    opacity: 0;
    transform: none;
}
.overlay-effect2 figure::after {
    transform: translateX(-100%);
    background-color: #fff;
    opacity: .2;
    transition: transform .9s ease, opacity .9s ease;
}
.overlay-effect2 figure::before {
    transform: translateX(100%);
    transition: transform .9s ease, opacity .9s ease;
}

// Effect3
.overlay-effect3:hover figure::after {
    top: 100%;
    left: -100%;
    transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,200%,0);
}
.overlay-effect3 figure::after {
    left: 50%;
    width: 120%;
    height: 60px;
    background-color: #fff;
    transform: scale3d(1.9,1.4,1) rotate3d(0,0,1,45deg) translate3d(0,-150%,0);
    transition: .5s linear, top .5s linear, left .5s linear;
}

// Effect4
.overlay-effect4:hover figure::after,
.overlay-effect4:hover figure::before {
    transform: scale(1, 1);
}
.overlay-effect4 figure::after {
    transform: scale(0, 1);
    background-color: #fff;
}
.overlay-effect4 figure::before {
    transform: scale(1, 0);
    transition: transform .3s;
}

// Opacity
.overlay-opacity {
    img {
        transition: .3s;
    }
    &:hover img {
        filter: opacity(0.9);
    }
}

// overlay-contentIn
.overlay-contentIn {
    overflow: hidden;
    .banner-layer,
    .banner-content {
        opacity: 0;
        visibility: hidden;
        transition: opacity .3s;
    }
    &:hover {
        .banner-layer,
        .banner-content {
            opacity: 1;
            visibility: visible;
        }
    }
}

// overlay-contentOut
.overlay-contentOut {
    overflow: hidden;
    .banner-layer,
    .banner-content {
        opacity: 1;
        visibility: visible;
        transition: opacity .3s;
    }
    &:hover {
        .banner-layer,
        .banner-content {
            opacity: 0;
            visibility: hidden;
        }
    }
}


// Particle Overlay Effect
.particle-effect {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

// Snowfall
.snowfall {
    background-image: url(../images/effects/s1.png),url(../images/effects/s2.png),url(../images/effects/s3.png);
    animation: snow 10s linear infinite;
}
@keyframes snow {
    0% {
        background-position: 0px 0px,0px 0px,0px 0px;
    }
    50% {
        background-position: 500px 500px,100px 300px,-200px 250px;
    }
    100% {
        background-position: 400px 800px,300px 600px,-200px 400px;
    }
}

// Sparkle
.sparkle {
    background-image: url(../images/effects/sparkle1.png),url(../images/effects/sparkle2.png);
    animation: sparkle 60s linear infinite;
}
@keyframes sparkle {
    0% {
        background-position: 0px 0px,0px 0px,0px 0px;
    }
    100% {
        background-position: -500px -1000px,-400px -400px,300px 300px;
    }
}

//KenBurns
@keyframes kenBurnsToRight {
    0% {
        transform: scale(1.2);
    }

    100% {
        transform: scale(1);
    }
}

@keyframes kenBurnsToLeft {
    0% {
        transform: scale(1.2);
    }

    100% {
        transform: scale(1);
    }
}

.kenBurnsToRight {
    animation-name: kenBurnsToRight;
    animation-timing-function: linear;
    animation-fill-mode: both;
    transform-origin: right;
}

.kenBurnsToLeft {
    animation-name: kenBurnsToLeft;
    animation-timing-function: linear;
    animation-fill-mode: both;
    transform-origin: left;
}

.kenBurnsToLeftTop {
    animation-name: kenBurnsToLeft;
    animation-timing-function: linear;
    animation-fill-mode: both;
    transform-origin: left top;
}

.kenBurnsToRightTop {
    animation-name: kenBurnsToRight;
    animation-timing-function: linear;
    animation-fill-mode: both;
    transform-origin: right top;
}