/* =============================================
   HERO CON SLIDESHOW DE IMÁGENES
   ============================================= */
.hero-index {
   position: relative;
   height: 100vh;
   min-height: 700px;
   display: flex;
   align-items: center;
   overflow: hidden;
   padding-top: 70px;
}

.hero-slides {
   position: absolute;
   inset: 0;
   z-index: 0;
}

.hero-slide {
   position: absolute;
   inset: 0;
   opacity: 0;
   transition: opacity 1.4s cubic-bezier(.4, 0, .2, 1);
}

.hero-slide.active {
   opacity: 1;
}

.hero-slide img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   transform: scale(1.07);
   transition: transform 8s ease;
}

.hero-slide.active img {
   transform: scale(1);
}

.hero-overlay {
   position: absolute;
   inset: 0;
   background: linear-gradient(140deg, rgba(0, 22, 14, .92) 0%, rgba(0, 66, 49, .68) 50%, rgba(84, 147, 139, .28) 100%);
   z-index: 1;
}

/* Indicadores verticales */
.hero-indicators {
   position: absolute;
   bottom: 100px;
   right: 48px;
   z-index: 10;
   display: flex;
   flex-direction: column;
   gap: 10px;
}

.hero-dot {
   width: 3px;
   height: 28px;
   background: rgba(255, 255, 255, .22);
   border-radius: 2px;
   cursor: pointer;
   transition: all .4s ease;
   position: relative;
   overflow: hidden;
}

.hero-dot::after {
   content: '';
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   height: 0;
   background: var(--amber);
   border-radius: 2px;
}

.hero-dot.active {
   height: 44px;
   background: rgba(255, 255, 255, .35);
}

.hero-dot.active::after {
   animation: dotFill 6s linear forwards;
}

@keyframes dotFill {
   from {
      height: 0;
   }

   to {
      height: 100%;
   }
}

/* Caption de slide */
.slide-caption {
   position: absolute;
   bottom: 100px;
   right: 30px;
   z-index: 10;
   max-width: 350px;
}

.slide-cap-inner {
   display: flex;
   align-items: center;
   gap: 12px;
   padding: 12px 18px;
   background: rgba(0, 66, 49, .38);
   backdrop-filter: blur(14px);
   border: 1px solid rgba(84, 147, 139, .25);
   border-radius: 6px;
}

.cap-icon {
   width: 32px;
   height: 32px;
   background: var(--green-mid);
   border-radius: 50%;
   display: flex;
   align-items: center;
   justify-content: center;
   flex-shrink: 0;
   color: #fff;
}

.cap-lbl {
   font-size: .68rem;
   font-weight: 700;
   letter-spacing: .12em;
   text-transform: uppercase;
   color: var(--green-light);
   display: block;
   margin-bottom: 2px;
}

.cap-txt {
   font-size: .82rem;
   color: rgba(255, 255, 255, .82);
   line-height: 1.4;
}

.hero-body {
   position: relative;
   z-index: 5;
   width: 100%;
}

/* =============================================
   MARQUEE DE FRASES
   ============================================= */
.section-marquee {
   background: var(--green-mid);
   padding: 26px 0;
   overflow: hidden;
}

.marquee-track {
   display: flex;
   animation: marqueeMove 24s linear infinite;
   white-space: nowrap;
}

.marquee-item {
   display: inline-flex;
   align-items: center;
   gap: 22px;
   padding: 0 44px;
   font-family: var(--font-display);
   font-size: 1rem;
   font-weight: 700;
   color: rgba(255, 255, 255, .9);
   letter-spacing: .02em;
}

.msep {
   color: rgba(255, 255, 255, .38);
   font-size: 1.1rem;
}

@keyframes marqueeMove {
   from {
      transform: translateX(0);
   }

   to {
      transform: translateX(-50%);
   }
}

/* =============================================
   SERVICIOS CON TARJETAS + IMAGEN
   ============================================= */
.img-cards-grid {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 22px;
   margin-bottom: 44px;
}

.img-card {
   background: var(--white);
   border-radius: 12px;
   overflow: hidden;
   border: 1px solid var(--border);
   transition: var(--transition);
   cursor: pointer;
}

body.dark .img-card {
   background: #13261f;
}

.img-card:hover {
   transform: translateY(-8px);
   box-shadow: var(--shadow-lg);
   border-color: transparent;
}

.img-card-media {
   height: 200px;
   overflow: hidden;
   position: relative;
}

.img-card-media img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   transition: transform .65s ease;
   display: block;
}

.img-card:hover .img-card-media img {
   transform: scale(1.08);
}

.img-card-media-ov {
   position: absolute;
   inset: 0;
   background: linear-gradient(to top, rgba(0, 36, 22, .65) 0%, transparent 60%);
}

