
/* =========================================================
   Global UI Motion Pack - Estate/Victory site
   Safe, dependency-free hover + scroll reveal effects
   ========================================================= */

/* Images: subtle lift/zoom without affecting layout */
.site_wrapper img:not(.no-image-effect),
#header img:not(.no-image-effect),
.footer img:not(.no-image-effect) {
  transition: transform .55s cubic-bezier(.22,.61,.36,1),
              filter .45s ease,
              box-shadow .45s ease;
  will-change: transform;
}
.site_wrapper img:not(.no-image-effect):hover {
  transform: scale(1.035);
  filter: saturate(1.06) contrast(1.02);
}

/* Keep logos, tiny icons and controls stable */
#header .navbar-brand img,
.topbar img,
button img,
input img,
.no-image-effect {
  transform: none !important;
}

/* Buttons / CTA links */
a.btn, button, input[type="submit"], input[type="button"],
input[type="reset"], .btn, .button, a[class*="btn-"] {
  transition: transform .25s ease, box-shadow .25s ease,
              background-color .25s ease, color .25s ease,
              border-color .25s ease;
}
a.btn:hover, button:hover, input[type="submit"]:hover,
input[type="button"]:hover, input[type="reset"]:hover,
.btn:hover, .button:hover, a[class*="btn-"]:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 24px rgba(0,0,0,.14);
}

/* Navigation links */
#header .navbar-nav > li > a {
  position: relative;
  transition: color .25s ease, transform .25s ease;
}
#header .navbar-nav > li > a:hover {
  transform: translateY(-1px);
}
#header .navbar-nav > li:not(.dropdown) > a::after,
#header .navbar-nav > li.dropdown > a::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 7px;
  width: 0;
  height: 2px;
  transform: translateX(-50%);
  transition: width .28s ease;
}
#header .navbar-nav > li > a:hover::after {
  width: 55%;
}

/* Common content cards / blocks */
.service-block, .iconbox-medium, .grayoutline,
[class*="box"], [class*="card"] {
  transition: transform .35s ease, box-shadow .35s ease,
              border-color .35s ease;
			  padding:5px;
}
.service-block:hover, .iconbox-medium:hover, .grayoutline:hover,
[class*="box"]:hover, [class*="card"]:hover {
  transform: translateY(-6px);
  box-shadow: 0 14px 32px rgba(0,0,0,.10);
}

/* Icons */
.fa, [class^="icon-"], [class*=" icon-"] {
  transition: transform .3s ease;
}
a:hover .fa, a:hover [class^="icon-"], a:hover [class*=" icon-"] {
  transform: scale(1.12);
}

/* Scroll reveal */
.motion-reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s ease, transform .7s cubic-bezier(.22,.61,.36,1);
}
.motion-reveal.motion-visible {
  opacity: 1;
  transform: none;
}
.motion-reveal-left {
  opacity: 0;
  transform: translateX(-32px);
  transition: opacity .7s ease, transform .7s cubic-bezier(.22,.61,.36,1);
}
.motion-reveal-left.motion-visible {
  opacity: 1;
  transform: none;
}
.motion-reveal-right {
  opacity: 0;
  transform: translateX(32px);
  transition: opacity .7s ease, transform .7s cubic-bezier(.22,.61,.36,1);
}
.motion-reveal-right.motion-visible {
  opacity: 1;
  transform: none;
}

/* Staggered children */
.motion-stagger > * {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .55s ease, transform .55s cubic-bezier(.22,.61,.36,1);
}
.motion-stagger.motion-visible > * {
  opacity: 1;
  transform: none;
}
.motion-stagger.motion-visible > *:nth-child(1) { transition-delay: .04s; }
.motion-stagger.motion-visible > *:nth-child(2) { transition-delay: .10s; }
.motion-stagger.motion-visible > *:nth-child(3) { transition-delay: .16s; }
.motion-stagger.motion-visible > *:nth-child(4) { transition-delay: .22s; }
.motion-stagger.motion-visible > *:nth-child(5) { transition-delay: .28s; }
.motion-stagger.motion-visible > *:nth-child(6) { transition-delay: .34s; }

/* Gallery/project image polish */
.gallery-motion img, .project-gallery img {
  border-radius: 2px;
}
.gallery-motion a, .project-gallery a {
  display: block;
  overflow: hidden;
}

/* Respect accessibility */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .motion-reveal, .motion-reveal-left, .motion-reveal-right,
  .motion-stagger > * {
    opacity: 1 !important;
    transform: none !important;
  }
}


/* =========================================================
   Premium Shine Sweep - images + buttons
   ========================================================= */
.shine-image {
  position: relative;
  display: block;
  overflow: hidden;
  line-height: 0;
}
.shine-image::after {
  content: "";
  position: absolute;
  top: -20%;
  left: -75%;
  width: 38%;
  height: 140%;
  pointer-events: none;
  transform: skewX(-22deg);
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.10) 25%, rgba(255,255,255,.72) 50%, rgba(255,255,255,.10) 75%, transparent 100%);
  opacity: 0;
}
.shine-image:hover::after,
.shine-image:focus-within::after {
  opacity: 1;
  animation: imageShine .8s ease forwards;
}
.shine-image img {
  display: block;
  width: 100%;
}

/* Button shine sweep */
a.btn, button, input[type="submit"], input[type="button"],
input[type="reset"], .btn, .button, a[class*="btn-"] {
  position: relative;
  overflow: hidden;
}
a.btn::after, button::after, input[type="submit"]::after,
input[type="button"]::after, input[type="reset"]::after,
.btn::after, .button::after, a[class*="btn-"]::after {
  content: "";
  position: absolute;
  top: -30%;
  left: -80%;
  width: 42%;
  height: 160%;
  pointer-events: none;
  transform: skewX(-22deg);
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.08) 25%, rgba(255,255,255,.70) 50%, rgba(255,255,255,.08) 75%, transparent 100%);
  opacity: 0;
}
a.btn:hover::after, button:hover::after, input[type="submit"]:hover::after,
input[type="button"]:hover::after, input[type="reset"]:hover::after,
.btn:hover::after, .button:hover::after, a[class*="btn-"]:hover::after,
a.btn:focus-visible::after, button:focus-visible::after,
input[type="submit"]:focus-visible::after, input[type="button"]:focus-visible::after,
input[type="reset"]:focus-visible::after, .btn:focus-visible::after,
.button:focus-visible::after, a[class*="btn-"]:focus-visible::after {
  opacity: 1;
  animation: buttonShine .65s ease forwards;
}

@keyframes imageShine {
  from { left: -75%; }
  to { left: 135%; }
}
@keyframes buttonShine {
  from { left: -80%; }
  to { left: 135%; }
}

@media (prefers-reduced-motion: reduce) {
  .shine-image::after,
  a.btn::after, button::after, input[type="submit"]::after,
  input[type="button"]::after, input[type="reset"]::after,
  .btn::after, .button::after, a[class*="btn-"]::after {
    animation: none !important;
  }
}
