/* Image Swap Hover Block Styles */
.image-swap-container {
    position: relative;
    display: inline-block;
    overflow: hidden;
    cursor: pointer;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    transition: box-shadow 0.3s ease;
}

.image-swap-container:hover {
    box-shadow: 0 8px 12px rgba(0, 0, 0, 0.15);
}

.image-swap-container img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.image-swap-container .default-image,
.image-swap-container .hover-image {
    transition-property: opacity, transform;
    transition-timing-function: ease-in-out;
}

.image-swap-container .hover-image {
    position: absolute;
    top: 0;
    left: 0;
}

/* FADE Effect */
.image-swap-container.effect-fade .default-image {
    opacity: 1;
}

.image-swap-container.effect-fade .hover-image {
    opacity: 0;
}

.image-swap-container.effect-fade:hover .default-image {
    opacity: 0;
}

.image-swap-container.effect-fade:hover .hover-image {
    opacity: 1;
}

/* ZOOM IN Effect */
.image-swap-container.effect-zoom-in .default-image {
    transform: scale(1);
}

.image-swap-container.effect-zoom-in .hover-image {
    opacity: 0;
    transform: scale(0.8);
}

.image-swap-container.effect-zoom-in:hover .default-image {
    opacity: 0;
    transform: scale(1.1);
}

.image-swap-container.effect-zoom-in:hover .hover-image {
    opacity: 1;
    transform: scale(1);
}

/* ZOOM OUT Effect */
.image-swap-container.effect-zoom-out .default-image {
    transform: scale(1);
}

.image-swap-container.effect-zoom-out .hover-image {
    opacity: 0;
    transform: scale(1.2);
}

.image-swap-container.effect-zoom-out:hover .default-image {
    opacity: 0;
    transform: scale(0.9);
}

.image-swap-container.effect-zoom-out:hover .hover-image {
    opacity: 1;
    transform: scale(1);
}

/* SLIDE LEFT Effect */
.image-swap-container.effect-slide-left .hover-image {
    opacity: 0;
    transform: translateX(-100%);
}

.image-swap-container.effect-slide-left:hover .default-image {
    opacity: 0;
    transform: translateX(100%);
}

.image-swap-container.effect-slide-left:hover .hover-image {
    opacity: 1;
    transform: translateX(0);
}

/* SLIDE RIGHT Effect */
.image-swap-container.effect-slide-right .hover-image {
    opacity: 0;
    transform: translateX(100%);
}

.image-swap-container.effect-slide-right:hover .default-image {
    opacity: 0;
    transform: translateX(-100%);
}

.image-swap-container.effect-slide-right:hover .hover-image {
    opacity: 1;
    transform: translateX(0);
}

/* SLIDE UP Effect */
.image-swap-container.effect-slide-up .hover-image {
    opacity: 0;
    transform: translateY(100%);
}

.image-swap-container.effect-slide-up:hover .default-image {
    opacity: 0;
    transform: translateY(-100%);
}

.image-swap-container.effect-slide-up:hover .hover-image {
    opacity: 1;
    transform: translateY(0);
}

/* SLIDE DOWN Effect */
.image-swap-container.effect-slide-down .hover-image {
    opacity: 0;
    transform: translateY(-100%);
}

.image-swap-container.effect-slide-down:hover .default-image {
    opacity: 0;
    transform: translateY(100%);
}

.image-swap-container.effect-slide-down:hover .hover-image {
    opacity: 1;
    transform: translateY(0);
}

/* BLUR Effect */
.image-swap-container.effect-blur .default-image {
    filter: blur(0);
}

.image-swap-container.effect-blur .hover-image {
    opacity: 0;
    filter: blur(5px);
}

.image-swap-container.effect-blur:hover .default-image {
    opacity: 0;
    filter: blur(5px);
}

.image-swap-container.effect-blur:hover .hover-image {
    opacity: 1;
    filter: blur(0);
}

/* FLIP Effect */
.image-swap-container.effect-flip {
    perspective: 1000px;
}

.image-swap-container.effect-flip .default-image,
.image-swap-container.effect-flip .hover-image {
    backface-visibility: hidden;
    transition: transform 0.6s ease-in-out;
}

.image-swap-container.effect-flip .hover-image {
    transform: rotateY(180deg);
    opacity: 1;
}

.image-swap-container.effect-flip:hover .default-image {
    transform: rotateY(180deg);
}

.image-swap-container.effect-flip:hover .hover-image {
    transform: rotateY(0);
}

/* FLASH Effect */
.image-swap-container.effect-flash .hover-image {
    opacity: 0;
}

.image-swap-container.effect-flash:hover .default-image {
    animation: flashOut 0.4s ease-in-out;
}

.image-swap-container.effect-flash:hover .hover-image {
    animation: flashIn 0.4s ease-in-out;
}

@keyframes flashOut {
    0% { opacity: 1; }
    50% { opacity: 0; }
    100% { opacity: 0; }
}

@keyframes flashIn {
    0% { opacity: 0; }
    50% { opacity: 1; }
    100% { opacity: 1; }
}

/* PULSE Effect */
.image-swap-container.effect-pulse .hover-image {
    opacity: 0;
}

.image-swap-container.effect-pulse:hover .default-image {
    animation: pulseOut 0.5s ease-in-out;
}

.image-swap-container.effect-pulse:hover .hover-image {
    animation: pulseIn 0.5s ease-in-out;
}

@keyframes pulseOut {
    0% { opacity: 1; transform: scale(1); }
    50% { opacity: 0; transform: scale(0.95); }
    100% { opacity: 0; transform: scale(1); }
}

@keyframes pulseIn {
    0% { opacity: 0; transform: scale(1.05); }
    50% { opacity: 1; transform: scale(1); }
    100% { opacity: 1; transform: scale(1); }
}

/* GRAYSCALE TO COLOR Effect */
.image-swap-container.effect-grayscale .default-image {
    filter: grayscale(0);
}

.image-swap-container.effect-grayscale .hover-image {
    opacity: 0;
    filter: grayscale(100%);
}

.image-swap-container.effect-grayscale:hover .default-image {
    opacity: 0;
    filter: grayscale(100%);
}

.image-swap-container.effect-grayscale:hover .hover-image {
    opacity: 1;
    filter: grayscale(0);
}

/* CONTAINER STYLES */
.image-swap-container.effect-flip,
.image-swap-container.effect-blur {
    background: #f0f0f0;
}