/* Page Transitions & Loading Effects */

/* Initial loading animation */
.page-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #0c0c10;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999;
    transition: opacity 0.5s ease, visibility 0.5s ease;
}

.page-loader.fade-out {
    opacity: 0;
    visibility: hidden;
}

.loader {
    width: 80px;
    height: 80px;
    position: relative;
}

.loader-circle {
    position: absolute;
    width: 100%;
    height: 100%;
    border: 4px solid transparent;
    border-top-color: #c8a2ff;
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

.loader-circle:nth-child(1) {
    animation-delay: 0s;
}

.loader-circle:nth-child(2) {
    width: 70%;
    height: 70%;
    top: 15%;
    left: 15%;
    border-top-color: #9370DB;
    animation-delay: 0.2s;
    animation-direction: reverse;
}

.loader-circle:nth-child(3) {
    width: 40%;
    height: 40%;
    top: 30%;
    left: 30%;
    border-top-color: #6d4dbb;
    animation-delay: 0.4s;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* Page transition effect */
.page-transition {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #0c0c10;
    z-index: 9998;
    transform: translateY(100%);
    transition: transform 0.5s cubic-bezier(0.77, 0, 0.175, 1);
}

.page-transition.active {
    transform: translateY(0);
}

.page-transition.leave {
    transform: translateY(-100%);
}

/* Smooth scrolling */
html {
    scroll-behavior: smooth;
}

/* For scroll animations */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

/* Special transition for artistic images */
.image-load {
    opacity: 0;
    filter: blur(10px);
    transform: scale(1.1);
    transition: opacity 0.8s ease, filter 1s ease, transform 0.8s ease;
}

.image-load.active {
    opacity: 1;
    filter: blur(0);
    transform: scale(1);
}

/* Text effect */
.char-animation {
    display: inline-block;
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.5s ease, transform 0.5s ease;
}

.char-animation.active {
    opacity: 1;
    transform: translateY(0);
}
