/* Secciones del CMS (se cargan en las páginas administradas desde el panel) */
.cms-angosto { max-width: 820px; }
.cms-rico { overflow-wrap: anywhere; }
.cms-rico > :last-child { margin-bottom: 0; }
.cms-rico h2 { font-size: var(--texto-xl); margin-top: var(--esp-6); }
.cms-rico > h2:first-child { margin-top: 0; }
.cms-rico h3 { font-size: var(--texto-lg); margin-top: var(--esp-5); }
.cms-rico h4 { margin-top: var(--esp-4); }
.cms-rico blockquote { margin: var(--esp-4) 0; padding: var(--esp-2) var(--esp-4); border-left: 4px solid var(--color-primario); background: var(--color-fondo-claro); border-radius: 0 var(--radio-sm) var(--radio-sm) 0; }
.cms-rico blockquote > :last-child { margin-bottom: 0; }
.cms-rico li { margin-bottom: var(--esp-1); }

.hero__etiqueta { color: #7fe07f; }
.hero__inner:not(:has(.hero__visual)) { grid-template-columns: 1fr; }

@media (min-width: 900px) { .cms-imgtexto--izq > img { order: -1; } }
.panel__imagen { border-radius: var(--radio-sm); margin-bottom: var(--esp-3); width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.panel .boton { margin-top: var(--esp-3); }
.panel h2 { font-size: var(--texto-xl); }
.contacto__titulo { font-size: 1.5rem; }
.contacto--sola { grid-template-columns: 1fr !important; max-width: 720px; }
.linea__contador { font-size: .8125rem; }

.cta--oscuro { background: var(--color-oscuro); }
.cta--claro { background: var(--color-fondo-verde); color: var(--color-texto); }
.cta--claro h2 { color: var(--color-texto); }
.cta--claro p { color: var(--color-texto-suave); }
.cta__img { border-radius: var(--radio); max-height: 180px; width: auto; }
@media (min-width: 768px) { .cta--con-imagen { grid-template-columns: auto 1fr auto; } }
.cta > .boton { justify-self: start; }

.cms-faq { display: grid; gap: var(--esp-2); }
.cms-faq__item { background: #fff; border: 1px solid var(--color-borde); border-radius: var(--radio); }
.cms-faq__pregunta { cursor: pointer; padding: var(--esp-3) var(--esp-4); font-weight: 500; list-style-position: inside; }
.cms-faq__item[open] > .cms-faq__pregunta { color: var(--color-primario-oscuro); border-bottom: 1px solid var(--color-borde); }
.cms-faq__respuesta { padding: var(--esp-3) var(--esp-4); color: var(--color-texto-suave); }

.cms-galeria { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--esp-3); grid-template-columns: repeat(2, 1fr); }
@media (min-width: 768px) { .cms-galeria--3 { grid-template-columns: repeat(3, 1fr); } .cms-galeria--4 { grid-template-columns: repeat(4, 1fr); } }
.cms-galeria__btn { display: block; width: 100%; padding: 0; border: 0; background: var(--color-fondo-claro); border-radius: var(--radio); overflow: hidden; cursor: zoom-in; }
.cms-galeria__btn img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform var(--transicion); }
.cms-galeria__btn:hover img { transform: scale(1.03); }
.cms-visor { border: 0; padding: 0; background: transparent; max-width: 94vw; max-height: 94vh; overflow: visible; }
.cms-visor::backdrop { background: rgba(20, 24, 29, 0.85); }
.cms-visor__img { max-width: 94vw; max-height: 88vh; border-radius: var(--radio-sm); background: #fff; }
.cms-visor__cerrar { position: absolute; top: -44px; right: 0; width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 50%; background: #fff; color: var(--color-texto); }
.cms-visor__cerrar .icono { width: 20px; height: 20px; }

.cms-testimonios { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--esp-5); }
@media (min-width: 768px) { .cms-testimonios { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .cms-testimonios { grid-template-columns: repeat(3, 1fr); } }
.cms-testimonio { margin: 0; height: 100%; background: #fff; border: 1px solid var(--color-borde); border-radius: var(--radio); padding: var(--esp-5); display: flex; flex-direction: column; gap: var(--esp-4); }
.cms-testimonio__texto { margin: 0; flex: 1; font-style: italic; }
.cms-testimonio__texto p { margin: 0; }
.cms-testimonio__pie { display: flex; align-items: center; gap: var(--esp-3); font-size: var(--texto-sm); }
.cms-testimonio__pie span { display: block; font-size: var(--texto-xs); }
.cms-testimonio__foto { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }

.cms-separador--s { height: var(--esp-4); }
.cms-separador--m { height: var(--esp-6); }
.cms-separador--l { height: var(--esp-8); }
.cms-separador:has(hr) { display: flex; align-items: center; }
.cms-separador .contenedor { width: 100%; }
.cms-separador__linea { border: 0; border-top: 1px solid var(--color-borde); margin: 0; }
.cms-cargando { padding-block: var(--seccion-y); }

/* ---------- Pantallas anchas ---------- */
@media (min-width: 1280px) {
  .cms-galeria { grid-template-columns: repeat(3, 1fr); }
  .cms-galeria--3 { grid-template-columns: repeat(4, 1fr); }
  .cms-galeria--4 { grid-template-columns: repeat(5, 1fr); }
  .cms-testimonios { gap: var(--esp-6); }
}
@media (min-width: 1600px) {
  .cms-galeria--2 { grid-template-columns: repeat(3, 1fr); }
  .cms-galeria--4 { grid-template-columns: repeat(6, 1fr); }
  .cms-testimonios { grid-template-columns: repeat(4, 1fr); }
}
.cms-faq { max-width: 960px; }

/* ---------- Carrusel (sección "carrusel"): ancho completo, altura reservada para evitar CLS ---------- */
.carrusel { position: relative; width: 100%; background: var(--color-oscuro); overflow: hidden; --carrusel-alto: clamp(380px, 45vw, 620px); }
.carrusel--alto { --carrusel-alto: clamp(460px, 60vw, 760px); }
.carrusel:focus-visible { outline: 3px solid #7fe07f; outline-offset: -6px; }
.carrusel__pista { position: relative; height: var(--carrusel-alto); touch-action: pan-y; }
.carrusel__slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .6s ease, visibility 0s linear .6s; }
.carrusel__slide--activa { opacity: 1; visibility: visible; transition: opacity .6s ease, visibility 0s; z-index: 1; }
.carrusel__imagen, .carrusel__img { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.carrusel__img { object-fit: cover; }
.carrusel__velo { position: absolute; inset: 0; }
.carrusel__slide--oscuro .carrusel__velo { background: linear-gradient(180deg, rgba(20, 25, 30, .6) 0%, rgba(20, 25, 30, .86) 100%); }
.carrusel__slide--claro .carrusel__velo { background: linear-gradient(180deg, rgba(255, 255, 255, .72) 0%, rgba(255, 255, 255, .92) 100%); }
.carrusel__contenido { position: relative; height: 100%; display: flex; align-items: center; padding-block: 3.5rem; padding-inline: 3.5rem; }
.carrusel__texto { max-width: 620px; }
.carrusel__slide--centro .carrusel__contenido { justify-content: center; text-align: center; }
.carrusel__slide--centro .carrusel__texto { max-width: 760px; }
.carrusel__slide--oscuro { color: #fff; }
.carrusel__slide--claro { color: var(--color-oscuro); }
.carrusel__eyebrow { display: inline-block; font-size: var(--texto-sm); font-weight: 600; text-transform: uppercase; letter-spacing: .08em; margin-bottom: var(--esp-2); }
.carrusel__slide--oscuro .carrusel__eyebrow { color: #7fe07f; }
.carrusel__slide--claro .carrusel__eyebrow { color: var(--color-primario-oscuro); }
.carrusel__titulo { font-size: clamp(1.75rem, 4.2vw, 3rem); line-height: 1.12; margin: 0 0 var(--esp-3); color: inherit; text-wrap: balance; }
.carrusel__slide--oscuro .carrusel__titulo span { color: #7fe07f; }
.carrusel__slide--claro .carrusel__titulo span { color: var(--color-primario-oscuro); }
.carrusel__subtitulo { font-size: var(--texto-lg); margin: 0; max-width: 560px; }
.carrusel__slide--centro .carrusel__subtitulo { margin-inline: auto; }
.carrusel__slide--oscuro .carrusel__subtitulo { color: #e6efe4; }
.carrusel__slide--claro .carrusel__subtitulo { color: #2f363d; }
.carrusel__acciones { display: flex; flex-wrap: wrap; gap: var(--esp-3); margin-top: var(--esp-4); }
.carrusel__slide--centro .carrusel__acciones { justify-content: center; }

/* Controles: fondo oscuro translúcido para que se vean sobre cualquier imagen */
.carrusel__flecha, .carrusel__pausa { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: rgba(20, 25, 30, .72); color: #fff; cursor: pointer; }
.carrusel__flecha:hover, .carrusel__pausa:hover { background: rgba(20, 25, 30, .92); }
.carrusel__flecha:focus-visible, .carrusel__pausa:focus-visible, .carrusel__punto:focus-visible { outline: 3px solid #7fe07f; outline-offset: 2px; }
.carrusel__flecha { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 40px; height: 40px; }
.carrusel__flecha--prev { left: .5rem; }
.carrusel__flecha--sig { right: .5rem; }
.carrusel__flecha .icono, .carrusel__pausa .icono { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.carrusel__barra { position: absolute; left: 50%; bottom: .75rem; transform: translateX(-50%); z-index: 2; display: flex; align-items: center; gap: .5rem; padding: .25rem .5rem; border-radius: 999px; background: rgba(20, 25, 30, .72); }
.carrusel__pausa { width: 32px; height: 32px; background: transparent; }
.carrusel__pausa .icono { width: 18px; height: 18px; }
.carrusel__puntos { display: flex; gap: 0; }
.carrusel__punto { position: relative; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.carrusel__punto::before { content: ""; position: absolute; top: 50%; left: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: rgba(255, 255, 255, .5); transition: background .2s, transform .2s; }
.carrusel__punto[aria-current="true"]::before { background: #fff; transform: scale(1.3); }

@media (min-width: 768px) {
  .carrusel__slide--oscuro .carrusel__velo { background: linear-gradient(90deg, rgba(20, 25, 30, .9) 0%, rgba(20, 25, 30, .72) 45%, rgba(20, 25, 30, .12) 100%); }
  .carrusel__slide--claro .carrusel__velo { background: linear-gradient(90deg, rgba(255, 255, 255, .95) 0%, rgba(255, 255, 255, .8) 45%, rgba(255, 255, 255, .1) 100%); }
  .carrusel__slide--centro.carrusel__slide--oscuro .carrusel__velo { background: radial-gradient(ellipse at center, rgba(20, 25, 30, .82) 0%, rgba(20, 25, 30, .55) 100%); }
  .carrusel__slide--centro.carrusel__slide--claro .carrusel__velo { background: radial-gradient(ellipse at center, rgba(255, 255, 255, .92) 0%, rgba(255, 255, 255, .6) 100%); }
  .carrusel__flecha { left: auto; width: 44px; height: 44px; }
  .carrusel__flecha--prev { left: 1rem; }
  .carrusel__flecha--sig { right: 1rem; }
}
@media (min-width: 1500px) { .carrusel__contenido { padding-inline: var(--gutter); } }
@media (prefers-reduced-motion: reduce) {
  .carrusel__slide, .carrusel__slide--activa, .carrusel__punto::before { transition: none; }
}
