.elementor-116 .elementor-element.elementor-element-64dc4c7{--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:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-116 .elementor-element.elementor-element-1627da2{--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;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );}.elementor-116 .elementor-element.elementor-element-a0d5b5a{text-align:center;}.elementor-116 .elementor-element.elementor-element-a0d5b5a img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-size:var( --e-global-typography-primary-font-size );font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-116 .elementor-element.elementor-element-eb4dceb{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-eb4dceb .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-9a457da{--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;}.elementor-116 .elementor-element.elementor-element-a32013a{text-align:center;}.elementor-116 .elementor-element.elementor-element-a32013a img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-54b82cd{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-54b82cd .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-999aeed{--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;}.elementor-116 .elementor-element.elementor-element-77a7217{text-align:center;}.elementor-116 .elementor-element.elementor-element-77a7217 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-34b9d9b{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-34b9d9b .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-5c14963{--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;}.elementor-116 .elementor-element.elementor-element-8b3eb5c{text-align:center;}.elementor-116 .elementor-element.elementor-element-8b3eb5c img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-cfce0c3{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-cfce0c3 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-267b1bc{--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:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-116 .elementor-element.elementor-element-f626397{--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;}.elementor-116 .elementor-element.elementor-element-c36aee2{text-align:center;}.elementor-116 .elementor-element.elementor-element-c36aee2 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-e689a36{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-e689a36 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:16px;font-weight:400;text-transform:uppercase;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-1c1dd93{--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;}.elementor-116 .elementor-element.elementor-element-a65decb{text-align:center;}.elementor-116 .elementor-element.elementor-element-a65decb img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-2257193{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-2257193 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;text-transform:uppercase;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-52ad2fa{--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;}.elementor-116 .elementor-element.elementor-element-a1c9ffa{text-align:center;}.elementor-116 .elementor-element.elementor-element-a1c9ffa img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-ddc21a5{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-ddc21a5 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;text-transform:uppercase;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-c68ce97{--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;}.elementor-116 .elementor-element.elementor-element-b8c00d4{text-align:center;}.elementor-116 .elementor-element.elementor-element-b8c00d4 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-de44154{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-de44154 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-ab22a42{--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:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-116 .elementor-element.elementor-element-c4e67ad{--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;}.elementor-116 .elementor-element.elementor-element-e509391{text-align:center;}.elementor-116 .elementor-element.elementor-element-e509391 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-2da2421{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-2da2421 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-aa9d02c{--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;}.elementor-116 .elementor-element.elementor-element-673fb5c{text-align:center;}.elementor-116 .elementor-element.elementor-element-673fb5c img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-71a1ff7{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-71a1ff7 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-73c05cc{--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;}.elementor-116 .elementor-element.elementor-element-987ffd3{text-align:center;}.elementor-116 .elementor-element.elementor-element-987ffd3 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-9043a8f{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-9043a8f .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-e922f9c{--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;}.elementor-116 .elementor-element.elementor-element-b800098{text-align:center;}.elementor-116 .elementor-element.elementor-element-b800098 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-47a7aa2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-47a7aa2 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-dd9c7f7{--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:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-116 .elementor-element.elementor-element-d68f887{--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;}.elementor-116 .elementor-element.elementor-element-855e9d1{text-align:center;}.elementor-116 .elementor-element.elementor-element-855e9d1 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-9941b82{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-9941b82 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-9ef49a5{--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;}.elementor-116 .elementor-element.elementor-element-40e72a8{text-align:center;}.elementor-116 .elementor-element.elementor-element-40e72a8 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-b3c0d6d{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-b3c0d6d .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-21e7e7a{--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;}.elementor-116 .elementor-element.elementor-element-cfaaf6b{text-align:center;}.elementor-116 .elementor-element.elementor-element-cfaaf6b img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-b0f5d6b{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-b0f5d6b .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:17px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-5958ba4{--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;}.elementor-116 .elementor-element.elementor-element-de8e166{text-align:center;}.elementor-116 .elementor-element.elementor-element-de8e166 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-06c3790{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-06c3790 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-045d7a4{--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:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-116 .elementor-element.elementor-element-5a78cd2{--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;}.elementor-116 .elementor-element.elementor-element-ce1d7b2{text-align:center;}.elementor-116 .elementor-element.elementor-element-ce1d7b2 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-196be11{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-196be11 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:17px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-c781122{--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;}.elementor-116 .elementor-element.elementor-element-71635f5{text-align:center;}.elementor-116 .elementor-element.elementor-element-71635f5 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-7c40199{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-7c40199 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-116 .elementor-element.elementor-element-79a19ee{--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;}.elementor-116 .elementor-element.elementor-element-eae103d{text-align:center;}.elementor-116 .elementor-element.elementor-element-eae103d img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-116 .elementor-element.elementor-element-321b474{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-116 .elementor-element.elementor-element-321b474 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}:root{--page-title-display:none;}@media(min-width:768px){.elementor-116 .elementor-element.elementor-element-1627da2{--width:25%;}.elementor-116 .elementor-element.elementor-element-9a457da{--width:25%;}.elementor-116 .elementor-element.elementor-element-999aeed{--width:25%;}.elementor-116 .elementor-element.elementor-element-5c14963{--width:25%;}.elementor-116 .elementor-element.elementor-element-f626397{--width:25%;}.elementor-116 .elementor-element.elementor-element-1c1dd93{--width:25%;}.elementor-116 .elementor-element.elementor-element-52ad2fa{--width:25%;}.elementor-116 .elementor-element.elementor-element-c68ce97{--width:25%;}.elementor-116 .elementor-element.elementor-element-c4e67ad{--width:25%;}.elementor-116 .elementor-element.elementor-element-aa9d02c{--width:25%;}.elementor-116 .elementor-element.elementor-element-73c05cc{--width:25%;}.elementor-116 .elementor-element.elementor-element-e922f9c{--width:25%;}.elementor-116 .elementor-element.elementor-element-d68f887{--width:25%;}.elementor-116 .elementor-element.elementor-element-9ef49a5{--width:25%;}.elementor-116 .elementor-element.elementor-element-21e7e7a{--width:25%;}.elementor-116 .elementor-element.elementor-element-5958ba4{--width:25%;}.elementor-116 .elementor-element.elementor-element-5a78cd2{--width:25%;}.elementor-116 .elementor-element.elementor-element-c781122{--width:25%;}.elementor-116 .elementor-element.elementor-element-79a19ee{--width:25%;}}@media(max-width:1024px){.elementor-widget-image .widget-image-caption{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-heading .elementor-heading-title{font-size:var( --e-global-typography-primary-font-size );}}@media(max-width:767px){.elementor-widget-image .widget-image-caption{font-size:var( --e-global-typography-text-font-size );}.elementor-widget-heading .elementor-heading-title{font-size:var( --e-global-typography-primary-font-size );}}/* Start custom CSS for image, class: .elementor-element-a0d5b5a */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}
@media (max-width: 768px) {
.img-proyecto {
width:400px;
height:250px;
}}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-eb4dceb */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-a32013a */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-54b82cd */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-77a7217 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-34b9d9b */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-8b3eb5c */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-cfce0c3 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-c36aee2 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-e689a36 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-a65decb */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-2257193 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-a1c9ffa */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-ddc21a5 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-b8c00d4 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-de44154 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-e509391 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-2da2421 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-673fb5c */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-71a1ff7 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-987ffd3 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-9043a8f */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-b800098 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-47a7aa2 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-855e9d1 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-9941b82 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-40e72a8 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-b3c0d6d */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-cfaaf6b */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-b0f5d6b */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-de8e166 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-06c3790 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-ce1d7b2 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-196be11 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-71635f5 */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-7c40199 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-eae103d */.img-proyecto {
  position: relative;
  overflow: hidden;
  height: 250px; /* ajusta según tu diseño */
}

/* enlace ocupa toda la imagen */
.img-proyecto a {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 2; /* encima de la capa blanca */
  text-decoration: none;
}

/* imagen dentro del enlace */
.img-proyecto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}

/* zoom al pasar el ratón */
.img-proyecto a:hover img {
  transform: scale(1.05);
}

/* capa blanca translúcida usando ::before */
.img-proyecto a::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0);
  transition: background 0.5s ease;
  z-index: 1; /* detrás de la imagen y texto */
}

/* capa blanca visible al hover */
.img-proyecto a:hover::before {
  background: rgba(255,255,255,0.4);
}/* End custom CSS */
/* Start custom CSS for heading, class: .elementor-element-321b474 */.texto-proyecto {
  position: absolute;
  bottom: 30px;
  left: 10px;
  writing-mode: vertical-lr;
  text-orientation: mixed;
  color: #000;
  font-size: 16px;
  font-weight: 500;
  opacity: 0;              /* empieza invisible */
  transform: translateY(20px); /* desplazado al inicio */
  transition: all 0.5s ease;
  z-index: 3;              /* encima de todo */
  max-height: 90%;
  overflow: hidden;
  padding-left: 5px;
}

/* texto visible al hover */
.img-proyecto:hover .texto-proyecto {
  opacity: 1;
  transform: translateY(0);
}/* End custom CSS */