.elementor-25 .elementor-element.elementor-element-2355f94{--display:flex;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-13978ad{margin:-237px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 39px;}.elementor-25 .elementor-element.elementor-element-13978ad .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:41px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-82942f9{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--margin-top:40px;--margin-bottom:0px;--margin-left:37px;--margin-right:0px;}.elementor-widget-nav-menu .elementor-nav-menu .elementor-item{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item{color:var( --e-global-color-text );fill:var( --e-global-color-text );}.elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item:hover,
					.elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item.elementor-item-active,
					.elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item.highlighted,
					.elementor-widget-nav-menu .elementor-nav-menu--main .elementor-item:focus{color:var( --e-global-color-accent );fill:var( --e-global-color-accent );}.elementor-widget-nav-menu .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:before,
					.elementor-widget-nav-menu .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:after{background-color:var( --e-global-color-accent );}.elementor-widget-nav-menu .e--pointer-framed .elementor-item:before,
					.elementor-widget-nav-menu .e--pointer-framed .elementor-item:after{border-color:var( --e-global-color-accent );}.elementor-widget-nav-menu{--e-nav-menu-divider-color:var( --e-global-color-text );}.elementor-widget-nav-menu .elementor-nav-menu--dropdown .elementor-item, .elementor-widget-nav-menu .elementor-nav-menu--dropdown  .elementor-sub-item{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-25 .elementor-element.elementor-element-6da013d{width:var( --container-widget-width, 51% );max-width:51%;--container-widget-width:51%;--container-widget-flex-grow:0;--e-nav-menu-horizontal-menu-item-margin:calc( 0px / 2 );}.elementor-25 .elementor-element.elementor-element-6da013d.elementor-element{--align-self:center;}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu .elementor-item{font-family:"Lexend", Sans-serif;font-size:19px;font-weight:600;text-transform:uppercase;line-height:20px;letter-spacing:0px;word-spacing:0px;}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main .elementor-item{color:#929292;fill:#929292;}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main .elementor-item:hover,
					.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main .elementor-item.elementor-item-active,
					.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main .elementor-item.highlighted,
					.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main .elementor-item:focus{color:var( --e-global-color-primary );fill:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:before,
					.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:after{background-color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed .elementor-item:before,
					.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed .elementor-item:after{border-color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main .elementor-item.elementor-item-active{color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:before,
					.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:after{background-color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed .elementor-item.elementor-item-active:before,
					.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed .elementor-item.elementor-item-active:after{border-color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed .elementor-item:before{border-width:3px;}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 0 3px 3px;}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed.e--animation-draw .elementor-item:after{border-width:3px 3px 0 0;}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 0 0 3px;}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-framed.e--animation-corners .elementor-item:after{border-width:0 3px 3px 0;}.elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-underline .elementor-item:after,
					 .elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-overline .elementor-item:before,
					 .elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-double-line .elementor-item:before,
					 .elementor-25 .elementor-element.elementor-element-6da013d .e--pointer-double-line .elementor-item:after{height:3px;}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--main:not(.elementor-nav-menu--layout-horizontal) .elementor-nav-menu > li:not(:last-child){margin-bottom:0px;}.elementor-25 .elementor-element.elementor-element-df28852{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--gap:200px 200px;--row-gap:200px;--column-gap:200px;--margin-top:40px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-25 .elementor-element.elementor-element-d77799d{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:flex-end;}.elementor-25 .elementor-element.elementor-element-d77799d.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-25 .elementor-element.elementor-element-7d11b0b{--display:flex;--min-height:387px;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:center;--margin-top:0px;--margin-bottom:100px;--margin-left:0px;--margin-right:0px;}.elementor-25 .elementor-element.elementor-element-b38e394{--display:flex;--min-height:460px;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-c2ba000{--display:flex;--min-height:450px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-eec05fc{--display:flex;--min-height:450px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-4f63661 img{height:450px;object-fit:cover;object-position:center center;}.elementor-25 .elementor-element.elementor-element-81b2041 img{height:450px;object-fit:cover;object-position:center center;}.elementor-25 .elementor-element.elementor-element-399c87d{--display:flex;--align-items:flex-start;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--margin-top:-268px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:5%;--padding-bottom:5%;--padding-left:5%;--padding-right:5%;}.elementor-25 .elementor-element.elementor-element-aced35f{text-align:start;}.elementor-25 .elementor-element.elementor-element-aced35f img{width:51%;}.elementor-25 .elementor-element.elementor-element-86dbe3b .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:22px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-1258cff .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-824633b{--display:flex;--min-height:460px;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-e8895a5{--display:flex;--min-height:450px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-bfd4c3a{--display:flex;--min-height:450px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-b2f5892 img{height:450px;object-fit:cover;object-position:center center;}.elementor-25 .elementor-element.elementor-element-bc7c197 img{height:450px;object-fit:cover;object-position:center center;}.elementor-25 .elementor-element.elementor-element-7d02381{--display:flex;--align-items:flex-start;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--margin-top:-268px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:5%;--padding-bottom:5%;--padding-left:5%;--padding-right:5%;}.elementor-25 .elementor-element.elementor-element-01f0206{text-align:start;}.elementor-25 .elementor-element.elementor-element-01f0206 img{width:51%;}.elementor-25 .elementor-element.elementor-element-711de0c .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:22px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-ba6b796 .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-0d4e9b2{--display:flex;--min-height:460px;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-0d4e9b2.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-25 .elementor-element.elementor-element-a235638{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-fd3cf4a{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-9c10987 img{height:450px;object-fit:cover;object-position:center center;}.elementor-25 .elementor-element.elementor-element-14a1f7c img{height:450px;object-fit:cover;object-position:center center;}.elementor-25 .elementor-element.elementor-element-38a6ae0{--display:flex;--align-items:flex-start;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--margin-top:-268px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:5%;--padding-bottom:5%;--padding-left:5%;--padding-right:5%;}.elementor-25 .elementor-element.elementor-element-0eba7ad{text-align:start;}.elementor-25 .elementor-element.elementor-element-0eba7ad img{width:51%;}.elementor-25 .elementor-element.elementor-element-f500a09 .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:22px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-d13fdf4 .elementor-heading-title{font-family:"Lexend", Sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;}.elementor-25 .elementor-element.elementor-element-064ebbb{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--margin-top:0px;--margin-bottom:100px;--margin-left:0px;--margin-right:0px;}:root{--page-title-display:none;}@media(max-width:767px){.elementor-25 .elementor-element.elementor-element-2355f94{--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-25 .elementor-element.elementor-element-13978ad{margin:-110px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 20px 0px 20px;}.elementor-25 .elementor-element.elementor-element-13978ad .elementor-heading-title{font-size:24px;}.elementor-25 .elementor-element.elementor-element-82942f9{--margin-top:28px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:20px;}.elementor-25 .elementor-element.elementor-element-6da013d{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu .elementor-item{font-size:16px;line-height:0.1em;}.elementor-25 .elementor-element.elementor-element-df28852{--justify-content:flex-start;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:20px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:20px;}.elementor-25 .elementor-element.elementor-element-a458491{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}.elementor-25 .elementor-element.elementor-element-f58cb37{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}.elementor-25 .elementor-element.elementor-element-d77799d{--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:20px;}.elementor-25 .elementor-element.elementor-element-7d11b0b{--margin-top:20px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:20px;--padding-right:20px;}.elementor-25 .elementor-element.elementor-element-9c10987 img{object-fit:fill;}}@media(min-width:768px){.elementor-25 .elementor-element.elementor-element-2355f94{--content-width:1200px;}.elementor-25 .elementor-element.elementor-element-82942f9{--content-width:1200px;}.elementor-25 .elementor-element.elementor-element-df28852{--content-width:1200px;}.elementor-25 .elementor-element.elementor-element-d77799d{--width:1200px;}.elementor-25 .elementor-element.elementor-element-7d11b0b{--content-width:1200px;}.elementor-25 .elementor-element.elementor-element-b38e394{--width:33%;}.elementor-25 .elementor-element.elementor-element-824633b{--width:33%;}.elementor-25 .elementor-element.elementor-element-0d4e9b2{--width:33%;}.elementor-25 .elementor-element.elementor-element-064ebbb{--content-width:1200px;}}/* Start custom CSS for nav-menu, class: .elementor-element-6da013d *//* === Que el <a> mida lo mismo que el texto === */
.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a.elementor-item {
  /* Evita que el tema lo estire y lo convierta en contenedor “centrado” */
  flex: 0 0 auto !important;          /* anula el flex-grow:1 global */
  display: flex !important;           /* puede seguir siendo flex, no pasa nada */
  align-items: center;
  justify-content: flex-start;        /* por si acaso */
  width: max-content !important;      /* << se ajusta al texto */
  max-width: none !important;
  margin: 0 !important;
  padding-left: 0 !important;         /* opcional: quita padding para que el puntero arranque EXACTO en la 1ª letra */
  padding-right: 35px;                /* separación entre items; ajusta */
}

/* El <ul> en fila, arrancando a la izquierda (por si acaso) */
.elementor-25 .elementor-element.elementor-element-6da013d .elementor-nav-menu {
  display: flex !important;
  justify-content: flex-start !important;
}

/* === Puntero pegado a la 1ª letra + ancho custom === */
.elementor-25 .elementor-element.elementor-element-6da013d { --ef-pointer-width: 40%; } /* ajusta 20–60% */
.elementor-25 .elementor-element.elementor-element-6da013d.e--pointer-underline .elementor-item:after,
.elementor-25 .elementor-element.elementor-element-6da013d.e--pointer-overline  .elementor-item:after {
  left: 0 !important;                 /* arranca en el borde izquierdo del <a> (ahora coincide con la 1ª letra) */
  right: auto !important;
  transform: none !important;
  width: var(--ef-pointer-width) !important;
  height: 2px;
  bottom: -2px;
  transition: width .25s ease;
}

/* Consistencia en hover/activo */
.elementor-25 .elementor-element.elementor-element-6da013d .elementor-item:hover:after,
.elementor-25 .elementor-element.elementor-element-6da013d .elementor-item.elementor-item-active:after,
.elementor-25 .elementor-element.elementor-element-6da013d .current-menu-item > .elementor-item:after {
  width: var(--ef-pointer-width) !important;
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-eec05fc *//* Contenedor del rollover */
.project-rollover {
    position: relative;
    overflow: hidden;
}

/* Ambas imágenes ocupan el contenedor */
.project-rollover img {
    width: 100%;
    display: block;
    transition: opacity 0.35s ease, transform 0.35s ease;
    object-fit: cover;      /* Opcional, ayuda a mantener proporción */
}

/* Imagen hover encima de la normal */
.project-rollover .image-hover {
    position: absolute;
    inset: 0;          /* top/right/bottom/left:0 */
    opacity: 0;
}

/* Estado inicial */
.project-rollover .image-normal {
    opacity: 1;
}

/* Al pasar el ratón: cambia la imagen */
.project-rollover:hover .image-hover {
    opacity: 1;
}

.project-rollover:hover .image-normal {
    opacity: 0;
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-1258cff */.subrayado-10{
  position: relative;
  text-decoration: none;
  color: white;
  white-space: nowrap; /* evita salto de línea */
}
/* Asegura que el color se mantenga siempre blanco */
.subrayado-40:link,
.subrayado-40:visited,
.subrayado-40:hover,
.subrayado-40:active {
  color: white;
}

.subrayado-10::after{
  content: "";
  position: absolute;
  left: 0;                 /* empieza al inicio del texto */
  bottom: -0.69em;         /* separación respecto al texto */
  width: 40%;              /* solo la mitad del texto */
  height: 4px;             /* grosor de la línea */
  background: currentColor;/* usa el color del texto */
  pointer-events: none;
}
.subrayado-10:hover::after{
  width: 100%;             /* efecto opcional al pasar el ratón */
  transition: width .2s ease;
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-b38e394 *//* =========================
   CONFIG & BASE EF-CARD
   ========================= */
.ef-card{
  position: relative;
  overflow: visible; /* por si el subrayado sale fuera */

  /* Movimiento del bloque .div-texto (anclado abajo + translateY) */
  /* Ahora 0px = pegado al borde inferior. Valores negativos = subir. */
  --div-texto-rest: 0px;        /* estado normal: pegado abajo */
  --div-texto-hover: -118px;    /* en hover: sube esta cantidad (ajusta a tu diseño) */
  --move-duration: 300ms;
  --move-ease: ease;
  --move-delay: 0ms;

  /* Subrayado inferior */
  --ef-underline-color: #D25F0E; /* color solicitado */
  --ef-underline-height: 3px;
  --ef-underline-offset: 10px;   /* distancia por debajo de la tarjeta */
  --underline-duration: 250ms;
  --underline-ease: ease;
  --underline-delay: 0ms;
}

/* =========================
   BLOQUE DE TEXTO ANCLADO ABAJO (sin reflow)
   ========================= */
.ef-card .div-texto{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;                                  /* ← pegado al borde inferior */
  transform: translateY(var(--div-texto-rest));
  transition: transform var(--move-duration) var(--move-ease) var(--move-delay);
  will-change: transform;
}
.ef-card:hover .div-texto,
.ef-card.is-open .div-texto{
  transform: translateY(var(--div-texto-hover)); /* sube en hover */
}

/* =========================
   TEXTO OCULTO SIN CAMBIAR ALTURA
   (el contenedor siempre ocupa espacio)
   ========================= */
.ef-card .ef-card__reveal{
  visibility: hidden;
}
.ef-card:hover .ef-card__reveal,
.ef-card.is-open .ef-card__reveal{
  visibility: visible;
}

/* =========================
   SUBRAYADO HORIZONTAL (solo horizontal, sin “bajadas”)
   ========================= */
.ef-card::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: calc(var(--ef-underline-offset) * -1); /* anclado bajo la tarjeta */
  height: var(--ef-underline-height);
  width: 100%;
  background: var(--ef-underline-color);
  transform: scaleX(0);
  transform-origin: left; /* aparece/colapsa siempre hacia la izquierda */
  transition: transform var(--underline-duration) var(--underline-ease) var(--underline-delay);
  will-change: transform;
  pointer-events: none;
  z-index: 1;
}
.ef-card:hover::after,
.ef-card.is-open::after{
  transform: scaleX(1);
}

/* =========================
   ACCESIBILIDAD
   ========================= */
@media (prefers-reduced-motion: reduce){
  .ef-card .div-texto{ transition: none; }
  .ef-card::after{
    transition: none;
    transform: scaleX(1);
  }
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-bfd4c3a *//* Contenedor del rollover */
.project-rollover {
    position: relative;
    overflow: hidden;
}

/* Ambas imágenes ocupan el contenedor */
.project-rollover img {
    width: 100%;
    display: block;
    transition: opacity 0.35s ease, transform 0.35s ease;
    object-fit: cover;      /* Opcional, ayuda a mantener proporción */
}

/* Imagen hover encima de la normal */
.project-rollover .image-hover {
    position: absolute;
    inset: 0;          /* top/right/bottom/left:0 */
    opacity: 0;
}

/* Estado inicial */
.project-rollover .image-normal {
    opacity: 1;
}

/* Al pasar el ratón: cambia la imagen */
.project-rollover:hover .image-hover {
    opacity: 1;
}

.project-rollover:hover .image-normal {
    opacity: 0;
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-ba6b796 */.subrayado-10{
  position: relative;
  text-decoration: none;
  color: white;
  white-space: nowrap; /* evita salto de línea */
}
/* Asegura que el color se mantenga siempre blanco */
.subrayado-40:link,
.subrayado-40:visited,
.subrayado-40:hover,
.subrayado-40:active {
  color: white;
}

.subrayado-10::after{
  content: "";
  position: absolute;
  left: 0;                 /* empieza al inicio del texto */
  bottom: -0.69em;         /* separación respecto al texto */
  width: 40%;              /* solo la mitad del texto */
  height: 4px;             /* grosor de la línea */
  background: currentColor;/* usa el color del texto */
  pointer-events: none;
}
.subrayado-10:hover::after{
  width: 100%;             /* efecto opcional al pasar el ratón */
  transition: width .2s ease;
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-824633b *//* =========================
   CONFIG & BASE EF-CARD
   ========================= */
.ef-card{
  position: relative;
  overflow: visible; /* por si el subrayado sale fuera */

  /* Movimiento del bloque .div-texto (anclado abajo + translateY) */
  /* Ahora 0px = pegado al borde inferior. Valores negativos = subir. */
  --div-texto-rest: 0px;        /* estado normal: pegado abajo */
  --div-texto-hover: -118px;    /* en hover: sube esta cantidad (ajusta a tu diseño) */
  --move-duration: 300ms;
  --move-ease: ease;
  --move-delay: 0ms;

  /* Subrayado inferior */
  --ef-underline-color: #D25F0E; /* color solicitado */
  --ef-underline-height: 3px;
  --ef-underline-offset: 10px;   /* distancia por debajo de la tarjeta */
  --underline-duration: 250ms;
  --underline-ease: ease;
  --underline-delay: 0ms;
}

/* =========================
   BLOQUE DE TEXTO ANCLADO ABAJO (sin reflow)
   ========================= */
.ef-card .div-texto{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;                                  /* ← pegado al borde inferior */
  transform: translateY(var(--div-texto-rest));
  transition: transform var(--move-duration) var(--move-ease) var(--move-delay);
  will-change: transform;
}
.ef-card:hover .div-texto,
.ef-card.is-open .div-texto{
  transform: translateY(var(--div-texto-hover)); /* sube en hover */
}

/* =========================
   TEXTO OCULTO SIN CAMBIAR ALTURA
   (el contenedor siempre ocupa espacio)
   ========================= */
.ef-card .ef-card__reveal{
  visibility: hidden;
}
.ef-card:hover .ef-card__reveal,
.ef-card.is-open .ef-card__reveal{
  visibility: visible;
}

/* =========================
   SUBRAYADO HORIZONTAL (solo horizontal, sin “bajadas”)
   ========================= */
.ef-card::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: calc(var(--ef-underline-offset) * -1); /* anclado bajo la tarjeta */
  height: var(--ef-underline-height);
  width: 100%;
  background: var(--ef-underline-color);
  transform: scaleX(0);
  transform-origin: left; /* aparece/colapsa siempre hacia la izquierda */
  transition: transform var(--underline-duration) var(--underline-ease) var(--underline-delay);
  will-change: transform;
  pointer-events: none;
  z-index: 1;
}
.ef-card:hover::after,
.ef-card.is-open::after{
  transform: scaleX(1);
}

/* =========================
   ACCESIBILIDAD
   ========================= */
@media (prefers-reduced-motion: reduce){
  .ef-card .div-texto{ transition: none; }
  .ef-card::after{
    transition: none;
    transform: scaleX(1);
  }
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-fd3cf4a *//* Contenedor del rollover */
.project-rollover {
    position: relative;
    overflow: hidden;
}

/* Ambas imágenes ocupan el contenedor */
.project-rollover img {
    width: 100%;
    display: block;
    transition: opacity 0.35s ease, transform 0.35s ease;
    object-fit: cover;      /* Opcional, ayuda a mantener proporción */
}

/* Imagen hover encima de la normal */
.project-rollover .image-hover {
    position: absolute;
    inset: 0;          /* top/right/bottom/left:0 */
    opacity: 0;
}

/* Estado inicial */
.project-rollover .image-normal {
    opacity: 1;
}

/* Al pasar el ratón: cambia la imagen */
.project-rollover:hover .image-hover {
    opacity: 1;
}

.project-rollover:hover .image-normal {
    opacity: 0;
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-d13fdf4 */.subrayado-10{
  position: relative;
  text-decoration: none;
  color: white;
  white-space: nowrap; /* evita salto de línea */
}
/* Asegura que el color se mantenga siempre blanco */
.subrayado-40:link,
.subrayado-40:visited,
.subrayado-40:hover,
.subrayado-40:active {
  color: white;
}

.subrayado-10::after{
  content: "";
  position: absolute;
  left: 0;                 /* empieza al inicio del texto */
  bottom: -0.69em;         /* separación respecto al texto */
  width: 40%;              /* solo la mitad del texto */
  height: 4px;             /* grosor de la línea */
  background: currentColor;/* usa el color del texto */
  pointer-events: none;
}
.subrayado-10:hover::after{
  width: 100%;             /* efecto opcional al pasar el ratón */
  transition: width .2s ease;
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-0d4e9b2 *//* =========================
   CONFIG & BASE EF-CARD
   ========================= */
.ef-card{
  position: relative;
  overflow: visible; /* por si el subrayado sale fuera */

  /* Movimiento del bloque .div-texto (anclado abajo + translateY) */
  /* Ahora 0px = pegado al borde inferior. Valores negativos = subir. */
  --div-texto-rest: 0px;        /* estado normal: pegado abajo */
  --div-texto-hover: -118px;    /* en hover: sube esta cantidad (ajusta a tu diseño) */
  --move-duration: 300ms;
  --move-ease: ease;
  --move-delay: 0ms;

  /* Subrayado inferior */
  --ef-underline-color: #D25F0E; /* color solicitado */
  --ef-underline-height: 3px;
  --ef-underline-offset: 10px;   /* distancia por debajo de la tarjeta */
  --underline-duration: 250ms;
  --underline-ease: ease;
  --underline-delay: 0ms;
}

/* =========================
   BLOQUE DE TEXTO ANCLADO ABAJO (sin reflow)
   ========================= */
.ef-card .div-texto{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;                                  /* ← pegado al borde inferior */
  transform: translateY(var(--div-texto-rest));
  transition: transform var(--move-duration) var(--move-ease) var(--move-delay);
  will-change: transform;
}
.ef-card:hover .div-texto,
.ef-card.is-open .div-texto{
  transform: translateY(var(--div-texto-hover)); /* sube en hover */
}

/* =========================
   TEXTO OCULTO SIN CAMBIAR ALTURA
   (el contenedor siempre ocupa espacio)
   ========================= */
.ef-card .ef-card__reveal{
  visibility: hidden;
}
.ef-card:hover .ef-card__reveal,
.ef-card.is-open .ef-card__reveal{
  visibility: visible;
}

/* =========================
   SUBRAYADO HORIZONTAL (solo horizontal, sin “bajadas”)
   ========================= */
.ef-card::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: calc(var(--ef-underline-offset) * -1); /* anclado bajo la tarjeta */
  height: var(--ef-underline-height);
  width: 100%;
  background: var(--ef-underline-color);
  transform: scaleX(0);
  transform-origin: left; /* aparece/colapsa siempre hacia la izquierda */
  transition: transform var(--underline-duration) var(--underline-ease) var(--underline-delay);
  will-change: transform;
  pointer-events: none;
  z-index: 1;
}
.ef-card:hover::after,
.ef-card.is-open::after{
  transform: scaleX(1);
}

/* =========================
   ACCESIBILIDAD
   ========================= */
@media (prefers-reduced-motion: reduce){
  .ef-card .div-texto{ transition: none; }
  .ef-card::after{
    transition: none;
    transform: scaleX(1);
  }
}/* End custom CSS */