/* Total Rent · Motion system · 16/09/2026
   AOS + Animate.css enhancement layer shared across the whole public site. */
:root{
  --tr-motion-fast:220ms;
  --tr-motion-med:420ms;
  --tr-motion-ease:cubic-bezier(.2,.72,.25,1);
}

/* Microinteractions: subtle movement, no layout shift */
a,
button,
[class*="button"],
[class*="btn"]{
  -webkit-tap-highlight-color:transparent;
}

main a[class*="button"],
main button,
main .trp-btn,
main .blog-btn,
main .new-build-btn,
main .office-btn,
main .contact-btn,
main .tr-lead-submit,
main .totalrent-button,
main .property-card,
main .blog-card,
main .new-build-promo-card,
main .office-location-card,
main .tr-rental-location,
main .trust-card,
main .trp-office,
main .trp-step,
main .tr-mosaic-card{
  transition:transform var(--tr-motion-fast) var(--tr-motion-ease),
             box-shadow var(--tr-motion-fast) var(--tr-motion-ease),
             filter var(--tr-motion-fast) var(--tr-motion-ease),
             border-color var(--tr-motion-fast) ease!important;
}

@media (hover:hover) and (pointer:fine){
  main a[class*="button"]:hover,
  main button:hover,
  main .trp-btn:hover,
  main .blog-btn:hover,
  main .new-build-btn:hover,
  main .office-btn:hover,
  main .contact-btn:hover,
  main .tr-lead-submit:hover,
  main .totalrent-button:hover{
    transform:translateY(-2px);
  }

  main .property-card:hover,
  main .blog-card:hover,
  main .new-build-promo-card:hover,
  main .office-location-card:hover,
  main .tr-rental-location:hover,
  main .trust-card:hover,
  main .trp-office:hover,
  main .trp-step:hover,
  main .tr-mosaic-card:hover{
    transform:translateY(-5px);
  }

  main article img,
  main [class*="card"] img{
    transition:transform .65s var(--tr-motion-ease), filter .45s ease!important;
  }
  main article:hover img,
  main [class*="card"]:hover img{
    transform:scale(1.025);
  }
}

/* Hero decorative shapes keep the site alive without distracting from content */
.trp-hero__bg-shape,
.new-build-hero [class*="shape"],
.contact-hero [class*="shape"],
.tr-story-hero [class*="shape"]{
  animation:trSoftFloat 7s ease-in-out infinite alternate;
  will-change:transform;
}
.trp-hero__bg-shape:nth-child(even){animation-delay:-2.2s}

@keyframes trSoftFloat{
  from{transform:translate3d(0,0,0) rotate(0.001deg)}
  to{transform:translate3d(0,-9px,0) rotate(0.001deg)}
}

/* Animate.css hero tuning */
.tr-motion-hero{
  --animate-duration:.78s;
  animation-fill-mode:both;
}
.tr-motion-hero--slow{--animate-duration:.95s}

/* AOS should feel crisp rather than theatrical */
[data-aos]{
  backface-visibility:hidden;
  transform-style:preserve-3d;
}

/* Prevent animation overflow from creating horizontal scroll */
html,body{overflow-x:clip}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important;
  }
  [data-aos]{
    opacity:1!important;
    transform:none!important;
  }
}


/* =====================================================
   Obra nueva · detalle de promociones
   Movimiento editorial para Palmeretes y Pinet Beach II
   ===================================================== */
.pal-landing .pal-hero__image{
  transform-origin:center center;
  animation:trPalHeroBreath 18s ease-in-out infinite alternate;
  will-change:transform;
}

.pal-landing .pal-floating-note{
  animation:trPalNoteFloat 4.8s ease-in-out infinite alternate;
  will-change:transform;
}