.img-card-tag {
   position: absolute;
   top: 14px;
   left: 14px;
   padding: 4px 11px;
   background: rgba(0, 66, 49, .72);
   backdrop-filter: blur(8px);
   border-radius: 100px;
   font-size: .67rem;
   font-weight: 700;
   letter-spacing: .11em;
   text-transform: uppercase;
   color: var(--green-light);
   border: 1px solid rgba(84, 147, 139, .3);
}

.img-card-body {
   padding: 26px 22px 22px;
}

.img-card-body h3 {
   font-size: 1.04rem;
   margin-bottom: 9px;
}

.img-card-body p {
   font-size: .84rem;
   line-height: 1.62;
   margin-bottom: 16px;
}

.img-card-arrow {
   font-size: .78rem;
   font-weight: 700;
   color: var(--green-mid);
   display: flex;
   align-items: center;
   gap: 5px;
   font-family: var(--font-display);
   letter-spacing: .04em;
   transition: gap .3s;
}

.img-card:hover .img-card-arrow {
   gap: 9px;
   color: var(--green-deep);
}

body.dark .img-card:hover .img-card-arrow {
   color: var(--green-light);
}

/* =============================================
   IMPACTO SPLIT (imagen + contenido)
   ============================================= */
.section-impact {
   background: var(--white);
   padding: 0;
   overflow: hidden;
}

body.dark .section-impact {
   background: #0a1510;
}

.impact-grid {
   display: grid;
   grid-template-columns: 1fr 1fr;
   min-height: 580px;
}

.impact-img-col {
   position: relative;
   overflow: hidden;
}

.impact-img-col img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   display: block;
   transition: transform 8s ease;
}

.impact-img-col:hover img {
   transform: scale(1.04);
}

.impact-img-ov {
   position: absolute;
   inset: 0;
   background: linear-gradient(140deg, rgba(0, 66, 49, .52) 0%, transparent 60%);
}

.impact-img-badge {
   position: absolute;
   bottom: 32px;
   left: 32px;
   padding: 14px 22px;
   background: rgba(0, 42, 28, .8, );
   backdrop-filter: blur(12px);
   border: 1px solid rgba(84, 147, 139, .3);
   border-radius: 6px;
}

.impact-img-badge strong {
   font-family: var(--font-display);
   font-size: 1.6rem;
   font-weight: 800;
   color: var(--green-light);
   display: block;
   line-height: 1;
}

.impact-img-badge span {
   font-size: .72rem;
   color: rgba(255, 255, 255, .55);
   letter-spacing: .06em;
}

.impact-text-col {
   padding: 80px 70px;
   display: flex;
   flex-direction: column;
   justify-content: center;
}

.impact-text-col .label {
   display: block;
   margin-bottom: 14px;
}

.impact-text-col h2 {
   font-size: clamp(1.9rem, 3vw, 2.8rem);
   margin-bottom: 16px;
}

.impact-text-col p {
   font-size: .93rem;
   margin-bottom: 14px;
}

.metrics-grid {
   display: grid;
   grid-template-columns: 1fr 1fr;
   gap: 18px;
   margin: 28px 0;
}

.metric {
   padding: 20px;
   background: var(--surface);
   border-radius: 8px;
   border: 1px solid #e8a838;
}

body.dark .metric {
   background: #152d25;
}

.metric-v {
   font-family: var(--font-display);
   font-size: 1.9rem;
   font-weight: 800;
   color: var(--green-deep);
   line-height: 1;
   display: block;
}

body.dark .metric-v {
   color: var(--green-light);
}

.metric-l {
   font-size: .76rem;
   color: var(--text-muted);
   margin-top: 4px;
}

/* =============================================
   VIDEO FEATURE SECTION
   ============================================= */
.section-video {
   background: var(--green-ultra-dark);
   padding: 100px 0;
   position: relative;
   overflow: hidden;
}

.section-video::before {
   content: '';
   position: absolute;
   top: -30%;
   right: -10%;
   width: 480px;
   height: 480px;
   background: radial-gradient(circle, rgba(84, 147, 139, .1) 0%, transparent 70%);
   pointer-events: none;
}

.video-grid {
   display: grid;
   grid-template-columns: 1fr 1fr;
   gap: 80px;
   align-items: center;
}

.video-txt .label {
   display: block;
   margin-bottom: 14px;
   color: rgba(255, 255, 255, .42);
}

.video-txt h2 {
   color: #fff;
   font-size: clamp(1.9rem, 3vw, 2.9rem);
   margin-bottom: 16px;
}

.video-txt p {
   color: rgba(255, 255, 255, .66);
   font-size: .93rem;
   margin-bottom: 14px;
}

.video-pts {
   display: flex;
   flex-direction: column;
   gap: 12px;
   margin: 24px 0 32px;
}

.vpt {
   display: flex;
   align-items: center;
   gap: 12px;
   color: rgba(255, 255, 255, .78);
   font-size: .88rem;
}

