/* CreatixNova · Footer · franja NOVA. Paquete "footer-nova" del plugin CreatixNova Core.
   Las teclas se "marcan" solas (6-6-8-2) y cada una enciende su letra (N-O-V-A).
   Los botones Llamar y WhatsApp llevan animación propia. Todo está maquetado con widgets nativos; esto solo anima. */

/* El titular animado deja un espacio tras "6697-": se pega al número que alterna */
.cnx-ft-nova .elementor-headline-dynamic-wrapper{margin-left:-.26em}

/* ---------- Teclado ---------- */
.cnx-nova-pad{position:relative;isolation:isolate}
.cnx-nova-pad::before{ /* halo que respira detrás del teclado */
	content:"";position:absolute;inset:-30% -12%;z-index:-1;pointer-events:none;
	background:radial-gradient(closest-side,rgba(59,54,255,.28),rgba(35,7,242,.08) 60%,transparent);
	opacity:.45;transition:opacity .8s ease}
.cnx-nova-pad.is-call::before{opacity:1}
.cnx-nova-key{
	position:relative;overflow:hidden;
	background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.015))!important;
	box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 10px 24px -14px rgba(0,0,0,.9);
	transition:transform .18s cubic-bezier(.3,.7,.4,1),box-shadow .35s ease,border-color .35s ease}
.cnx-nova-key::after{ /* onda al presionar */
	content:"";position:absolute;left:50%;top:50%;width:140%;aspect-ratio:1;border-radius:50%;pointer-events:none;
	background:radial-gradient(circle,rgba(138,153,255,.55),transparent 60%);
	transform:translate(-50%,-50%) scale(0);opacity:0}
.cnx-nova-key .elementor-widget-heading:last-child .elementor-heading-title{
	display:inline-block;opacity:.22;transform:translateY(6px) scale(.85);
	transition:opacity .4s ease,transform .5s cubic-bezier(.2,1.4,.4,1),text-shadow .4s ease,color .4s ease}
.cnx-nova-key .elementor-widget-heading:first-child .elementor-heading-title{transition:color .3s ease,opacity .3s ease}
/* tecla presionada */
.cnx-nova-key.is-press{transform:translateY(3px) scale(.95);border-color:rgba(138,153,255,.75)!important;
	box-shadow:inset 0 2px 10px rgba(0,0,0,.5),0 0 0 4px rgba(59,54,255,.18),0 0 32px rgba(59,54,255,.45)}