.pal-landing .pal-hero__card,
.pal-landing .pal-stats__grid > article,
.pal-landing .pal-mosaic__item,
.pal-landing .pal-amenity,
.pal-landing .pal-quality-card,
.pal-landing .pal-quality-download,
.pal-landing .pal-location__map,
.pal-landing .tr-lead-card{
  transition:transform .32s var(--tr-motion-ease),
             box-shadow .32s var(--tr-motion-ease),
             filter .32s ease!important;
}

.pal-landing .pal-slide img,
.pal-landing .pal-mosaic__item img,
.pal-landing .pal-image-frame img,
.pal-landing .pal-amenity--photo img{
  transition:transform .75s var(--tr-motion-ease), filter .45s ease!important;
}

.pal-landing .pal-hero__fact-icon,
.pal-landing .pal-quality-card__icon,
.pal-landing .pal-amenity__icon{
  transition:transform .32s var(--tr-motion-ease)!important;
}

@media (hover:hover) and (pointer:fine){
  .pal-landing .pal-stats__grid > article:hover,
  .pal-landing .pal-amenity:hover,
  .pal-landing .pal-quality-card:hover,
  .pal-landing .pal-quality-download:hover,
  .pal-landing .tr-lead-card:hover{
    transform:translateY(-6px);
  }

  .pal-landing .pal-mosaic__item:hover,
  .pal-landing .pal-location__map:hover{
    transform:translateY(-4px) scale(1.008);
  }

  .pal-landing .pal-slide:hover img,
  .pal-landing .pal-mosaic__item:hover img,
  .pal-landing .pal-image-frame:hover img,
  .pal-landing .pal-amenity--photo:hover img{
    transform:scale(1.035);
  }

  .pal-landing .pal-hero__fact:hover .pal-hero__fact-icon,
  .pal-landing .pal-quality-card:hover .pal-quality-card__icon,
  .pal-landing .pal-amenity:hover .pal-amenity__icon{
    transform:translateY(-3px) scale(1.06);
  }

  .pal-landing .pal-btn:hover,
  .pal-landing .pal-text-link:hover,
  .pal-landing .pal-inline-actions a:hover{
    transform:translateY(-2px);
  }
}

/* Una entrada escalonada para los datos del hero, independiente de AOS */
.pal-landing.tr-motion-page-ready .pal-hero__fact{
  animation:trPalFactIn .58s var(--tr-motion-ease) both;
}
.pal-landing.tr-motion-page-ready .pal-hero__fact:nth-child(1){animation-delay:.32s}
.pal-landing.tr-motion-page-ready .pal-hero__fact:nth-child(2){animation-delay:.39s}
.pal-landing.tr-motion-page-ready .pal-hero__fact:nth-child(3){animation-delay:.46s}
.pal-landing.tr-motion-page-ready .pal-hero__fact:nth-child(4){animation-delay:.53s}
.pal-landing.tr-motion-page-ready .pal-hero__fact:nth-child(5){animation-delay:.60s}
.pal-landing.tr-motion-page-ready .pal-hero__fact:nth-child(6){animation-delay:.67s}
.pal-landing.tr-motion-page-ready .pal-hero__location{
  animation:trPalFactIn .58s .74s var(--tr-motion-ease) both;
}

@keyframes trPalHeroBreath{
  0%{transform:scale(1.01)}
  100%{transform:scale(1.075)}
}
@keyframes trPalNoteFloat{
  0%{transform:translate3d(0,0,0)}
  100%{transform:translate3d(0,-8px,0)}
}
@keyframes trPalFactIn{
  from{opacity:0;transform:translateY(12px) scale(.985)}
  to{opacity:1;transform:none}
}

@media(max-width:760px){
  .pal-landing .pal-hero__image{animation-duration:22s}
  .pal-landing .pal-floating-note{animation:none}
}

@media (prefers-reduced-motion:reduce){
  .pal-landing .pal-hero__image,
  .pal-landing .pal-floating-note,
  .pal-landing .pal-hero__fact,
  .pal-landing .pal-hero__location{
    animation:none!important;
    opacity:1!important;
    transform:none!important;
  }
}
