/* =========================================================
   Peintre Réalisations — styles front
   Design : cartes à taille fixe et cohérente, jamais étirées,
   que ce soit en grille (retour à la ligne) ou en slider
   (défilement horizontal). C'est le même principe que la
   plupart des portfolios / galeries pro : une carte garde
   toujours une taille raisonnable, quel que soit le nombre
   de réalisations ou la largeur du conteneur.
   ========================================================= */

.pr-realisations{
  --pr-bg:#EEF1EC;
  --pr-accent:#2B5C73;
  --pr-accent-dark:#1c4356;
  --pr-warm:#C98A3E;
  --pr-warm-dark:#a86c26;
  --pr-text:#20262B;
  --pr-radius:14px;
  --pr-card-width:320px;
  --pr-gap:20px;
  margin:0;
  font-family:inherit;
  box-sizing:border-box;
}
.pr-realisations *,
.pr-realisations *::before,
.pr-realisations *::after,
.pr-modal, .pr-modal *{ box-sizing:border-box; }

.pr-realisations .pr-title{
  font-size:1.6rem;
  margin:0 0 1.25rem;
  color:var(--pr-text);
  font-weight:700;
}

/* ---------------------------------------------------------
   Rangée de cartes — commune à la grille et au slider
   --------------------------------------------------------- */
.pr-realisations .pr-track{
  display:flex !important;
  align-items:stretch;
  gap:var(--pr-gap);
  list-style:none !important;
  margin:0 !important;
  padding:0 !important;
}
.pr-realisations .pr-slide{
  flex:0 0 auto !important;
  width:var(--pr-card-width);
  max-width:100%;
  list-style:none;
  margin:0;
  padding:0;
}

/* Grille : retour à la ligne, alignée à gauche */
.pr-realisations .pr-track-grid{
  flex-wrap:wrap !important;
  padding-bottom:.25rem !important;
}

/* Slider : une seule ligne, déplacée par JS via transform (pas de
   scroll natif du navigateur — comportement "carrousel" classique) */
.pr-realisations .pr-slider-wrap{
  position:relative;
  width:100%;
}
.pr-realisations .pr-track-viewport{
  width:100%;
  max-width:100%;
  margin:0 auto;
  overflow:hidden;
}
.pr-realisations .pr-track-slider{
  flex-wrap:nowrap !important;
  will-change:transform;
  transition:transform .4s cubic-bezier(.25,.1,.25,1);
  cursor:grab;
  touch-action:pan-y;
  -webkit-user-select:none;
  user-select:none;
}
.pr-realisations .pr-track-slider.is-dragging{
  cursor:grabbing;
  transition:none;
}
.pr-realisations .pr-track-slider .pr-slide{ scroll-snap-align:unset; }
.pr-realisations .pr-track-slider .pr-slide-trigger{
  -webkit-user-drag:none;
}
.pr-realisations .pr-track-slider img{
  -webkit-user-drag:none;
  pointer-events:none;
}

/* Points de pagination */
.pr-realisations .pr-dots{
  display:flex; align-items:center; justify-content:center;
  gap:.5rem; margin-top:1.1rem;
}
.pr-realisations .pr-dots[hidden]{ display:none; }
.pr-realisations .pr-dot{
  width:8px !important; height:8px !important; min-width:8px !important; min-height:8px !important;
  padding:0 !important; margin:0 !important; border:none !important; border-radius:50% !important;
  background:rgba(32,38,43,.22) !important; cursor:pointer;
  -webkit-appearance:none; appearance:none;
  font-size:0 !important; line-height:0 !important;
  transition:background .15s ease, transform .15s ease;
}
.pr-realisations .pr-dot:hover{ background:rgba(32,38,43,.4) !important; }
.pr-realisations .pr-dot.is-active{
  background:var(--pr-accent) !important; transform:scale(1.25);
}

/* ---------------------------------------------------------
   Carte
   --------------------------------------------------------- */
