/*
 * SiteForge Premium Motion & Typography V12
 *
 * Adds expressive but performant motion to World-Class compositions and
 * prevents pathological desktop text wrapping. The motion layer respects
 * prefers-reduced-motion and keeps content fully usable without JavaScript.
 */

/* ---------------------------------------------------------------------- */
/* Typography safety                                                       */
/* ---------------------------------------------------------------------- */
body.lf-world-class-v11 .lf-el-hero-title,
body.lf-world-class-v11 .lf-el-section-title,
body.lf-world-class-v11 .lf-el-card-title,
body.lf-world-class-v11 .lf-world-service-title,
body.lf-world-class-v11 .lf-el-contact-title,
body.lf-world-class-v11 .lf-el-spotlight-title,
body.lf-world-class-v11 .lf-el-cta-band-title{
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
  text-wrap:balance;
}

body.lf-world-class-v11 .lf-world-service-copy-wrap,
body.lf-world-class-v11 .lf-world-service-row,
body.lf-world-class-v11 .lf-world-service-tile,
body.lf-world-class-v11 .lf-el-hero-copy-wrap,
body.lf-world-class-v11 .lf-el-intro{
  min-width:0;
}

body.lf-world-class-v11 .lf-world-service-title{
  max-width:none!important;
  width:min(100%,18ch);
  font-size:clamp(30px,3.6vw,62px);
  line-height:.98;
}

body.lf-world-class-v11 .lf-world-service-copy-wrap{
  grid-template-columns:clamp(42px,5vw,68px) minmax(0,1fr)!important;
}

body.lf-world-class-v11.lf-family-performance-grid .lf-el-section-title,
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-title,
body.lf-world-class-v11.lf-family-performance-grid .lf-el-card-title{
  max-width:min(100%,20ch)!important;
  letter-spacing:-.035em!important;
}

body.lf-world-class-v11 .elementor-button,
body.lf-world-class-v11 .elementor-button-text{
  white-space:nowrap;
}

/* ---------------------------------------------------------------------- */
/* V12 reveal language                                                     */
/* ---------------------------------------------------------------------- */
html.lf-motion-ready body.lf-world-class-v11 .lf-reveal{
  opacity:0;
  transform:
    translate3d(var(--lf-reveal-x,0px),var(--lf-reveal-y,30px),0)
    scale(var(--lf-reveal-scale,.985));
  filter:blur(7px);
  transition:
    opacity .82s cubic-bezier(.16,.78,.2,1) var(--lf-delay,0ms),
    transform .96s cubic-bezier(.16,.78,.2,1) var(--lf-delay,0ms),
    filter .72s ease var(--lf-delay,0ms);
  will-change:transform,opacity,filter;
}
html.lf-motion-ready body.lf-world-class-v11 .lf-reveal.is-visible{
  opacity:1;
  transform:translate3d(0,0,0) scale(1);
  filter:blur(0);
}

/* Image reveals feel cut/masked rather than generic fade-up. */
html.lf-motion-ready body.lf-world-class-v11 .lf-world-service-image.lf-reveal,
html.lf-motion-ready body.lf-world-class-v11 .lf-el-showcase-image.lf-reveal,
html.lf-motion-ready body.lf-world-class-v11 .lf-el-hero-media.lf-reveal{
  clip-path:inset(0 8% 0 0 round var(--lf-radius,0));
}
html.lf-motion-ready body.lf-world-class-v11 .lf-world-service-image.lf-reveal.is-visible,
html.lf-motion-ready body.lf-world-class-v11 .lf-el-showcase-image.lf-reveal.is-visible,
html.lf-motion-ready body.lf-world-class-v11 .lf-el-hero-media.lf-reveal.is-visible{
  clip-path:inset(0 0 0 0 round var(--lf-radius,0));
}

/* ---------------------------------------------------------------------- */
/* Scroll depth                                                            */
/* ---------------------------------------------------------------------- */
body.lf-world-class-v11 .lf-world-hero-media .elementor-widget-image img,
body.lf-world-class-v11 .lf-world-service-image img,
body.lf-world-class-v11 .lf-el-showcase-image img{
  transform:translate3d(0,var(--lf-world-parallax,0px),0) scale(1.035);
  transition:transform .18s linear;
  will-change:transform;
}

body.lf-world-class-v11 .lf-world-class-page>.lf-el-section:after{
  content:"";
  position:absolute;
  left:0;
  bottom:0;
  width:calc(var(--lf-section-progress,0) * 100%);
  max-width:100%;
  height:1px;
  background:linear-gradient(90deg,var(--accent),transparent);
  opacity:.28;
  pointer-events:none;
}

