/* =============================
   ASOCLIMACR – FINCAS AFILIADAS
   ============================= */

/* ---------- Tarjeta base + imagen ---------- */
.finca-card {
  border-radius: 12px;
  transition: transform .2s ease, box-shadow .2s ease;
}

.img-box {
  width: 100%;
  height: 100%;
  background: #bdbdbd;
  border-radius: 12px;
  overflow: hidden;
  position: relative;
  display: grid;
  place-items: center;
}

/* La caja de imagen rellena el .ratio */
.ratio > .img-box { position: absolute; inset: 0; }

/* Imagen que cubre el contenedor */
.img-cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 12px;
}

/* Placeholder si no hay imagen */
.img-placeholder {
  color: #ffffff;
  font-weight: 600;
  text-align: center;
  padding: 0 12px;
  line-height: 1.2;
  font-size: 0.95rem;
}

/* Si hay <img>, oculta el placeholder */
.img-box .img-cover + .img-placeholder { display: none; }

/* ---------- Flip card ---------- */
.flip-card { perspective: 1000px; width: 100%; }

.flip-card-inner {
  position: relative;
  width: 100%;
  min-height: 410px;              /* ajusta según tu contenido */
  transform-style: preserve-3d;
  transition: transform 0.8s ease-in-out;
}

.flip-card.flipped .flip-card-inner { transform: rotateY(180deg); }

.flip-card-front,
.flip-card-back {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  border-radius: 12px;
  overflow: hidden;
}

.flip-card-front { transform: rotateY(0deg); }
.flip-card-back  { transform: rotateY(180deg); }

.flip-card-front .card-body,
.flip-card-back  .card-body { display: flex; flex-direction: column; }
.flip-card-front .mt-auto { margin-top: auto; }

/* ---------- Galería (solo donde exista .gallery) ---------- */
.gallery { position: absolute; inset: 0; overflow: hidden; }
.gallery-img      { width: 100%; height: 100%; object-fit: cover; display: block; }
.gallery-img-next { width: 100%; height: 100%; object-fit: cover; display: block; position: absolute; inset: 0; }

/* ===== Variables de personalización ===== */
:root{
  --positionNow: 0px;                 /* offset actual de la pista */
  --slideDur: 420ms;                   /* duración del deslizamiento */
  --slideEase: cubic-bezier(.22,.61,.36,1);
}

/* contenedor existente */
.gallery{
  position: absolute; inset: 0;
  overflow: hidden;
  border-radius: 12px;
}

/* PISTA horizontal (como el ejemplo) */
.gallery-track{
  position: absolute; inset: 0;
  display: flex;
  width: 100%; height: 100%;
  transform: translateX(var(--positionNow));
  transition: transform var(--slideDur) var(--slideEase);
}

/* cada slide ocupa el 100% del ancho */
.gallery-slide{
  flex: 0 0 100%;
  width: 100%; height: 100%;
  background-position: center;
  background-size: cover;
  position: relative;
}

/* capa info opcional (drop anim) */
.gallery-info{
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 18px 20px;
  color: #fff;
  text-shadow: 0 3px 8px rgba(0,0,0,.55);
  transform: translateY(100%);
  opacity: 0;
}
.gallery-info.animation{
  animation: dropInfo 600ms ease-out forwards;
}
@keyframes dropInfo{
  0%   { transform: translateY(100%); opacity: 0; }
  100% { transform: translateY(0%);   opacity: 1; }
}

/* flechas laterales (siguen tus clases) */
.gal-arrow{
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 26px; height: 26px; display: grid; place-items: center;
  border-radius: 50%; border: 1px solid rgba(0,0,0,.15);
  background: rgba(255,255,255,.6);
  backdrop-filter: blur(2px);
  font-size: 18px; line-height: 1; cursor: pointer; user-select: none;
  box-shadow: 0 2px 8px rgba(0,0,0,.12); z-index: 5;
}
.gal-prev{ left: 10px; }
.gal-next{ right: 10px; }
.gal-arrow:hover{ background: #fff; }

/* elimina los dots si quedara alguno */
.gal-dots{ display:none!important; }