.vpt-dot {
   width: 8px;
   height: 8px;
   background: var(--green-light);
   border-radius: 50%;
   flex-shrink: 0;
}

.video-wrap {
   position: relative;
   border-radius: 12px;
   overflow: hidden;
   aspect-ratio: 16/9;
   background: #000;
   box-shadow: 0 28px 64px rgba(0, 0, 0, .55);
}

.video-wrap iframe {
   width: 100%;
   height: 100%;
   border: none;
   display: block;
}

.video-caption {
   font-size: .72rem;
   color: rgba(255, 255, 255, .28);
   text-align: center;
   margin-top: 10px;
   letter-spacing: .04em;
}

/* =============================================
   GALERÍA SHOWCASE
   ============================================= */
.section-gallery {
   background: var(--surface);
   padding: 100px 0;
}

.gallery-mosaic {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   grid-template-rows: 270px 270px;
   gap: 14px;
   margin-top: 56px;
}

.gallery-item {
   border-radius: 10px;
   overflow: hidden;
   position: relative;
   cursor: pointer;
}

.gallery-item:first-child {
   grid-row: span 2;
}

.gallery-item img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   display: block;
   transition: transform .7s cubic-bezier(.22, 1, .36, 1);
}

.gallery-item:hover img {
   transform: scale(1.06);
}

.gallery-label {
   position: absolute;
   bottom: 0;
   left: 0;
   right: 0;
   padding: 30px 22px 18px;
   background: linear-gradient(to top, rgba(0, 26, 16, .88) 0%, transparent 100%);
   transform: translateY(8px);
   opacity: 0;
   transition: all .4s ease;
}

.gallery-item:hover .gallery-label {
   transform: translateY(0);
   opacity: 1;
}

.gallery-label strong {
   font-family: var(--font-display);
   font-size: .92rem;
   font-weight: 700;
   color: #fff;
   display: block;
   margin-bottom: 3px;
}

.gallery-label span {
   font-size: .75rem;
   color: rgba(255, 255, 255, .62);
}

/* =============================================
   CLIENTES CON MOSAICO DE FOTOS
   ============================================= */
.section-clients {
   background: var(--green-deep);
   padding: 100px 0;
}

.clients-layout {
   display: grid;
   grid-template-columns: 1fr 2fr;
   gap: 80px;
   align-items: center;
}

.clients-txt h2 {
   color: #fff;
   font-size: clamp(1.8rem, 3vw, 2.8rem);
   margin-bottom: 16px;
}

.clients-txt p {
   color: rgba(255, 255, 255, .66);
   margin-bottom: 28px;
   font-size: .93rem;
}

.clients-pts {
   display: flex;
   flex-direction: column;
   gap: 12px;
   margin-bottom: 32px;
}

.client-mosaic {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   grid-template-rows: 185px 185px;
   gap: 12px;
}

.mosaic-item {
   border-radius: 8px;
   overflow: hidden;
   position: relative;
}

.mosaic-item:first-child {
   grid-row: span 2;
}

.mosaic-item img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   filter: grayscale(25%) brightness(.82);
   transition: all .5s ease;
}

.mosaic-item:hover img {
   filter: grayscale(0%) brightness(1);
   transform: scale(1.04);
}

.mosaic-item::after {
   content: '';
   position: absolute;
   inset: 0;
   background: rgba(0, 66, 49, .28);
   transition: opacity .4s;
}

.mosaic-item:hover::after {
   opacity: 0;
}

/* Responsive */
@media(max-width:1024px) {
   .video-grid {
      grid-template-columns: 1fr;
      gap: 48px;
   }

   .impact-grid {
      grid-template-columns: 1fr;
   }

   .impact-img-col {
      min-height: 300px;
   }

   .impact-text-col {
      padding: 60px 40px;
   }

   .img-cards-grid {
      grid-template-columns: 1fr 1fr;
   }

   .gallery-mosaic {
      grid-template-columns: 1fr 1fr;
      grid-template-rows: 220px 220px 220px;
   }

   .gallery-item:first-child {
      grid-row: span 1;
   }

   .clients-layout {
      grid-template-columns: 1fr;
   }

   .hero-indicators {
      right: 20px;
   }
}

@media(max-width:640px) {
   .img-cards-grid {
      grid-template-columns: 1fr;
   }

   .gallery-mosaic {
      grid-template-columns: 1fr;
      grid-template-rows: auto;
   }

   .gallery-item {
      height: 220px;
   }

   .metrics-grid {
      grid-template-columns: 1fr;
   }

   .impact-text-col {
      padding: 48px 24px;
   }

   .client-mosaic {
      grid-template-columns: 1fr 1fr;
      grid-template-rows: 160px 160px;
   }

   .mosaic-item:first-child {
      grid-row: span 1;
   }

   .slide-caption {
      display: none;
   }
}