/* ============================================================
   LOADER — Cinématique, cohérent avec l'esthétique du portfolio
   ============================================================ */

#loader {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: all;
    overflow: hidden;
}

/* Les deux panneaux du split */
.loader-panel {
    position: absolute;
    left: 0;
    width: 100%;
    height: 50%;
    background: #0d0d0d;
    transition: transform 0.9s cubic-bezier(0.76, 0, 0.24, 1);
    z-index: 2;
}

.loader-panel-top {
    top: 0;
    transform: translateY(0%);
}

.loader-panel-bottom {
    bottom: 0;
    transform: translateY(0%);
}

/* État ouvert (split reveal) */
#loader.is-open .loader-panel-top {
    transform: translateY(-100%);
}

#loader.is-open .loader-panel-bottom {
    transform: translateY(100%);
}

/* Contenu central du loader */
.loader-content {
    position: relative;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2.5rem;
    pointer-events: none;
}

/* Nom — lettres individuelles */
.loader-name {
    font-family: "PP Neue Montreal", sans-serif;
    font-size: clamp(2rem, 5vw, 4.5rem);
    font-weight: 500;
    color: #fff;
    letter-spacing: -0.02em;
    display: flex;
    align-items: baseline;
    gap: 0;
    overflow: hidden;
}

.loader-letter {
    display: inline-block;
    transform: translateY(110%);
    opacity: 0;
}

/* Barre de progression */
.loader-progress-wrap {
    width: 180px;
    height: 1px;
    background: rgba(255,255,255,0.1);
    position: relative;
    overflow: hidden;
}

.loader-progress-bar {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 0%;
    background: rgba(255,255,255,0.6);
    transition: width 0.05s linear;
}

/* Compteur % */
.loader-counter {
    font-family: "PP Neue Montreal", sans-serif;
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    color: rgba(255,255,255,0.25);
    opacity: 0;
    transform: translateY(6px);
    min-width: 3ch;
    text-align: center;
}

/* Ligne de status */
.loader-status {
    font-family: "PP Neue Montreal", sans-serif;
    font-size: 0.65rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.18);
    opacity: 0;
}

/* Une fois le loader terminé, on le retire du flux */
#loader.is-done {
    pointer-events: none;
}
