/* Local AOS 2.3.4, restrained distances matched to the PSD composition. */
.scroll-reveal-ready [data-aos].aos-init {
  transition-property: opacity, transform;
  transition-duration: 850ms;
  transition-timing-function: cubic-bezier(.22, 1, .36, 1);
  transition-delay: var(--reveal-delay, 0ms);
}
.scroll-reveal-ready [data-aos="soft-up"] { opacity: 0; transform: translate3d(0, 24px, 0); }
.scroll-reveal-ready [data-aos="soft-right"] { opacity: 0; transform: translate3d(-32px, 0, 0); }
.scroll-reveal-ready [data-aos="soft-fade"] { opacity: 0; }
.scroll-reveal-ready [data-aos="soft-up"].aos-animate,
.scroll-reveal-ready [data-aos="soft-right"].aos-animate { opacity: 1; transform: none; }
.scroll-reveal-ready [data-aos="soft-fade"].aos-animate { opacity: 1; }
/* Keep the existing news hover lift and border response on their own timing. */
.scroll-reveal-ready .news-card[data-aos].aos-init {
  transition: opacity 850ms cubic-bezier(.22, 1, .36, 1) var(--reveal-delay, 0ms), transform .35s ease;
}
.scroll-reveal-ready [data-aos]:focus-within { opacity: 1; transform: none; }
/* Independent entrance translate leaves the scroll track transform intact.
   effects.js measures layout height/offsets, excluding this visual movement. */
.technology.tech-enter-ready .tech-card {
  opacity: 0;
  translate: 0 24px;
}
.technology.tech-enter-ready .tech-card.is-tech-revealed {
  opacity: 1;
  translate: none;
  transition: opacity 900ms cubic-bezier(.22, 1, .36, 1) var(--tech-enter-delay, 0ms),
    translate 900ms cubic-bezier(.22, 1, .36, 1) var(--tech-enter-delay, 0ms),
    background .45s ease, border-color .45s ease, color .45s ease, box-shadow .45s ease;
}
.technology.tech-enter-ready .tech-card:not(.is-tech-revealed)::after { animation-play-state: paused; }
.technology.tech-enter-ready .tech-card:focus-within { opacity: 1; translate: none; }
@media (max-width: 767px) {
  .scroll-reveal-ready [data-aos="soft-up"]:not(.aos-animate) { transform: translate3d(0, 16px, 0); }
  .scroll-reveal-ready [data-aos="soft-right"]:not(.aos-animate) { transform: translate3d(-16px, 0, 0); }
  .technology.tech-enter-ready .tech-card:not(.is-tech-revealed) { translate: 0 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .scroll-reveal-ready [data-aos] { opacity: 1 !important; transform: none !important; transition: none !important; }
  .technology.tech-enter-ready .tech-card { opacity: 1; translate: none; transition: none; }
}

/* Content-photo frames retain the page layout while clipping the homepage zoom. */
.page-image-zoom{overflow:hidden}
.page-image-zoom > img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.environment-photo{height:100%;border-radius:calc(22 * var(--u))}
.growth-photo{border-radius:calc(22 * var(--u))}
.recommend-photo{aspect-ratio:187/117}
.aboutpage-gallery-swiper .swiper-slide > img{transition:transform .6s ease}
@media(hover:hover){
 .page-image-zoom:hover > img,.recommend-item:hover .recommend-photo > img,
 .aboutpage-gallery-swiper:hover .swiper-slide > img{transform:scale(1.035)}
}
.page-image-zoom:focus-within > img,.recommend-item:focus-visible .recommend-photo > img,
.aboutpage-gallery-swiper:focus-within .swiper-slide > img{transform:scale(1.035)}
@media(prefers-reduced-motion:reduce){
 .page-image-zoom > img,.aboutpage-gallery-swiper .swiper-slide > img,.listing-image img{transition:none!important;transform:none!important}
}

.contact-qr-pair img{transition:transform .6s ease}
@media(hover:hover){.contact-qr-pair button:hover img{transform:scale(1.035)}}
@media(prefers-reduced-motion:reduce){.contact-qr-pair img{transition:none;transform:none!important}}