.cnx-nova-key.is-press::after{animation:cnxNovaRipple .7s ease-out}
@keyframes cnxNovaRipple{0%{transform:translate(-50%,-50%) scale(0);opacity:1}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
/* letra encendida */
.cnx-nova-key.is-lit{border-color:rgba(59,54,255,.45)!important}
.cnx-nova-key.is-lit .elementor-widget-heading:last-child .elementor-heading-title{
	opacity:1;transform:none;color:#fff!important;
	text-shadow:0 0 12px rgba(138,153,255,.9),0 0 28px rgba(59,54,255,.7)}
.cnx-nova-key.is-lit .elementor-widget-heading:first-child .elementor-heading-title{opacity:.55}
/* barrido final: la palabra NOVA brilla de punta a punta */
.cnx-nova-pad.is-call .cnx-nova-key{animation:cnxNovaSweep 1.2s ease both}
.cnx-nova-pad.is-call .cnx-nova-key:nth-child(2){animation-delay:.1s}
.cnx-nova-pad.is-call .cnx-nova-key:nth-child(3){animation-delay:.2s}
.cnx-nova-pad.is-call .cnx-nova-key:nth-child(4){animation-delay:.3s}
@keyframes cnxNovaSweep{40%{box-shadow:0 0 0 1px rgba(138,153,255,.6),0 0 34px -6px rgba(59,54,255,.8)}} /* solo brillo, sin movimiento */

/* ---------- Botón Llamar ---------- */
.cnx-btn-call .elementor-button{
	position:relative;isolation:isolate;overflow:visible;
	background:linear-gradient(110deg,#2307F2,#3B36FF 45%,#5C64FF 70%,#2307F2)!important;background-size:250% 100%!important;
	color:#fff!important;box-shadow:0 12px 30px -10px rgba(59,54,255,.75);
	animation:cnxBtnFlow 5s linear infinite;transition:transform .25s ease,box-shadow .25s ease}
.cnx-btn-call .elementor-button::before,.cnx-btn-call .elementor-button::after{ /* ondas de llamada */
	content:"";position:absolute;inset:0;border-radius:inherit;z-index:-1;pointer-events:none;
	border:2px solid rgba(138,153,255,.7);animation:cnxBtnRing 2.4s ease-out infinite}
.cnx-btn-call .elementor-button::after{animation-delay:1.2s}
.cnx-btn-call .elementor-button-icon{display:inline-flex;animation:cnxPhoneRing 2.4s ease-in-out infinite;transform-origin:50% 60%}
.cnx-btn-call .elementor-button:hover,.cnx-btn-call .elementor-button:focus-visible{
	transform:translateY(-3px);color:#fff!important;box-shadow:0 18px 38px -10px rgba(59,54,255,.95)}
.cnx-btn-call .elementor-button:hover .elementor-button-icon{animation-duration:.9s}
@keyframes cnxBtnFlow{to{background-position:-250% 0}}
@keyframes cnxBtnRing{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.25,1.6);opacity:0}}
@keyframes cnxPhoneRing{0%,55%,100%{transform:rotate(0)}60%{transform:rotate(-16deg)}65%{transform:rotate(14deg)}70%{transform:rotate(-12deg)}75%{transform:rotate(10deg)}80%{transform:rotate(-6deg)}85%{transform:rotate(0)}}

/* ---------- Botón WhatsApp ---------- */
.cnx-btn-wa .elementor-button{
	position:relative;isolation:isolate;overflow:hidden;
	background:rgba(37,211,102,.06)!important;border:1.5px solid rgba(37,211,102,.65)!important;color:#fff!important;
	transition:transform .25s ease,box-shadow .3s ease,color .3s ease}
.cnx-btn-wa .elementor-button::before{ /* relleno verde que entra al pasar el puntero */
	content:"";position:absolute;inset:0;z-index:-1;background:#25D366;
	transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.7,0,.2,1)}
.cnx-btn-wa .elementor-button::after{ /* destello que cruza el botón cada pocos segundos */
	content:"";position:absolute;top:0;bottom:0;width:40%;left:-60%;z-index:-1;pointer-events:none;
	background:linear-gradient(100deg,transparent,rgba(37,211,102,.45),transparent);
	animation:cnxBtnShine 3.6s ease-in-out infinite}
.cnx-btn-wa .elementor-button-icon{display:inline-flex;color:#25D366;transition:color .3s ease}
.cnx-btn-wa .elementor-button-icon i,.cnx-btn-wa .elementor-button-icon svg{color:inherit;fill:currentColor}
.cnx-btn-wa .elementor-button:hover,.cnx-btn-wa .elementor-button:focus-visible{
	transform:translateY(-3px);color:#0B0C0E!important;box-shadow:0 16px 34px -12px rgba(37,211,102,.8)}
.cnx-btn-wa .elementor-button:hover::before,.cnx-btn-wa .elementor-button:focus-visible::before{transform:scaleX(1)}
.cnx-btn-wa .elementor-button:hover .elementor-button-icon{color:#0B0C0E;animation:cnxWaHop .6s ease}
@keyframes cnxBtnShine{0%,55%{left:-60%}100%{left:130%}}
@keyframes cnxWaHop{40%{transform:translateY(-4px) rotate(-10deg)}}

/* ---------- Flecha PNG que señala el botón de la llamada a la acción ---------- */
.cnx-cta-arrow img{display:block;transform-origin:0 50%;animation:cnxArrowNudge 2.4s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes cnxArrowNudge{0%,100%{transform:translateX(0) rotate(0)}50%{transform:translateX(12px) rotate(-3deg)}}

@media (prefers-reduced-motion:reduce){
	.cnx-cta-arrow img{animation:none}
	.cnx-btn-call .elementor-button,.cnx-btn-call .elementor-button::before,.cnx-btn-call .elementor-button::after,
	.cnx-btn-call .elementor-button-icon,.cnx-btn-wa .elementor-button::after,.cnx-nova-key,.cnx-nova-key::after{animation:none!important}
	.cnx-nova-key .elementor-widget-heading:last-child .elementor-heading-title{opacity:1;transform:none;color:#fff!important}
}
