/**
 * Site-wide motion / animations (all front themes)
 */
html { scroll-behavior: smooth; }

/* ---------- Keyframes ---------- */
@keyframes siteFadeUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes siteFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes siteFadeLeft {
  from { opacity: 0; transform: translateX(-28px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes siteFadeRight {
  from { opacity: 0; transform: translateX(28px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes siteScaleIn {
  from { opacity: 0; transform: scale(.94); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes siteFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes sitePulseSoft {
  0%, 100% { box-shadow: 0 0 0 0 rgba(37, 99, 235, .35); }
  50% { box-shadow: 0 0 0 10px rgba(37, 99, 235, 0); }
}
@keyframes siteShimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* ---------- Page enter ---------- */
body.site-motion-ready {
  animation: siteFadeIn .45s ease both;
}

/* ---------- Scroll reveal base (works on scroll up + down) ---------- */
.site-reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity .65s cubic-bezier(.22, 1, .36, 1), transform .65s cubic-bezier(.22, 1, .36, 1);
  will-change: opacity, transform;
}
.site-reveal.from-down {
  transform: translateY(36px);
}
.site-reveal.from-up {
  transform: translateY(-36px);
}
.site-reveal.site-reveal-left.from-down,
.site-reveal.site-reveal-left:not(.is-visible) {
  transform: translateX(-36px);
}
.site-reveal.site-reveal-right.from-down,
.site-reveal.site-reveal-right:not(.is-visible) {
  transform: translateX(36px);
}
.site-reveal.site-reveal-left.from-up {
  transform: translateX(-24px) translateY(-20px);
}
.site-reveal.site-reveal-right.from-up {
  transform: translateX(24px) translateY(-20px);
}
.site-reveal.site-reveal-scale:not(.is-visible) {
  transform: scale(.92);
}
.site-reveal.is-visible {
  opacity: 1;
  transform: none !important;
}
.site-reveal-delay-1 { transition-delay: .05s; }
.site-reveal-delay-2 { transition-delay: .12s; }
.site-reveal-delay-3 { transition-delay: .19s; }
.site-reveal-delay-4 { transition-delay: .26s; }
.site-reveal-delay-5 { transition-delay: .33s; }

/* Disable one-shot hero keyframes — hero now uses scroll reveal both ways */
.ld-hero-copy .ld-badge,
.ld-hero-copy .ld-title,
.ld-hero-copy .ld-sub,
.ld-hero-copy .ld-cta-group,
.ld-hero-visual,
.ld-hero-frame {
  animation: none !important;
}

/* ---------- Header / topbar ---------- */
.topnews,
.ai-topbar-flex {
  animation: siteFadeIn .5s ease both;
}
.sticky-top2,
.ai-header-single-line-flex {
  animation: siteFadeUp .55s ease .08s both;
  transition: box-shadow .3s ease, background .3s ease;
}
.ai-nav-pill-item,
.ai-nav-single-line-pills a {
  transition: transform .22s ease, background .22s ease, color .22s ease, box-shadow .22s ease;
}
.ai-nav-pill-item:hover,
.ai-nav-single-line-pills a:hover {
  transform: translateY(-2px);
}
.thm-book-btn,
.btn.thm-book-btn {
  transition: transform .22s ease, box-shadow .22s ease, background .22s ease;
}
.thm-book-btn:hover {
  transform: translateY(-2px) scale(1.03);
  box-shadow: 0 8px 20px rgba(37, 99, 235, .28);
}
.btn-ai-modal-trigger,
.ai-btn-portal {
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.btn-ai-modal-trigger:hover,
.ai-btn-portal:hover {
  transform: translateY(-1px);
}

/* ---------- Landing hero (hover only; enter/exit via scroll reveal) ---------- */
.ld-hero-frame img,
.ld-hero-img {
  transition: transform .6s ease;
}
.ld-hero-frame:hover img,
.ld-hero-frame:hover .ld-hero-img {
  transform: scale(1.03);
}
.ld-btn-primary,
.ld-btn-outline,
.ld-cta-group .btn,
.ld-cta-group a {
  transition: transform .22s ease, box-shadow .22s ease, background .22s ease;
}
.ld-btn-primary:hover,
.ld-btn-outline:hover,
.ld-cta-group .btn:hover,
.ld-cta-group a:hover {
  transform: translateY(-2px);
}

/* ---------- Cards / modules / stats ---------- */
.ld-stat-card,
.ld-module-card,
.ld-feature,
.ld-panel,
.ld-action {
  transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease;
}
.ld-stat-card:hover,
.ld-module-card:hover,
.ld-feature:hover,
.ld-panel:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 36px rgba(15, 23, 42, .12);
}
.ld-module-icon,
.ld-module-card .ld-module-icon,
.ld-feature i {
  transition: transform .35s ease, background .3s ease, color .3s ease;
}
.ld-module-card:hover .ld-module-icon,
.ld-feature:hover i {
  transform: scale(1.1) rotate(-4deg);
}
.ld-action:hover {
  transform: translateX(4px);
}

/* ---------- Forms / appointment / content pages ---------- */
.container.spacet50,
.container.spaceb50,
.thm-page-banner,
form.appointment,
#appointment_form,
.spacet50 .row > [class*="col-"] {
  /* reveal applied via JS */
}
.thm-page-banner {
  animation: siteFadeIn .5s ease both;
}
.thm-page-banner-inner h1 {
  animation: siteFadeUp .65s ease .1s both;
}
.thm-page-banner-inner p {
  animation: siteFadeUp .65s ease .22s both;
}
form.appointment,
#appointment_form,
.form.appointment {
  transition: box-shadow .3s ease, transform .3s ease;
}
form.appointment .form-control,
#appointment_form .form-control,
.form.appointment .form-control,
.select2-container--default .select2-selection--single {
  transition: border-color .25s ease, box-shadow .25s ease, transform .2s ease;
}
form.appointment .form-control:focus,
#appointment_form .form-control:focus {
  transform: translateY(-1px);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .15);
}
form.appointment button[type="submit"],
#appointment_form button[type="submit"],
#submitbtn,
.btn-primary {
  transition: transform .22s ease, box-shadow .22s ease, background .22s ease;
}
form.appointment button[type="submit"]:hover,
#appointment_form button[type="submit"]:hover,
#submitbtn:hover,
.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 22px rgba(37, 99, 235, .25);
}

/* ---------- Modal ---------- */
.modal.fade .modal-dialog {
  transition: transform .35s cubic-bezier(.22, 1, .36, 1), opacity .35s ease;
  transform: translateY(24px) scale(.96);
}
.modal.fade.in .modal-dialog {
  transform: translateY(0) scale(1);
}

/* ---------- Footer ---------- */
.ld-footer {
  text-align: center;
}
.ld-footer-main {
  justify-content: center;
}
.ld-footer-col,
.ld-footer-brand,
.ld-footer-links-col,
.ld-footer-services-col,
.ld-footer-contact-col {
  text-align: center;
}
.ld-footer-brand p {
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center;
  max-width: 420px;
}
.ld-footer-social {
  justify-content: center !important;
}
.ld-footer-links,
.ld-footer-contact {
  display: inline-block;
  text-align: left;
  margin: 0 auto;
}
.ld-footer-col.site-reveal.is-visible,
.ld-footer-brand.site-reveal.is-visible {
  /* keep */
}
.ld-footer-links a,
.ld-footer-contact i,
.ld-footer-social a {
  transition: transform .25s ease, color .25s ease, background .25s ease;
}
.ld-footer-links a:hover {
  transform: translateX(4px);
  color: #fff;
}
.ld-footer-contact li:hover i {
  transform: scale(1.08);
}
.ld-footer-social a:hover {
  transform: translateY(-3px);
}
.ld-footer-brand h3 i {
  display: inline-block;
  animation: siteFloat 3s ease-in-out infinite;
}

/* ---------- CMS pages / lists ---------- */
.spacet50 h1,
.spacet50 h2,
.spaceb50 h1,
.spaceb50 h2 {
  animation: siteFadeUp .55s ease both;
}

/* ---------- Stagger helpers used by JS ---------- */
.site-stagger > .site-reveal:nth-child(1) { transition-delay: .05s; }
.site-stagger > .site-reveal:nth-child(2) { transition-delay: .12s; }
.site-stagger > .site-reveal:nth-child(3) { transition-delay: .19s; }
.site-stagger > .site-reveal:nth-child(4) { transition-delay: .26s; }
.site-stagger > .site-reveal:nth-child(5) { transition-delay: .33s; }
.site-stagger > .site-reveal:nth-child(6) { transition-delay: .4s; }
.site-stagger > .site-reveal:nth-child(7) { transition-delay: .47s; }
.site-stagger > .site-reveal:nth-child(8) { transition-delay: .54s; }

@media (max-width: 767px) {
  .ld-footer-links,
  .ld-footer-contact {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
  }
  .ld-footer-links a {
    justify-content: center;
    width: 100%;
  }
  .ld-footer-contact li {
    justify-content: center;
    max-width: 320px;
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
  .site-reveal,
  .site-reveal.from-up,
  .site-reveal.from-down {
    opacity: 1 !important;
    transform: none !important;
  }
}
