/* Viarovan Atelier — solo movimiento e interacción. Colores, anchos, fondos y tipografías siguen definidos desde Elementor. */
.elementor-element.vvrfx-reveal,
.elementor-element.vvrfx-fade-up,
.elementor-element.vvrfx-title-reveal{will-change:opacity,transform,filter}

.elementor-element.vvrfx-reveal.vvrfx-waiting{opacity:0;transform:translateY(40px) scale(.985);filter:blur(6px)}
.elementor-element.vvrfx-reveal-left.vvrfx-waiting{transform:translateX(-70px) scale(.985);filter:blur(6px)}
.elementor-element.vvrfx-reveal-right.vvrfx-waiting{transform:translateX(70px) scale(.985);filter:blur(6px)}
.elementor-element.vvrfx-reveal.vvrfx-visible{opacity:1;transform:none;filter:none;transition:opacity .9s ease,transform 1.05s cubic-bezier(.18,.82,.22,1),filter 1s ease}

.elementor-element.vvrfx-fade-up{opacity:0;transform:translateY(26px);filter:blur(3px)}
.elementor-element.vvrfx-fade-up.vvrfx-visible{opacity:1;transform:none;filter:none;transition:opacity .75s ease .08s,transform .85s cubic-bezier(.18,.82,.22,1) .08s,filter .7s ease .08s}

.elementor-element.vvrfx-title-reveal{overflow:hidden}
.elementor-element.vvrfx-title-reveal .elementor-heading-title{transform:translateY(116%) skewY(5deg);opacity:0;filter:blur(10px);transition:transform 1.2s cubic-bezier(.16,.88,.22,1),opacity .42s ease,filter 1s ease}
.elementor-element.vvrfx-title-reveal.vvrfx-visible .elementor-heading-title{transform:translateY(0) skewY(0);opacity:1;filter:none}

.elementor-element.vvrfx-card-tilt{transition:transform .45s cubic-bezier(.18,.82,.22,1),box-shadow .45s ease;transform-style:preserve-3d;will-change:transform,box-shadow;backface-visibility:hidden}
.elementor-element.vvrfx-card-tilt:hover{box-shadow:0 28px 70px rgba(0,0,0,.16)}
.elementor-element.vvrfx-card-shine{position:relative;overflow:hidden}
.elementor-element.vvrfx-card-shine:after{content:"";position:absolute;inset:-40%;pointer-events:none;transform:translateX(-150%) rotate(16deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);transition:transform 1.05s cubic-bezier(.18,.82,.22,1)}
.elementor-element.vvrfx-card-shine:hover:after{transform:translateX(160%) rotate(16deg)}

.elementor-element.vvrfx-glass-card{backdrop-filter:blur(10px) saturate(125%);-webkit-backdrop-filter:blur(10px) saturate(125%)}

.elementor-element.vvrfx-image-zoom{overflow:hidden}
.elementor-element.vvrfx-image-zoom img{transition:transform 1.35s cubic-bezier(.16,.74,.2,1),filter 1.1s ease;will-change:transform,filter}
.elementor-element.vvrfx-image-zoom:hover img{transform:scale(1.08);filter:contrast(1.04) saturate(1.02)}
.elementor-element.vvrfx-image-sweep{position:relative;overflow:hidden}
.elementor-element.vvrfx-image-sweep:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 32%,rgba(255,255,255,.13) 50%,transparent 68%);transform:translateX(-130%);transition:transform 1.1s cubic-bezier(.18,.82,.22,1);pointer-events:none}
.elementor-element.vvrfx-image-sweep:hover:after{transform:translateX(130%)}
.elementor-element.vvrfx-image-float{animation:vvrFloat 8s ease-in-out infinite}

.elementor-element.vvrfx-button-lift .elementor-button{position:relative;overflow:hidden;transition:transform .24s ease,filter .24s ease,letter-spacing .24s ease;will-change:transform}
.elementor-element.vvrfx-button-lift .elementor-button:before{content:"";position:absolute;inset:-1px;background:linear-gradient(100deg,transparent,rgba(255,255,255,.24),transparent);transform:translateX(-160%);transition:transform .9s cubic-bezier(.18,.82,.22,1)}
.elementor-element.vvrfx-button-lift:hover .elementor-button{transform:translateY(-4px);letter-spacing:.01em}
.elementor-element.vvrfx-button-lift:hover .elementor-button:before{transform:translateX(160%)}
.elementor-element.vvrfx-button-glow .elementor-button{animation:vvrGlow 4s ease-in-out infinite}

