.elementor-63 .elementor-element.elementor-element-e21fe7e{--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-63 .elementor-element.elementor-element-0535947{--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-63 .elementor-element.elementor-element-4a4b8ff{--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-63 .elementor-element.elementor-element-8ffc940{text-align:center;}.elementor-63 .elementor-element.elementor-element-8ffc940 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-63 .elementor-element.elementor-element-da79cc2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-da79cc2 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-8a86662{--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-63 .elementor-element.elementor-element-76b2778{text-align:center;}.elementor-63 .elementor-element.elementor-element-76b2778 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-44ae917{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-44ae917 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-ec40fdb{--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-63 .elementor-element.elementor-element-45b0fbd{text-align:center;}.elementor-63 .elementor-element.elementor-element-45b0fbd img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-3e44af2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-3e44af2 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-7a8a420{--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-63 .elementor-element.elementor-element-1589c4a{text-align:center;}.elementor-63 .elementor-element.elementor-element-1589c4a img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-5472e07{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-5472e07 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-3d669fe{--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-63 .elementor-element.elementor-element-d7bb333{--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-63 .elementor-element.elementor-element-4b40157{text-align:center;}.elementor-63 .elementor-element.elementor-element-4b40157 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-f28218d{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-f28218d .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:16px;font-weight:400;text-transform:uppercase;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-94d40da{--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-63 .elementor-element.elementor-element-f4cb3e6{text-align:center;}.elementor-63 .elementor-element.elementor-element-f4cb3e6 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-521de26{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-521de26 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;text-transform:uppercase;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-cf4554d{--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-63 .elementor-element.elementor-element-6c7fbd4{text-align:center;}.elementor-63 .elementor-element.elementor-element-6c7fbd4 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-16194b6{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-16194b6 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;text-transform:uppercase;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-9b30cdc{--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-63 .elementor-element.elementor-element-d2c5aab{text-align:center;}.elementor-63 .elementor-element.elementor-element-d2c5aab img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-6cb3364{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-6cb3364 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-6e3125b{--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-63 .elementor-element.elementor-element-d7a3900{--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-63 .elementor-element.elementor-element-a61c3c3{text-align:center;}.elementor-63 .elementor-element.elementor-element-a61c3c3 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-763b580{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-763b580 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-5604310{--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-63 .elementor-element.elementor-element-66108c8{text-align:center;}.elementor-63 .elementor-element.elementor-element-66108c8 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-1362184{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-1362184 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-95eb60a{--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-63 .elementor-element.elementor-element-82bae81{text-align:center;}.elementor-63 .elementor-element.elementor-element-82bae81 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-0093ea2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-0093ea2 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-82c0900{--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-63 .elementor-element.elementor-element-e3c45ac{text-align:center;}.elementor-63 .elementor-element.elementor-element-e3c45ac img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-9cfcddf{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-9cfcddf .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-f907aca{--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-63 .elementor-element.elementor-element-a3b746f{--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-63 .elementor-element.elementor-element-46f8cc3{text-align:center;}.elementor-63 .elementor-element.elementor-element-46f8cc3 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-ce7a125{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-ce7a125 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-b90b7e6{--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-63 .elementor-element.elementor-element-1cbc5ed{text-align:center;}.elementor-63 .elementor-element.elementor-element-1cbc5ed img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-faa64eb{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-faa64eb .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-35f989a{--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-63 .elementor-element.elementor-element-7419697{text-align:center;}.elementor-63 .elementor-element.elementor-element-7419697 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-d50e812{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-d50e812 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:17px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-96ae586{--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-63 .elementor-element.elementor-element-3e5cfef{text-align:center;}.elementor-63 .elementor-element.elementor-element-3e5cfef img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-19d1336{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-19d1336 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-5df4d45{--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-63 .elementor-element.elementor-element-41077d1{--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-63 .elementor-element.elementor-element-b3ddd95{text-align:center;}.elementor-63 .elementor-element.elementor-element-b3ddd95 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-b9e4e49{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-b9e4e49 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:17px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-94e49d3{--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-63 .elementor-element.elementor-element-8b2be34{text-align:center;}.elementor-63 .elementor-element.elementor-element-8b2be34 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-a07b097{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-a07b097 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-4a6346c{--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-63 .elementor-element.elementor-element-7bdcbb2{text-align:center;}.elementor-63 .elementor-element.elementor-element-7bdcbb2 img{width:100%;max-width:100%;height:200px;object-fit:cover;object-position:center center;}.elementor-63 .elementor-element.elementor-element-7616028{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 10px) 0px;}.elementor-63 .elementor-element.elementor-element-7616028 .elementor-heading-title{font-family:"Montserrat", Sans-serif;font-size:19px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-63 .elementor-element.elementor-element-02e858e{--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-63 .elementor-element.elementor-element-d55db9b{--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-63 .elementor-element.elementor-element-e78aea6{--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-63 .elementor-element.elementor-element-fb77c39{--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;}:root{--page-title-display:none;}@media(min-width:768px){.elementor-63 .elementor-element.elementor-element-4a4b8ff{--width:25%;}.elementor-63 .elementor-element.elementor-element-8a86662{--width:25%;}.elementor-63 .elementor-element.elementor-element-ec40fdb{--width:25%;}.elementor-63 .elementor-element.elementor-element-7a8a420{--width:25%;}.elementor-63 .elementor-element.elementor-element-d7bb333{--width:25%;}.elementor-63 .elementor-element.elementor-element-94d40da{--width:25%;}.elementor-63 .elementor-element.elementor-element-cf4554d{--width:25%;}.elementor-63 .elementor-element.elementor-element-9b30cdc{--width:25%;}.elementor-63 .elementor-element.elementor-element-d7a3900{--width:25%;}.elementor-63 .elementor-element.elementor-element-5604310{--width:25%;}.elementor-63 .elementor-element.elementor-element-95eb60a{--width:25%;}.elementor-63 .elementor-element.elementor-element-82c0900{--width:25%;}.elementor-63 .elementor-element.elementor-element-a3b746f{--width:25%;}.elementor-63 .elementor-element.elementor-element-b90b7e6{--width:25%;}.elementor-63 .elementor-element.elementor-element-35f989a{--width:25%;}.elementor-63 .elementor-element.elementor-element-96ae586{--width:25%;}.elementor-63 .elementor-element.elementor-element-41077d1{--width:25%;}.elementor-63 .elementor-element.elementor-element-94e49d3{--width:25%;}.elementor-63 .elementor-element.elementor-element-4a6346c{--width:25%;}.elementor-63 .elementor-element.elementor-element-d55db9b{--width:25%;}.elementor-63 .elementor-element.elementor-element-e78aea6{--width:25%;}.elementor-63 .elementor-element.elementor-element-fb77c39{--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-8ffc940 */.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-da79cc2 */.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-76b2778 */.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-44ae917 */.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-45b0fbd */.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-3e44af2 */.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-1589c4a */.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-5472e07 */.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-4b40157 */.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-f28218d */.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-f4cb3e6 */.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-521de26 */.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-6c7fbd4 */.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-16194b6 */.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-d2c5aab */.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-6cb3364 */.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-a61c3c3 */.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-763b580 */.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-66108c8 */.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-1362184 */.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-82bae81 */.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-0093ea2 */.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-e3c45ac */.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-9cfcddf */.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-46f8cc3 */.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-ce7a125 */.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-1cbc5ed */.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-faa64eb */.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-7419697 */.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-d50e812 */.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-3e5cfef */.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-19d1336 */.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-b3ddd95 */.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-b9e4e49 */.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-8b2be34 */.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-a07b097 */.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-7bdcbb2 */.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-7616028 */.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 */