/* ═══════════════════════════════════════
   HOME — styles spécifiques à la homepage
   ═══════════════════════════════════════ */

/* ── Page transitions ─────────────────── */
body { transition: transform 0.4s ease, opacity 0.4s ease; }
body.page-leave { transform: translateX(-100%); opacity: 0; }
body.slider-open { overflow: hidden; }

/* iOS : empêche le scroll sous le slider */
.ct-contact { touch-action: pan-x; overscroll-behavior: none; }

/* ── Images grille (CRITIQUE : ne pas supprimer) ── */
img { width: 100%; animation: fadeIn .5s; }

/* ── Sizer Shuffle : 1/12 container, nécessaire hors media-query ── */
/* Sans cette règle, mobile < 768px → sizer = 100% → Shuffle calcule 1 colonne */
.my-sizer-element { width: 8.33333%; }

/* ── Loader plein écran ────────────────── */
.preload {
  transition: opacity 0.7s ease;
  pointer-events: auto;
}
.preload.fading {
  opacity: 0;
  pointer-events: none;
}
.preload.gone { display: none; }

.page-load-status {
  display: none;
  padding-top: 20px;
  border-top: 1px solid #DDD;
  font-size: 0.75em;
  color: #777;
}

/* ── About : toggle flèche ─────────────── */
.btn-about-toggle .toggle-arrow-wrap svg#icon {
  transform: rotate(-90deg);
  transition: transform 0.3s ease;
}
.btn-about-toggle[aria-expanded="true"] .toggle-arrow-wrap svg#icon {
  transform: rotate(90deg);
}

/* ── About : grille de colonnes ─────────── */
.about-cols-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem 2rem;
  padding-top: .5rem;
  padding-bottom: 1rem;
  font-size: 1rem;
  color: var(--color-gray-600);
}
.more-content a {
  color: var(--color-gray-600);
  text-decoration: underline;
}
.more-content a:hover { color: var(--color-gray-800); }
/* Colonnes Projets et Contact : pas d'underline */
.about-col-projets a,
.about-col-contact a { text-decoration: none; }

/* ── Slider : icône projet ── */
.slider-project svg#icon { width: 20px; height: 20px; }

/* ── Slider : barre d'info 2 lignes ─────── */
.slider-bar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 0 1rem 1rem;
  z-index: 10;
  pointer-events: none;
  mix-blend-mode: difference;
  color: white;
}
.slider-bar > * { pointer-events: auto; }
.slider-bar * { color: white; }

.slider-bar-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  line-height: 1.5;
}

.slider-caption {
  color: var(--color-gray-500);
  font-size: 1rem;
}

slider-project a {
  text-decoration: none;
}

/* Lien projet : visible quand la classe .has-project est ajoutée par JS */
.slider-project {
  display: none;
  align-items: center;
  gap: .4rem;
  text-decoration: none;
  cursor: e-resize;
  color: var(--color-gray-500);
  font-size: 1rem;
}
.slider-project.has-project { display: inline-flex; text-decoration: none; }

.slider-project-name {
  white-space: nowrap;
}

/* Prev / Next */
.slider-nav { display: inline-flex; gap: .5rem; }

.slider-btn {
  font: inherit;
  background: none;
  border: 0;
  color: var(--color-gray-500);
  cursor: pointer;
  padding: 0;
}
.slider-btn:hover { color: var(--color-gray-800); }

.slider-btn-close {
  display: inline-flex;
  align-items: center;
  gap: .2rem;
  cursor: s-resize;
}
.slider-btn-close svg#icon {
  width: 20px;
  transform: rotate(-90deg);
}

