/** HEADER **/

#sticky-header {
    transition: transform 0.4s ease-in-out !important;
}

#sticky-header.hide-header {
    transform: translateY(-100%) !important;
}

#sticky-header.scroll-up {
    transform: translateY(0);
}


/** GENERAL **/

#back-to-top-button {
  opacity: 0;
  pointer-events: none;
}

#back-to-top-button .ue-scroll-to {
  pointer-events: auto;
}

.sexy-emphasis {
    font-style: italic;
    font-family: "DM Serif Display", serif;
    font-weight: 500;
}

/* Futuristic grid animation */
.futuristic-grid-reveal {
  position: relative;
  overflow: hidden;
  visibility: hidden; 
}

body.elementor-editor-active .futuristic-grid-reveal {
  overflow: visible;
  visibility: visible;
}

.futuristic-grid-reveal.animation-done {
  visibility: visible;
}

.futuristic-grid-reveal.animation-done > * {
  animation: contentSlideUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes contentSlideUp {
  0% {
    opacity: 0;
    transform: translateY(15px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.grid-reveal-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  overflow: hidden;
  visibility: visible;
}

.grid-frag {
  position: absolute;
  opacity: 0;
  background-repeat: no-repeat;
  will-change: transform, opacity;
  
  animation-name: gridRevealExact;
  animation-duration: 400ms;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  animation-delay: var(--delay);
  animation-fill-mode: forwards;
}

@keyframes gridRevealExact {
  0% {
    transform: scale(0.4);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

/* Sliding line animation */
.sliding-line.elementor-invisible {
    visibility: visible !important;
}

.sliding-line.animated {
    animation-name: slideInUpLower !important;
}

@keyframes slideInUpLower {
    0% {
        opacity: 0;
        transform: translateY(400px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}


/* Futuristic particles background */
.e-con.futuristic-particles-bg {
  position: relative !important;
  overflow: hidden !important;
}

.e-con.futuristic-particles-bg canvas {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  pointer-events: none !important;
  z-index: 1 !important;
}

.e-con.futuristic-particles-bg > * {
  position: relative;
  z-index: 2;
}


/* Typewriter text animation */
.typewriter-list-animation .elementor-icon-list-text {
  display: inline-block;
  overflow: hidden;
  white-space: nowrap;
  border-right: 2px solid #fff;
  max-width: 0;
  vertical-align: bottom;
  animation: blink-cursor 0.75s step-end infinite;
}

body.elementor-editor-active .typewriter-list-animation .elementor-icon-list-text {
  overflow: visible;
}

.typewriter-list-animation .is-typing {
  animation: typing var(--typing-duration) steps(var(--char-count), end) forwards;
}

.typewriter-list-animation .done-typing {
  max-width: 100% !important;
  border-right: transparent !important;
  animation: none !important;
}

.typewriter-text-animation .elementor-heading-title,
.typewriter-text-animation p,
.typewriter-text-animation span {
  display: inline-block;
  overflow: hidden;
  white-space: nowrap;
  border-right: 2px solid #fff;
  max-width: 0;
  vertical-align: bottom;
  animation: blink-cursor 0.75s step-end infinite;
}

body.elementor-editor-active .typewriter-text-animation .elementor-heading-title,
body.elementor-editor-active .typewriter-text-animation p,
body.elementor-editor-active .typewriter-text-animation span {
  overflow: visible;
}

.typewriter-text-animation .is-typing {
  animation: typing var(--typing-duration) steps(var(--char-count), end) forwards, blink-cursor 0.75s step-end infinite;
}

.typewriter-text-animation .done-typing {
  max-width: 100% !important;
  border-right: transparent !important;
  animation: none !important;
}


/* Futuristic text animation */
.futuristic-list-animation .elementor-icon-list-text, .futuristic-list-animation .ue_item_title, .futuristic-list-animation .ue-title {
  opacity: 0;
  display: inline-block;
}

body.elementor-editor-active .futuristic-list-animation .elementor-icon-list-text,
body.elementor-editor-active .futuristic-list-animation .ue_item_title,
body.elementor-editor-active .futuristic-list-animation .ue-title {
  opacity: 1;
}

.futuristic-list-animation .assemble-word {
  display: inline-block;
}

.futuristic-list-animation .assemble-char {
  display: inline-block;
  opacity: 0;
  transform: translateY(-8px) scale(1.1);
  filter: blur(4px);
  transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.futuristic-list-animation .assemble-char.is-ready {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}

.futuristic-text-animation .elementor-heading-title,
.futuristic-text-animation p,
.futuristic-text-animation h1,
.futuristic-text-animation h2,
.futuristic-text-animation h3,
.futuristic-text-animation h4,
.futuristic-text-animation h5,
.futuristic-text-animation h6 {
  opacity: 0;
  display: inline-block;
}

body.elementor-editor-active .futuristic-text-animation .elementor-heading-title,
body.elementor-editor-active .futuristic-text-animation p,
body.elementor-editor-active .futuristic-text-animation h1,
body.elementor-editor-active .futuristic-text-animation h2,
body.elementor-editor-active .futuristic-text-animation h3,
body.elementor-editor-active .futuristic-text-animation h4,
body.elementor-editor-active .futuristic-text-animation h5,
body.elementor-editor-active .futuristic-text-animation h6 {
  opacity: 1;
}

.futuristic-text-animation .assemble-word {
  display: inline-block;
}

.futuristic-text-animation .assemble-char {
  display: inline-block;
  opacity: 0;
  transform: translateY(-8px) scale(1.1);
  filter: blur(4px);
  transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.futuristic-text-animation .assemble-char.is-ready {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}


/* Futuristic vertical line divider animation */
.futuristic-divider-animation .elementor-divider-separator {
  width: 0 !important;
  max-width: 0 !important;
  transition: width 0.6s cubic-bezier(0.16, 1, 0.3, 1), max-width 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  margin-left: auto !important;
  margin-right: auto !important;
}

.futuristic-divider-animation.is-grown .elementor-divider-separator {
  width: 100% !important;
  max-width: 100% !important;
}



/* Futuristic Steps animation */
.futuristic-steps-animation .ue-step-item {
  opacity: 1;
}

.futuristic-steps-animation .ue-step-icon,
.futuristic-steps-animation .ue-step-item-content {
  opacity: 0;
  transform: translateY(15px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

body.elementor-editor-active .futuristic-steps-animation .ue-step-icon,
body.elementor-editor-active .futuristic-steps-animation .ue-step-item-content {
   opacity: 1;
}

.futuristic-steps-animation .ue-step-item.step-visible .ue-step-icon,
.futuristic-steps-animation .ue-step-item.step-visible .ue-step-item-content {
  opacity: 1;
  transform: translateY(0);
}

.futuristic-steps-animation .ue-step-item-line {
  transform: scaleX(0);
  transition: transform 0.25s linear !important; 
  transform-origin: left !important; 
}

.futuristic-steps-animation .ue-step-item-line.line-grown {
  transform: scaleX(1);
}


/* Image tech materializing animation */
.tech-materialize {
  position: relative;
  overflow: hidden;
}

body:not(.elementor-editor-active) .tech-materialize img:not(.tech-cover-img img) {
  opacity: 0;
  transform: scale(0.96) translateZ(0);
  filter: brightness(2.5) blur(6px);
  will-change: opacity, transform, filter;
}

.tech-materialize.is-visible img:not(.tech-cover-img img) {
  animation: techMaterializeIn 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.tech-cover-img {
  height: 100%;
}

.tech-cover-img .element-widget-container,
.tech-cover-img .widget-wrap {
  height: 100%;
}

body:not(.elementor-editor-active) .tech-cover-img img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center center !important;
  opacity: 0;
  transform: scale(0.96) translateZ(0);
  filter: brightness(2.5) blur(6px);
  will-change: opacity, transform, filter;
}

body:not(.elementor-editor-active) .tech-cover-img.pos-65 img {
  object-position: 65% center !important;
}

body:not(.elementor-editor-active) .tech-cover-img.pos-y-35 img {
  object-position: center 35% !important;
}

.tech-materialize.is-visible .tech-cover-img img {
  animation: techMaterializeIn 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.tech-materialize > *:not(.tech-cover-img) {
    position: relative;
    z-index: 2;
}

.tech-materialize::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: #2A3587;
  box-shadow: 0 0 12px #2A3587, 0 0 25px #4854cc;
  opacity: 0;
  z-index: 10;
  pointer-events: none;
}

.tech-materialize.is-visible::after {
    animation: scanSweep 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes techMaterializeIn {
    0% {
        opacity: 0;
        transform: scale(0.96) translateZ(0);
        filter: brightness(2.5) blur(6px);
    }
    50% {
        opacity: 0.8;
        transform: scale(0.98) translateZ(0);
        filter: brightness(1.3) blur(2px);
    }
    100% {
        opacity: 1;
        transform: scale(1) translateZ(0);
        filter: brightness(1) blur(0);
    }
}

@keyframes scanSweep {
    0% {
        top: 0%;
        opacity: 1;
    }
    90% {
        opacity: 1;
    }
    100% {
        top: 100%;
        opacity: 0;
    }
}

/* Titles particles assemble animation */
.particle-assemble-title {
  position: relative;
  opacity: 0;
  visibility: hidden;
}

.particle-assemble-title.active {
  opacity: 1;
  visibility: visible;
}

body.elementor-editor-active .particle-assemble-title {
  opacity: 1;
  visibility: visible;
}

.elementor-particle-wrapper {
  position: relative;
  display: inline-block;
  width: 100%;
}

.elementor-particle-wrapper canvas {
  position: absolute;
  top: -120px;
  left: -120px;
  pointer-events: none;
  z-index: 5;
}


/* Cookie Banner */
body.elementor-editor-active #CybotCookiebotDialog {
  display: none !important;
}


#CybotCookiebotDialog.CybotEdge {
  position: fixed !important;
  bottom: 40px !important;
  left: 40px  !important;
  right: auto !important;
  top: auto !important;
  max-width: 440px !important;
  width: 100% !important;
  box-sizing: border-box !important;
  z-index: 999999 !important;
  transform: none !important;
  min-width: 0 !important;
  max-height: none !important;
  padding: 24px !important;
}

#CybotCookiebotDialog.CybotEdge .CybotCookiebotDialogContentWrapper {
  flex-direction: column !important;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogHeader {
  display: none;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogTabContent {
  margin: 0 !important;
}

#CybotCookiebotDialog.CybotEdge .CybotCookiebotScrollContainer {
  overflow: auto;
  min-height: 0;
  border: 0 !important;
}

#CybotCookiebotDialog.CybotEdge .CybotCookiebotFader.CybotCookiebotDialogActive {
  display: none;
}

#CybotCookiebotDialog.CybotEdge .CybotCookiebotDialogGpcContainer {
  display: none !important;
}

#CybotCookiebotDialog.CybotEdge .CybotCookiebotDialogBodyBottomWrapper {
  margin-top: 5px !important;
}

#CybotCookiebotDialog.CybotEdge .CybotCookiebotDialogBodyBottomWrapper #CybotCookiebotDialogBodyEdgeMoreDetails {
  margin: 0 !important;
  justify-content: flex-start !important;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogFooter {
  height: auto !important;
  max-height: none;
  min-height: auto !important;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogFooter .CybotCookiebotScrollArea {
  height: auto !important;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogBodyButtons {
  max-width: none !important;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogBodyButtonsWrapper {
  flex-direction: row !important;
  justify-content: flex-start;
  width: auto !important;
  margin-top: 15px;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogBodyButtonsWrapper button {
  width: auto !important;
  font-size: 14px;
  padding: 8px !important;
  margin-top: 0 !important;
}

#CybotCookiebotDialog.CybotEdge #CybotCookiebotDialogBodyButtonsWrapper button:not(:last-of-type) {
  margin-right: 0.5em !important;
}


/** Responsive **/
@media (max-width: 576px) {
  #CybotCookiebotDialog.CybotEdge {
    bottom: 0 !important;
    left: 0 !important;
  }
}