.pr-realisations .pr-slide-trigger{
  all:unset;
  cursor:pointer;
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  height:auto !important;
  border-radius:var(--pr-radius) !important;
  overflow:hidden !important;
  position:relative !important;
  background:var(--pr-bg) !important;
  border:none !important;
  outline:none !important;
  margin:0 !important;
  padding:0 !important;
  font-size:1rem;
  box-shadow:0 1px 3px rgba(32,38,43,.12) !important;
  transition:transform .2s ease, box-shadow .2s ease;
}
.pr-realisations .pr-slide-trigger::before,
.pr-realisations .pr-slide-trigger::after,
.pr-realisations .pr-figure::before,
.pr-realisations .pr-figure::after,
.pr-realisations .pr-thumb::before,
.pr-realisations .pr-thumb::after{
  content:none !important;
  display:none !important;
}
.pr-realisations .pr-slide-trigger:hover,
.pr-realisations .pr-slide-trigger:focus-visible{
  transform:translateY(-4px);
  box-shadow:0 14px 28px rgba(32,38,43,.18) !important;
  outline:none;
}

.pr-realisations .pr-figure{
  position:relative;
  display:block;
  width:100%;
  aspect-ratio:4 / 3;
  margin:0;
  border:none !important;
}
.pr-realisations .pr-thumb{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  background:var(--pr-bg);
  border:none !important;
  border-radius:0 !important;
  box-shadow:none !important;
  filter:none !important;
  mask:none !important;
  clip-path:none !important;
}

.pr-realisations .pr-scrim{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,24,27,0) 45%, rgba(20,24,27,.82) 100%);
  pointer-events:none;
}
.pr-realisations .pr-caption{
  position:absolute; left:0; right:0; bottom:0;
  display:flex; flex-direction:column; gap:.15rem;
  padding:1rem 1.1rem .9rem;
  text-align:left;
}
.pr-realisations .pr-caption-title{
  font-weight:600; font-size:1rem; color:#fff;
  text-shadow:0 1px 3px rgba(0,0,0,.35);
  line-height:1.3;
}
.pr-realisations .pr-caption-ville{
  font-size:.82rem; color:#e7c793; font-weight:500;
}

.pr-realisations .pr-zoom-icon{
  position:absolute; top:.7rem; right:.7rem;
  width:30px; height:30px; border-radius:50%;
  background:rgba(20,24,27,.55); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:1.15rem; line-height:1;
  opacity:0; transform:scale(.8);
  transition:opacity .2s ease, transform .2s ease;
}
.pr-realisations .pr-slide-trigger:hover .pr-zoom-icon,
.pr-realisations .pr-slide-trigger:focus-visible .pr-zoom-icon{
  opacity:1; transform:scale(1);
}

/* ---------------------------------------------------------
   Flèches — masquées/grisées automatiquement en JS selon le
   besoin réel de défilement (voir realisations.js)
   --------------------------------------------------------- */
.pr-realisations .pr-nav{
  position:absolute !important;
  top:50% !important;
  transform:translateY(-50%) !important;
  z-index:3 !important;
  flex:0 0 auto;
  width:40px !important; height:40px !important; min-width:40px !important; min-height:40px !important;
  max-width:40px !important; max-height:40px !important;
  border-radius:50% !important;
  margin:0 !important; padding:0 !important;
  border:1px solid rgba(32,38,43,.12) !important;
  background:rgba(255,255,255,.96) !important;
  cursor:pointer;
  display:flex !important; align-items:center !important; justify-content:center !important;
  color:var(--pr-accent-dark) !important;
  box-shadow:0 4px 14px rgba(32,38,43,.16) !important;
  -webkit-appearance:none;
  appearance:none;
  font-size:0 !important;
  line-height:1 !important;
  transition:background .15s ease, color .15s ease, transform .15s ease, opacity .15s ease;
}
.pr-realisations .pr-nav svg{ width:18px !important; height:18px !important; flex-shrink:0; }
.pr-realisations .pr-nav:hover{
  background:var(--pr-accent) !important; color:#fff !important; transform:translateY(-50%) scale(1.07) !important;
}
.pr-realisations .pr-nav-prev{ left:-8px !important; }
.pr-realisations .pr-nav-next{ right:-8px !important; }
.pr-realisations .pr-nav-icon{ display:block; }
.pr-realisations .pr-nav.is-hidden{
  display:none !important;
}
.pr-realisations .pr-nav[disabled]{
  opacity:.35 !important; cursor:default; pointer-events:none;
}

@media (max-width:1024px){
  .pr-realisations .pr-nav-prev{ left:2px !important; }
  .pr-realisations .pr-nav-next{ right:2px !important; }
}

