/* Global interaction effects. Kept separate from page-specific styling. */
:root {
  --effect-cyan: #19c2c9;
  --effect-blue: #1677ff;
  --effect-orange: #ff8a34;
}

body.site-effects-ready {
  animation: site-page-enter 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes site-page-enter {
  from {
    opacity: 0.2;
  }
  to {
    opacity: 1;
  }
}

.site-scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  z-index: 2000;
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: left center;
  background: linear-gradient(
    90deg,
    var(--effect-blue),
    var(--effect-cyan),
    var(--effect-orange)
  );
  box-shadow: 0 0 16px rgba(25, 194, 201, 0.65);
  will-change: transform;
}

.titlebox {
  transition:
    background-color 0.3s ease,
    border-color 0.3s ease,
    box-shadow 0.3s ease !important;
}

.titlebox.is-scrolled {
  background: rgba(7, 17, 31, 0.985) !important;
  border-bottom-color: rgba(25, 194, 201, 0.42) !important;
  box-shadow:
    0 16px 40px rgba(3, 10, 18, 0.34),
    0 1px 0 rgba(25, 194, 201, 0.08) !important;
}

.site-reveal {
  opacity: 0;
  filter: blur(5px);
  transform: translate3d(0, 34px, 0);
  transition:
    opacity 0.72s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.72s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.72s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--site-reveal-delay, 0ms);
  will-change: opacity, filter, transform;
}

.site-reveal.is-visible {
  opacity: 1;
  filter: none;
  transform: translate3d(0, 0, 0);
}

:where(
    .consult,
    .sendbtn,
    .itembtn,
    .openconsult,
    .businessCta > a,
    .clientaction > a,
    .contact-action,
    .locationcard,
    .mobileMenuToggle
  ) {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

:where(
    .consult,
    .sendbtn,
    .itembtn,
    .openconsult,
    .businessCta > a,
    .clientaction > a
  ):hover {
  box-shadow:
    0 12px 30px rgba(22, 119, 255, 0.24),
    0 0 0 1px rgba(25, 194, 201, 0.18);
  filter: brightness(1.06);
}

.site-ripple {
  position: absolute;
  width: 12px;
  height: 12px;
  margin: -6px 0 0 -6px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 20;
  background: rgba(255, 255, 255, 0.46);
  transform: scale(0);
  animation: site-ripple 0.66s ease-out forwards;
}

@keyframes site-ripple {
  to {
    opacity: 0;
    transform: scale(var(--site-ripple-scale, 12));
  }
}

@media (prefers-reduced-motion: reduce) {
  body.site-effects-ready,
  .site-ripple {
    animation: none !important;
  }

  .site-reveal,
  .site-reveal.is-visible {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
  }

  .site-scroll-progress,
  .titlebox {
    transition: none !important;
  }
}
