@import url("/assets/vendor/owl.carousel.min-ffdafdbd.css");
@import url("/assets/vendor/owl.theme.default.min-2c961f59.css");
@import url("/assets/vendor/aos-ff0d47ef.css");
@import url("/assets/vendor/glightbox.min-3cdc4e3c.css");

/*
 * This is a manifest file that'll be compiled into application.css.
 *
 * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
 * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
 * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
 * depending on specificity.
 *
 * Consider organizing styles into separate files for maintainability.
 */

header {
  opacity: 1;
  transform: translateY(0);
  transition: transform 0.75s ease, opacity 0.75s ease; 
  will-change: transform, opacity; 
}

@keyframes fadeUp {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(-50px);
  }
}

@keyframes fadeDown {
  0% {
    opacity: 0;
    transform: translateY(-50px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.fade-up {
  animation: fadeUp 0.6s ease-in-out forwards;
}

.fade-down {
  animation: fadeDown 0.6s ease-in-out forwards;
}

.project-thumbnail {
  position: relative;
  overflow: hidden;
  border-radius: 0.5rem; /* Ensures rounded corners */
}

.project-thumbnail img {
  transition: transform 0.3s ease-in-out;
  width: 100%; /* Ensures it fills the container */
  height: auto;
  max-width: 100%; /* Prevent images from exceeding container */
  object-fit: cover; /* Maintain aspect ratio while filling container */
}

.project-thumbnail:hover img {
  transform: scale(1.04);
}

.owl-carousel .owl-item img {
    max-width: 100%;
    height: auto;
    /* width will be set by JavaScript scaleImages() function */
}

/* Override Owl Carousel width on testimonial quotation mark images - must come after general rule */
.testimonial-carousel .owl-item blockquote > div:first-child img {
    width: 2rem !important;
    max-width: 2rem !important;
    min-width: 2rem !important;
    height: 2rem !important;
    max-height: 2rem !important;
    min-height: 2rem !important;
    flex-shrink: 0 !important;
}

#hs-navbar-alignment {
    margin-right: 120px;
}




/*.owl-carousel .owl-stage-outer {
    max-height: 60vh;
}*/

.owl-carousel {
  position: relative; /* Ensure nav buttons can be positioned absolutely */
}

.owl-carousel .owl-nav {
  position: absolute;
  top: calc(50% - 20px);
  width: 100%;
  height: 45px;
  transform: translateY(-50%);
  display: flex !important; /* Force display */
  justify-content: space-between;
  pointer-events: none; /* Allows clicking through to carousel if needed */
  z-index: 10; /* Ensure nav is above images */
}

.owl-carousel .owl-nav.disabled { 
  display: flex !important; 
}

.owl-carousel .owl-nav button.owl-prev,
.owl-carousel .owl-nav button.owl-next,
.owl-carousel .owl-nav [class*=owl-] {
  background-color: rgba(0, 0, 0, 0.3) !important; /* Semi-transparent background */
  background: rgba(0, 0, 0, 0.3) !important; /* Override theme background */
  color: white !important;
  border: none !important;
  width: 45px !important;
  height: 45px !important;
  border-radius: 50% !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 28px !important;
  cursor: pointer !important;
  transition: background 0.3s ease !important;
  pointer-events: auto !important; /* Enables clicking */
  padding: 0 !important; /* Override theme padding */
  margin: 0 !important; /* Override theme margin */
  line-height: 1 !important;
}

.owl-carousel .owl-nav button.owl-prev,
.owl-carousel .owl-nav [class*=owl-prev] {
  position: absolute !important;
  left: 20px !important;
}

.owl-carousel .owl-nav button.owl-next,
.owl-carousel .owl-nav [class*=owl-next] {
  position: absolute !important;
  right: 20px !important;
}

.owl-carousel .owl-nav button.owl-prev:hover,
.owl-carousel .owl-nav button.owl-next:hover,
.owl-carousel .owl-nav [class*=owl-]:hover {
  background-color: rgba(0, 0, 0, 0.4) !important;
  background: rgba(0, 0, 0, 0.4) !important;
}

.owl-carousel .owl-nav button.owl-prev span,
.owl-carousel .owl-nav button.owl-next span,
.owl-carousel .owl-nav [class*=owl-] span {
  font-size: 32px !important;
  line-height: 1 !important;
}

/* Testimonial carousel specific styles */
.testimonial-carousel {
  display: flex;
  flex-direction: column;
}

.testimonial-carousel .owl-carousel {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.testimonial-carousel .owl-stage-outer {
  flex: 1;
}

.testimonial-carousel .owl-stage {
  height: 100%;
  display: flex;
}

.testimonial-carousel .owl-item {
  height: 100%;
  display: flex;
}

.testimonial-carousel .owl-item figure {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start !important;
  text-align: left !important;
}

.testimonial-carousel .owl-nav {
  display: none !important;
}

/* Prevent image stretching in testimonials - target figcaption images specifically */
.testimonial-carousel figcaption img {
  width: 2.5rem !important;
  height: 2.5rem !important;
  min-width: 2.5rem !important;
  min-height: 2.5rem !important;
  max-width: 2.5rem !important;
  max-height: 2.5rem !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  object-position: center !important;
  flex-shrink: 0 !important;
}

/* Ensure quotation mark is left-aligned in testimonials */
.testimonial-carousel .owl-item blockquote {
  align-items: flex-start !important;
  text-align: left !important;
}

.testimonial-carousel .owl-item blockquote > div:first-child {
  text-align: left !important;
  display: flex !important;
  justify-content: flex-start !important;
  align-items: flex-start !important;
  width: 100% !important;
  align-self: flex-start !important;
}

.testimonial-carousel .owl-item blockquote > div:first-child img {
  display: block !important;
  margin: 0 !important;
  margin-left: 0 !important;
  margin-right: auto !important;
  float: none !important;
  transform: translateX(0) !important;
  position: relative !important;
  left: 0 !important;
  right: auto !important;
  /* Override any width attribute Owl Carousel might add */
  width: 2rem !important;
  max-width: 2rem !important;
  min-width: 2rem !important;
  height: 2rem !important;
  max-height: 2rem !important;
  min-height: 2rem !important;
  flex-shrink: 0 !important;
}

.testimonial-carousel .owl-nav button.owl-prev,
.testimonial-carousel .owl-nav button.owl-next {
  background-color: rgba(255, 255, 255, 0.1);
  color: white;
}

.testimonial-carousel .owl-nav button.owl-prev:hover,
.testimonial-carousel .owl-nav button.owl-next:hover {
  background-color: rgba(255, 255, 255, 0.2);
}





html,
body {
  font-family: "Fellix", sans-serif;
  margin: 0;
  padding: 0;
}

.text-container {
  z-index: 100;
  width: 100vw;
  height: 100vh;
  display: flex;
  position: absolute;
  top: 0;
  left: 0;
  justify-content: center;
  align-items: center;
  font-size: 96px;
  color: white;
  opacity: 0.8;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  text-shadow: 1px 1px rgba(0, 0, 0, 0.1);
}

:root {
  --color-bg1: rgb(255, 255, 255);
  --color-bg2: rgb(255, 255, 255);
  --color1: 18, 113, 255;
  --color2: 221, 74, 255;
  --color3: 100, 220, 255;
  --color4: 200, 50, 50;
  --color5: 180, 180, 50;
  --color-interactive: 140, 100, 255;
  --circle-size: 80%;
  --blending: hard-light;
}

@-webkit-keyframes moveInCircle {
  0% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(180deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@keyframes moveInCircle {
  0% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(180deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
@-webkit-keyframes moveVertical {
  0% {
    transform: translateY(-50%);
  }
  50% {
    transform: translateY(50%);
  }
  100% {
    transform: translateY(-50%);
  }
}
@keyframes moveVertical {
  0% {
    transform: translateY(-50%);
  }
  50% {
    transform: translateY(50%);
  }
  100% {
    transform: translateY(-50%);
  }
}
@-webkit-keyframes moveHorizontal {
  0% {
    transform: translateX(-50%) translateY(-10%);
  }
  50% {
    transform: translateX(50%) translateY(10%);
  }
  100% {
    transform: translateX(-50%) translateY(-10%);
  }
}
@keyframes moveHorizontal {
  0% {
    transform: translateX(-50%) translateY(-10%);
  }
  50% {
    transform: translateX(50%) translateY(10%);
  }
  100% {
    transform: translateX(-50%) translateY(-10%);
  }
}
.gradient-bg {
  width: 100vw;
  height: 100vh;
  position: relative;
  overflow: hidden;
  background: linear-gradient(40deg, var(--color-bg1), var(--color-bg2));
  top: 0;
  left: 0;
}
.gradient-bg svg {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
}
.gradient-bg .gradients-container {
  filter: url(#goo) blur(40px);
  width: 100%;
  height: 100%;
}
.gradient-bg .g1 {
  position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color1), 0.8) 0, rgba(var(--color1), 0) 50%) no-repeat;
  mix-blend-mode: var(--blending);
  width: var(--circle-size);
  height: var(--circle-size);
  top: calc(50% - var(--circle-size) / 2);
  left: calc(50% - var(--circle-size) / 2);
  transform-origin: center center;
  -webkit-animation: moveVertical 30s ease infinite;
          animation: moveVertical 30s ease infinite;
  opacity: 1;
}
.gradient-bg .g2 {
  position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color2), 0.8) 0, rgba(var(--color2), 0) 50%) no-repeat;
  mix-blend-mode: var(--blending);
  width: var(--circle-size);
  height: var(--circle-size);
  top: calc(50% - var(--circle-size) / 2);
  left: calc(50% - var(--circle-size) / 2);
  transform-origin: calc(50% - 400px);
  animation: moveInCircle 20s reverse infinite;
  opacity: 1;
}
.gradient-bg .g3 {
  position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color3), 0.8) 0, rgba(var(--color3), 0) 50%) no-repeat;
  mix-blend-mode: var(--blending);
  width: var(--circle-size);
  height: var(--circle-size);
  top: calc(50% - var(--circle-size) / 2 + 200px);
  left: calc(50% - var(--circle-size) / 2 - 500px);
  transform-origin: calc(50% + 400px);
  -webkit-animation: moveInCircle 40s linear infinite;
          animation: moveInCircle 40s linear infinite;
  opacity: 1;
}
.gradient-bg .g4 {
  position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color4), 0.8) 0, rgba(var(--color4), 0) 50%) no-repeat;
  mix-blend-mode: var(--blending);
  width: var(--circle-size);
  height: var(--circle-size);
  top: calc(50% - var(--circle-size) / 2);
  left: calc(50% - var(--circle-size) / 2);
  transform-origin: calc(50% - 200px);
  -webkit-animation: moveHorizontal 40s ease infinite;
          animation: moveHorizontal 40s ease infinite;
  opacity: 0.7;
}
.gradient-bg .g5 {
  position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color5), 0.8) 0, rgba(var(--color5), 0) 50%) no-repeat;
  mix-blend-mode: var(--blending);
  width: calc(var(--circle-size) * 2);
  height: calc(var(--circle-size) * 2);
  top: calc(50% - var(--circle-size));
  left: calc(50% - var(--circle-size));
  transform-origin: calc(50% - 800px) calc(50% + 200px);
  -webkit-animation: moveInCircle 20s ease infinite;
          animation: moveInCircle 20s ease infinite;
  opacity: 1;
}
.gradient-bg .interactive {
  position: absolute;
  background: radial-gradient(circle at center, rgba(var(--color-interactive), 0.8) 0, rgba(var(--color-interactive), 0) 50%) no-repeat;
  mix-blend-mode: var(--blending);
  width: 100%;
  height: 100%;
  top: -50%;
  left: -50%;
  opacity: 0.7;
}

.glightbox-clean .gslide-title {
    color: white;
}

.glightbox-clean .gdesc-inner {
    padding: 0 20px;
}

.glightbox-clean .gslide-description {
    background: none;
}


.thumb-video:hover .thumb-video-icon {
  opacity: 0;
}