.elementor-element.vvrfx-gold-pulse .elementor-heading-title{animation:vvrGoldPulse 4.4s ease-in-out infinite}

.elementor-element.vvrfx-marquee{white-space:nowrap;overflow:hidden}
.elementor-element.vvrfx-marquee .elementor-heading-title{display:inline-block;min-width:max-content;animation:vvrMarquee 22s linear infinite}

.elementor-element.vvrfx-spotlight{position:relative;isolation:isolate}
.elementor-element.vvrfx-spotlight:before{content:"";position:absolute;inset:-20%;pointer-events:none;z-index:-1;opacity:.16;background:radial-gradient(circle at var(--vvr-x,50%) var(--vvr-y,50%),rgba(255,255,255,.75),transparent 24%);transition:opacity .25s ease,transform .25s ease}
.elementor-element.vvrfx-spotlight:hover:before{opacity:.22}

.elementor-element.vvrfx-hero-cinematic{position:relative;overflow:hidden}
.elementor-element.vvrfx-hero-cinematic:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.06),transparent 24%,transparent 76%,rgba(255,255,255,.04));mix-blend-mode:screen}
.elementor-element.vvrfx-hero-cinematic:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 18% 18%,rgba(200,169,106,.24),transparent 22%),radial-gradient(circle at 84% 22%,rgba(255,255,255,.09),transparent 18%),radial-gradient(circle at 50% 85%,rgba(200,169,106,.16),transparent 20%);opacity:.92}

.elementor-element.vvrfx-grain{position:relative}
.elementor-element.vvrfx-grain:before{content:"";position:absolute;inset:-15%;pointer-events:none;opacity:.08;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.85'/%3E%3C/svg%3E");mix-blend-mode:soft-light;animation:vvrGrain 10s steps(6) infinite}

.elementor-element.vvrfx-hero-orb{position:relative}
.elementor-element.vvrfx-hero-orb:after{content:"";position:absolute;right:-120px;top:110px;width:420px;height:420px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(200,169,106,.18),rgba(200,169,106,0) 62%);filter:blur(18px);animation:vvrOrb 9s ease-in-out infinite}

@keyframes vvrFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@keyframes vvrGlow{0%,100%{filter:drop-shadow(0 0 0 rgba(200,169,106,0))}50%{filter:drop-shadow(0 0 18px rgba(200,169,106,.46))}}
@keyframes vvrGoldPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.25)}}
@keyframes vvrMarquee{0%{transform:translateX(7%)}100%{transform:translateX(-7%)}}
@keyframes vvrGrain{0%{transform:translate(0,0)}25%{transform:translate(-1.5%,-1%)}50%{transform:translate(1%,1%)}75%{transform:translate(-1%,1.5%)}100%{transform:translate(0,0)}}
@keyframes vvrOrb{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-24px,16px,0) scale(1.08)}}

@media (prefers-reduced-motion:reduce){
  .elementor-element.vvrfx-reveal,
  .elementor-element.vvrfx-fade-up,
  .elementor-element.vvrfx-title-reveal .elementor-heading-title,
  .elementor-element.vvrfx-card-tilt,
  .elementor-element.vvrfx-image-zoom img,
  .elementor-element.vvrfx-button-lift .elementor-button,
  .elementor-element.vvrfx-image-float,
  .elementor-element.vvrfx-button-glow .elementor-button,
  .elementor-element.vvrfx-gold-pulse .elementor-heading-title,
  .elementor-element.vvrfx-marquee .elementor-heading-title,
  .elementor-element.vvrfx-grain:before,
  .elementor-element.vvrfx-hero-orb:after{transition:none!important;animation:none!important;transform:none!important;filter:none!important;opacity:1!important}
}