/* ---------------------------------------------------------------------- */
/* Performance Grid gets real motion and energy                            */
/* ---------------------------------------------------------------------- */
body.lf-world-class-v11.lf-family-performance-grid .lf-el-hero{
  overflow:hidden;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-el-hero:after{
  content:"";
  position:absolute;
  inset:-25%;
  pointer-events:none;
  background:
    linear-gradient(112deg,transparent 38%,color-mix(in srgb,var(--accent) 18%,transparent) 50%,transparent 62%),
    repeating-linear-gradient(90deg,transparent 0 79px,rgba(255,255,255,.035) 80px);
  transform:translate3d(-18%,0,0);
  animation:lfPowerGridFlow 11s linear infinite;
  opacity:.9;
  z-index:0;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-el-hero>*{
  position:relative;
  z-index:1;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-el-hero-title{
  position:relative;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-el-hero-title:after{
  content:"";
  display:block;
  width:clamp(72px,10vw,150px);
  height:5px;
  margin-top:22px;
  background:var(--accent);
  transform-origin:left center;
  animation:lfPowerPulse 2.7s cubic-bezier(.2,.7,.2,1) infinite;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-row{
  position:relative;
  overflow:hidden;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-row:before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  width:0;
  height:2px;
  background:var(--accent);
  transition:width .9s cubic-bezier(.16,.78,.2,1);
}
html.lf-motion-ready body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-row.is-visible:before{
  width:100%;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-number{
  color:var(--accent);
  font-size:13px;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-title{
  text-transform:uppercase;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-row>.elementor-widget-image{
  overflow:hidden;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-row>.elementor-widget-image:after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.18) 48%,transparent 65%);
  transform:translateX(-130%);
  transition:transform 1.05s cubic-bezier(.2,.75,.2,1);
  pointer-events:none;
}
body.lf-world-class-v11.lf-family-performance-grid .lf-world-service-row:hover>.elementor-widget-image:after{
  transform:translateX(130%);
}

/* ---------------------------------------------------------------------- */
/* Premium interaction                                                     */
/* ---------------------------------------------------------------------- */
body.lf-world-class-v11 .elementor-button{
  position:relative;
  overflow:hidden;
  isolation:isolate;
}
body.lf-world-class-v11 .elementor-button:after{
  content:"";
  position:absolute;
  top:-30%;
  bottom:-30%;
  width:42%;
  left:-60%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);
  transform:skewX(-18deg);
  transition:left .65s cubic-bezier(.2,.75,.2,1);
  pointer-events:none;
}
body.lf-world-class-v11 .elementor-button:hover:after{
  left:120%;
}

body.lf-world-class-v11 .lf-world-service-title{
  position:relative;
}
body.lf-world-class-v11 .lf-world-service-title:after{
  content:"";
  position:absolute;
  left:0;
  bottom:-8px;
  width:0;
  height:2px;
  background:var(--accent);
  transition:width .55s cubic-bezier(.2,.75,.2,1);
}
body.lf-world-class-v11 .lf-world-service-row:hover .lf-world-service-title:after,
body.lf-world-class-v11 .lf-world-service-tile:hover .lf-world-service-title:after{
  width:min(100%,180px);
}

body.lf-world-class-v11 .lf-world-service-tile{
  transform-style:preserve-3d;
}
body.lf-world-class-v11 .lf-world-service-tile:hover{
  box-shadow:0 26px 90px color-mix(in srgb,var(--ink) 14%,transparent);
}

/* Hero detail elements float independently so the first screen feels alive. */
@media(prefers-reduced-motion:no-preference){
  body.lf-world-class-v11 .lf-world-hero-inset{
    animation:lfWorldFloat 5.8s ease-in-out infinite;
  }
  body.lf-world-class-v11 .lf-world-command-card{
    animation:lfWorldFloat 6.6s ease-in-out -1.1s infinite;
  }
  body.lf-world-class-v11.lf-world-motif-orbit .lf-el-hero:before{
    animation:lfWorldOrbit 26s linear infinite;
  }
  body.lf-world-class-v11.lf-world-motif-beam .lf-el-hero:before{
    animation:lfWorldBeam 7.5s ease-in-out infinite alternate;
  }
}

@keyframes lfPowerGridFlow{
  from{transform:translate3d(-18%,0,0)}
  to{transform:translate3d(18%,0,0)}
}
@keyframes lfPowerPulse{
  0%,100%{transform:scaleX(.45);opacity:.55}
  50%{transform:scaleX(1);opacity:1}
}
@keyframes lfWorldFloat{
  0%,100%{translate:0 0}
  50%{translate:0 -10px}
}
@keyframes lfWorldOrbit{
  to{transform:rotate(360deg)}
}
@keyframes lfWorldBeam{
  from{transform:skewX(-18deg) translateX(-2%)}
  to{transform:skewX(-18deg) translateX(6%)}
}

/* ---------------------------------------------------------------------- */
/* Responsive typography guardrails                                        */
/* ---------------------------------------------------------------------- */
@media(max-width:1100px) and (min-width:768px){
  body.lf-world-class-v11 .lf-world-service-row{
    grid-template-columns:minmax(0,1fr) minmax(240px,.72fr)!important;
    gap:clamp(22px,3vw,44px)!important;
  }
  body.lf-world-class-v11 .lf-world-service-title{
    font-size:clamp(30px,4vw,50px);
    width:min(100%,20ch);
  }
  body.lf-world-class-v11 .lf-el-section-title{
    max-width:min(100%,16ch)!important;
  }
}

@media(max-width:767px){
  body.lf-world-class-v11 .elementor-button,
  body.lf-world-class-v11 .elementor-button-text{
    white-space:normal;
  }
  body.lf-world-class-v11 .lf-world-service-title{
    width:100%;
    max-width:100%!important;
    font-size:clamp(30px,9vw,48px);
  }
  body.lf-world-class-v11 .lf-world-service-copy-wrap{
    grid-template-columns:36px minmax(0,1fr)!important;
  }
  body.lf-world-class-v11 .lf-world-hero-media .elementor-widget-image img,
  body.lf-world-class-v11 .lf-world-service-image img,
  body.lf-world-class-v11 .lf-el-showcase-image img{
    transform:none;
  }
}

@media(prefers-reduced-motion:reduce){
  html body.lf-world-class-v11 .lf-reveal{
    opacity:1!important;
    transform:none!important;
    filter:none!important;
    clip-path:none!important;
  }
  body.lf-world-class-v11 *,
  body.lf-world-class-v11 *:before,
  body.lf-world-class-v11 *:after{
    animation:none!important;
    transition-duration:.001ms!important;
  }
}