.pr-realisations .pr-empty{ color:#5b6570; font-style:italic; }

/* =========================================================
   Popup / fenêtre agrandie — une seule carte verticale, coins
   uniformes (même esprit visuel que les cartes du slider),
   image en haut, informations en dessous.
   ========================================================= */
.pr-modal[hidden]{ display:none !important; }
.pr-modal, .pr-modal *{
  border:none;
  box-shadow:none;
}
.pr-modal::before, .pr-modal::after,
.pr-modal-dialog::before, .pr-modal-dialog::after,
.pr-modal-image-wrap::before, .pr-modal-image-wrap::after,
.pr-modal-image::before, .pr-modal-image::after{
  content:none !important;
  display:none !important;
}
.pr-modal{
  position:fixed !important; inset:0 !important; z-index:99999;
  display:flex !important; align-items:center; justify-content:center;
  padding:1.5rem;
}
.pr-modal-backdrop{
  position:absolute; inset:0;
  background:rgba(15,18,20,.8);
  backdrop-filter:blur(4px);
}
.pr-modal-dialog{
  position:relative !important;
  background:#fff !important;
  border-radius:22px !important;
  overflow:hidden !important;
  width:min(460px,92vw) !important;
  max-width:92vw !important;
  max-height:88vh !important;
  display:flex !important;
  flex-direction:column !important;
  margin:0 !important;
  padding:0 !important;
  box-shadow:0 32px 64px rgba(0,0,0,.4) !important;
  animation:pr-modal-in .22s ease;
}
@keyframes pr-modal-in{
  from{ opacity:0; transform:scale(.96) translateY(10px); }
  to{ opacity:1; transform:scale(1) translateY(0); }
}
.pr-modal-image-wrap{
  flex:0 0 auto !important;
  width:100% !important;
  aspect-ratio:4 / 3 !important;
  background:var(--pr-bg, #EEF1EC);
  overflow:hidden !important;
  margin:0 !important;
  padding:0 !important;
  border-radius:0 !important;
}
.pr-modal-image{
  width:100% !important; height:100% !important;
  object-fit:cover !important; display:block !important;
  margin:0 !important; border:none !important; border-radius:0 !important;
  max-width:none !important;
}
.pr-modal-body{
  flex:1 1 auto;
  padding:1.6rem 1.75rem 1.9rem;
  overflow-y:auto;
}
.pr-modal-title{
  margin:0 0 .4rem; font-size:1.3rem; color:var(--pr-text, #20262B);
  line-height:1.3; font-weight:700;
}
.pr-modal-ville{
  color:var(--pr-warm-dark, #a86c26); font-weight:700; margin:0 0 .9rem; font-size:.82rem;
  text-transform:uppercase; letter-spacing:.05em;
}
.pr-modal-desc{ color:#3d454b; margin:0; line-height:1.6; font-size:.96rem; }
.pr-modal-close{
  position:absolute !important; top:.9rem !important; right:.9rem !important; z-index:2 !important;
  width:38px !important; height:38px !important; min-width:38px !important; min-height:38px !important;
  max-width:38px !important; max-height:38px !important;
  border-radius:50% !important;
  border:none !important; outline:none !important;
  background:rgba(20,24,27,.6) !important; color:#fff !important;
  cursor:pointer;
  display:flex !important; align-items:center !important; justify-content:center !important;
  padding:0 !important; margin:0 !important;
  line-height:1 !important;
  font-size:0 !important;
  -webkit-appearance:none;
  appearance:none;
  box-shadow:none !important;
  transition:background .15s ease, transform .15s ease;
}
.pr-modal-close svg{ display:block !important; width:16px !important; height:16px !important; flex-shrink:0; }
.pr-modal-close:hover{ background:var(--pr-accent, #2B5C73) !important; transform:scale(1.06); }

@media (max-width:560px){
  .pr-modal-dialog{ width:min(420px,94vw); max-height:92vh; }
  .pr-modal-body{ padding:1.4rem 1.4rem 1.6rem; }
}
@media (prefers-reduced-motion:reduce){
  .pr-track-slider{ transition:none; }
  .pr-slide-trigger, .pr-nav, .pr-zoom-icon, .pr-dot{ transition:none; }
  .pr-modal-dialog{ animation:none; }
}
