/* =============================================================================
   PORTFOLIO — STYLE.CSS
   ============================================================================= */

/* ----- Reset ----- */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* ----- Base typographique ----- */

a {
  color: inherit;          /* lien noir */
  text-decoration: none; /* pas de soulignement */
}



html, body {
    height: 100%;
    overflow: hidden;
    font-family: "Times New Roman", Times, serif;
    font-size: 14px;
    font-weight: normal;
    line-height: 17px;
    color: #B0B0B0;
}

/* ----- Layout page ----- */

.page {
    height: 100vh;
    display: flex;
    flex-direction: column;
}

/* ----- Panneaux ----- */

.panel {
    height: 50vh;
    overflow: hidden;
    position: relative;
}

/* ----- Fondus à la jonction ----- */

.fade-overlay {
    position: absolute;
    left: 0;
    right: 0;
    height: 15px;
    z-index: 2;
    pointer-events: none;
}

.fade-bottom {
    bottom: 0;
    background: linear-gradient(to top, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%);
}

.fade-top {
    top: 0;
    background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%);
    opacity: 0;
    transition: opacity 0.3s ease;
}

.fade-top.is-visible {
    opacity: 1;
}

/* ----- Contenu scrollable ----- */

.scroll-content {
    padding: 10px;
}

/* ----- Grille flex-wrap ----- */

.grid {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    align-content: flex-start;
}

/* ----- Cellules images ----- */

.img-cell {
    overflow: hidden;
    cursor: pointer;
    flex-shrink: 0;
    flex-grow: 0;
    background: #B0B0B0;
    position: relative;
}

.loader-text {
    position: absolute;
    top: 5px;
    left: 5px;
    font-family: "Times New Roman", Times, serif;
    font-size: 14px;
    font-weight: normal;
    line-height: 17px;
    z-index: 3;
    white-space: nowrap;
}

.loader-text span {
    color: #fff;
    opacity: 0;
}

.loader-text span:nth-child(1)  { animation: letter 2.4s 0.0s infinite; }
.loader-text span:nth-child(2)  { animation: letter 2.4s 0.12s infinite; }
.loader-text span:nth-child(3)  { animation: letter 2.4s 0.24s infinite; }
.loader-text span:nth-child(4)  { animation: letter 2.4s 0.36s infinite; }
.loader-text span:nth-child(5)  { animation: letter 2.4s 0.48s infinite; }
.loader-text span:nth-child(6)  { animation: letter 2.4s 0.60s infinite; }
.loader-text span:nth-child(7)  { animation: letter 2.4s 0.72s infinite; }
.loader-text span:nth-child(8)  { animation: letter 2.4s 0.84s infinite; }
.loader-text span:nth-child(9)  { animation: letter 2.4s 0.96s infinite; }
.loader-text span:nth-child(10) { animation: letter 2.4s 1.08s infinite; }

@keyframes letter {
    0%, 4% { opacity: 0; }
    5% { opacity: 1; }
    70% { opacity: 1; }
    85%, 100% { opacity: 0; }
}

.img-cell img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    position: relative;
    z-index: 2;
    border: none;
    pointer-events: none;
}

.img-cell video,
.img-cell iframe {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 2;
    border: none;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.img-cell video.loaded,
.img-cell iframe.loaded {
    opacity: 1;
}

.img-cell .placeholder {
    width: 100%;
    height: 100%;
    background: #B0B0B0;
}

/* ----- Cellules légendes ----- */

.cap-cell {
    overflow: hidden;
    flex-shrink: 0;
    flex-grow: 0;
}

.cap-cell p {
    font-family: "Times New Roman", Times, serif;
    font-size: 14px;
    font-weight: normal;
    line-height: 17px;
    color: #B0B0B0;
    transition: color 0.2s ease;
    hyphens: none;
    -webkit-hyphens: none;
    -ms-hyphens: none;
    overflow-wrap: break-word;
    word-break: break-word;
}

.cap-cell p.is-active {
    color: #000;
}