/* ── DEBUG : bordure rouge = paysage, bleue = portrait (sur l'img, pas le container) ── 
#grid .picture-item.is-landscape .picture-item__img img { border-bottom: 3px solid red !important; }
#grid .picture-item:not(.is-landscape) .picture-item__img img { border-bottom: 3px solid blue !important; }
*/
/* ── Grille : background gris pendant le chargement (img uniquement) ── */
.picture-item__img img { background-color: #ebebeb; }

/* ── Grille : transitions fluides x3↔x6, infos↔images ─ */
.picture-item {
  transition: width 0.35s ease, height 0.35s ease, opacity 0.3s ease;
}
.picture-item__img,
.picture-item__details {
  transition: opacity 0.2s ease;
}

/* ── Grille x6 (mode images) : hover baisse l'opacité des non-survolés ── */
#grid.grid-x6:not(.images-mode):hover .picture-item:not(:hover) {
  opacity: 0.45;
  transition: opacity .2s;
}

/* ── Tooltip nom du projet sur l'icône + ── */
.project-name-tooltip {
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  padding-left: .3rem;
  white-space: nowrap;
  font-size: 0.875rem;
  color: var(--color-gray-500);
  visibility: hidden;
  opacity: 0;
  transition: opacity .15s;
  pointer-events: none;
}
a.plus:hover .project-name-tooltip {
  visibility: visible;
  opacity: 1;
}

/* ── Grille x3 : images paysage sur 2 cols (laptop uniquement) ─ */
.picture-item.col-3\@md.x3-wide { width: 66.66% !important; }
@media only screen and (max-width: 798px) {
  /* Mobile : paysage x3 = même largeur que portrait (2 par ligne, pas pleine largeur) */
  .picture-item.col-3\@md.x3-wide { width: 50% !important; }
}

/* ══════════════════════════════════════════
   MEDIA QUERIES — mobile / tablette
   ══════════════════════════════════════════ */

@media screen and (max-width: 798px) {
  /* About : empêcher l'overflow horizontal */
  .about-cols-grid { grid-template-columns: repeat(2, 1fr); }
  .about-col { min-width: 0; word-break: break-word; }
  .more-content { overflow: hidden; max-width: 100%; }
  /* La zone intro (grid > column) ne doit pas dépasser la viewport */
  .about-toggle-zone .grid { overflow: hidden; max-width: 100vw; }
  .about-toggle-zone .grid > .column {
    grid-column: 1 / -1;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
  }
  .about-toggle-zone p { display: block !important; overflow-wrap: break-word; word-break: break-word; }

  /* Slider bar */
  .slider-btn-close .close-text { display: none; }

  /* Slider bar top : légende puis lien projet en colonne */
  .slider-bar-top { flex-direction: column; align-items: flex-start; gap: .15rem; }
  .slider-caption,
  .slider-project { width: auto; white-space: normal; justify-content: flex-start; }
  .slider-project-name { white-space: normal; word-break: break-word; }

  /* Scroll lock iOS sous le slider */
  body.slider-open { position: fixed; width: 100%; height: 100%; }

  /* Gallery slider : 100dvh pour exclure le chrome du navigateur */
  .ct-contact,
  .ct-contact .gallery,
  .ct-contact .flickity-viewport {
    width: 100vw;
    max-width: 100vw;
    height: 100dvh;
  }
  .ct-contact .gallery-cell {
    width: 100vw;
    max-width: 100vw;
    height: 100dvh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-top: env(safe-area-inset-top, 0px);
    padding-bottom: 5.5rem;
  }
  .ct-contact .gallery-cell img {
    max-height: calc(100dvh - 6rem - env(safe-area-inset-top, 0px));
    width: 100%;
    object-fit: contain;
    flex: 1;
    min-height: 0;
  }
  /* Slider bar : espace pour le home indicator en bas */
  .ct-contact .slider-bar {
    padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
  }
}

@media screen and (max-width: 480px) {
  .about-cols-grid { grid-template-columns: 1fr; }
}

/* ── iPhone safe area : titre fixe respecte le notch ────────── */
@supports (padding-top: env(safe-area-inset-top)) {
  .bio > a[href="/"] {
    padding-top: calc(.5rem + env(safe-area-inset-top)) !important;
  }
}
