/* ============================================================
   main.css — Grupo Crear
   Stack: HTML5 / CSS3 / Vanilla JS — SIN Bootstrap CSS
   Diseño fiel a capturas Canva
   Mobile-first — breakpoints: 768px / 1024px / 1280px
   ============================================================ */

/* ------------------------------------------------------------
   FUENTES LOCALES — Montserrat (todos los pesos del proyecto)
   Ruta relativa desde assets/css/ → assets/fonts/
   ------------------------------------------------------------ */
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-Light.otf') format('opentype');
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-Regular.otf') format('opentype');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-Medium.otf') format('opentype');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-SemiBold.otf') format('opentype');
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-Bold.otf') format('opentype');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-ExtraBold.otf') format('opentype');
  font-weight: 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Montserrat';
  src: url('../fonts/montserrat/Montserrat-Black.otf') format('opentype');
  font-weight: 900; font-style: normal; font-display: swap;
}

/* ------------------------------------------------------------
   1. DESIGN TOKENS
   ------------------------------------------------------------ */
:root {
  /* Azul principal — Crear Asociados, navbar, botones, footer */
  --azul:              #1A8EC0;
  --azul-dark:         #1570A0;

  /* Verde — Canoser Constructora */
  --verde:             #2f9100;
  --verde-dark:        #267800;

  /* Dorado — acento logo */
  --dorado:            #F5A623;

  /* Ámbar — valor exacto de marca Crear Asociados (--color-accent en
     localhost:6319, #F8BD01), usado en el botón de envío del formulario
     de contacto (Bloque V, 2026-07-01) — replica fiel de la referencia,
     distinto del --dorado del logo. */
  --ambar:             #F8BD01;
  --ambar-dark:        #DCA601;

  /* Neutros */
  --blanco:            #FFFFFF;
  --gris-fondo:        #F4F4F4;
  --gris-texto:        #2C3E50;
  --gris-placeholder:  #888888;
  --gris-borde:        #CCCCCC;
  --negro:             #111111;

  /* Tipografias — Montserrat local (todos los pesos disponibles) */
  --font-heading:      'Montserrat', sans-serif;
  --font-body:         'Montserrat', sans-serif;

  /* Navbar */
  --navbar-h:          72px;

  /* Layout */
  --container-max:     900px;
  --section-pad-x:     clamp(20px, 5vw, 40px);

  /* Bloques decorativos directorio — colores exactos del diseño Canva */
  --gc-bloque-1:       #264A54;
  --gc-bloque-2:       #0A7CAB;
  --gc-bloque-3:       #FFBF00;
  --gc-bloque-4:       #5B9117;
}

/* ------------------------------------------------------------
   2. RESET & BASE
   ------------------------------------------------------------ */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: var(--font-body);
  background-color: var(--blanco);
  color: var(--gris-texto);
  line-height: 1.65;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img, video {
  max-width: 100%;
  display: block;
}

a {
  color: inherit;
  text-decoration: none;
}

ul {
  list-style: none;
}

button {
  cursor: pointer;
  font-family: var(--font-body);
  border: none;
  background: none;
}

/* ------------------------------------------------------------
   3. NAVBAR — fijo, fondo blanco siempre
   ------------------------------------------------------------ */
.gc-navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  height: var(--navbar-h);
  display: flex;
  align-items: center;
  padding: 0 var(--section-pad-x);
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

/* Compensa el navbar position:fixed al navegar por anclas (#accesos,
   #directorio, #contacto): sin esto, el navbar tapa los primeros ~72px
   de la sección de destino (ej. el decorador .gc-linea-marca de #contacto
   quedaba oculto detrás del navbar al hacer scroll-into-view). Detectado
   2026-07-01 al verificar visualmente el Bloque V — bug preexistente,
   no introducido por este bloque, pero afecta la QA visual de la
   sección de contacto. */
section[id] {
  scroll-margin-top: var(--navbar-h);
}

.gc-navbar__inner {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* Brand / Logo PNG */
.gc-navbar__brand {
  display: flex;
  align-items: center;
  text-decoration: none;
}

.gc-navbar__logo-img {
  height: 55px;
  width: auto;
  display: block;
  flex-shrink: 0;
}

/* Botón CTA Contacto */
.gc-navbar__cta {
  font-family: var(--font-heading);
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--blanco);
  background: var(--azul);
  border-radius: 4px;
  padding: 9px 20px;
  text-decoration: none;
  letter-spacing: 0.02em;
  transition: background 0.2s ease;
  white-space: nowrap;
}

.gc-navbar__cta:hover {
  background: var(--azul-dark);
  color: var(--blanco);
}

/* ------------------------------------------------------------
   4. HERO — video, overlay, textos, barra bicolor
   ------------------------------------------------------------ */
.gc-hero {
  position: relative;
  width: 100%;
  height: 100vh;
  min-height: 500px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Video de fondo */
.gc-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  pointer-events: none;
}

/* Overlay oscuro semi-transparente */
.gc-hero__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.38);
  z-index: 1;
}

/* Contenido centrado en el hero */
.gc-hero__content {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: 0 var(--section-pad-x);
  max-width: 1280px;
  margin: 0 auto;
  text-align: center;
}

.gc-hero__title {
  font-family: var(--font-heading);
  font-size: clamp(2.2rem, 5vw, 4rem);
  font-weight: 400;
  color: var(--blanco);
  text-transform: uppercase;
  line-height: 1.1;
  margin-bottom: 16px;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.5);
  letter-spacing: 0.02em;
}

/* "GRUPO CREAR" en extra-bold, igual que en el diseño Canva */
.gc-hero__title strong {
  font-weight: 800;
  color: var(--blanco);
}

.gc-hero__tagline {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2vw, 1.25rem);
  color: rgba(255, 255, 255, 0.92);
  font-weight: 400;
  line-height: 1.5;
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

.gc-hero__tagline strong {
  font-weight: 700;
  color: var(--blanco);
}

/* Barra bicolor inferior pegada al fondo del hero */
.gc-hero__bar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 9px;
  display: flex;
  z-index: 3;
}

.gc-hero__bar-left {
  flex: 1;
  background: var(--azul);
}

.gc-hero__bar-right {
  flex: 1;
  background: var(--verde);
}

/* Mobile hero */
@media (max-width: 767px) {
  .gc-hero__content {
    padding: 0 20px 70px;
  }

  .gc-hero__title {
    font-size: clamp(1.8rem, 7vw, 2.6rem);
  }

  .gc-hero__tagline {
    font-size: 0.95rem;
  }

  /* Ocultar barra bicolor en mobile — evita colisión visual con la sección accesos apilada */
  .gc-hero__bar {
    display: none;
  }
}

/* ------------------------------------------------------------
   5. ACCESOS — 2 mitades coloreadas con logos en blanco
   ------------------------------------------------------------ */
.gc-accesos {
  display: flex;
  width: 100%;
  height: 200px;
  align-items: stretch;
}

.gc-accesos__mitad {
  flex: 1;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  cursor: pointer;
  transition: filter 0.25s ease;
}

.gc-accesos__mitad:hover {
  filter: brightness(0.88);
}

.gc-accesos__mitad--ca {
  background: var(--azul);
}

.gc-accesos__mitad--cn {
  background: var(--verde);
}

/* Logo PNG en cada mitad */
.gc-accesos__logo-img {
  max-width: 260px;
  width: 55%;
  height: auto;
  display: block;
  object-fit: contain;
  flex-shrink: 0;
}

/* Tablet: reducir logos para que no se deformen */
@media (max-width: 1023px) {
  .gc-accesos {
    height: 160px;
  }

  .gc-accesos__logo-img {
    width: 65%;
    max-width: 200px;
  }
}

/* Mobile: stack vertical */
@media (max-width: 767px) {
  .gc-accesos {
    flex-direction: column;
    height: auto;
  }

  .gc-accesos__mitad {
    height: 140px;
    width: 100%;
    padding: 16px;
  }

  .gc-accesos__logo-img {
    width: 60%;
    max-width: 180px;
  }
}

/* ------------------------------------------------------------
   6. CONTACTO — fondo desaturado, decorador, formulario
   ------------------------------------------------------------ */
.gc-contact {
  position: relative;
  /* Padding vertical simetrico 64px/64px — alineado a la referencia
     Crear Asociados (localhost:6319, sección #contacto, computed
     padding-block real: 64px). Antes 60px/80px (asimétrico). */
  padding: 64px var(--section-pad-x) 64px;
  background: var(--gris-fondo);
  overflow: hidden;
}

/* Imagen de fondo desaturada */
.gc-contact__bg {
  position: absolute;
  inset: 0;
  background-image: url('../img/fotoscrear/contacto.png');
  background-size: cover;
  background-position: center 84%;
  /* Opacidad reducida (0.13 -> 0.08) — la referencia (localhost:6319)
     usa un wash blanco rgba(255,255,255,0.85) sobre foto a color, lo
     que produce un fondo mucho más tenue que el actual. Se ajusta la
     opacidad para lograr la misma sutileza sin cambiar el enfoque
     grayscale ya establecido. */
  filter: grayscale(100%) opacity(0.08);
  z-index: 0;
}

.gc-contact__inner {
  position: relative;
  z-index: 1;
  max-width: var(--container-max);
  margin: 0 auto;
}

/* Imagen de línea decorativa — clase gc- equivalente de la referencia
   (localhost:6319 .crearaso-linea-marca / --contact). Reemplaza el style=
   inline que tenían contacto.php y directorio.php (Bloque V, 2026-07-01):
   mismo resultado visual, evita estilos inline dispersos en los templates. */
.gc-linea-marca {
  display: block;
  width: 100%;
  max-width: 700px;
  margin-inline: auto;
}
.gc-linea-marca--contact {
  margin-bottom: 32px;
}

/* Decorador — línea de marca centrada (imagen). Clase compartida con
   template-parts/directorio.php: NO renombrar sin actualizar ambos usos. */
.gc-contact__decorator {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  margin-bottom: 32px;
  flex-wrap: wrap;
}

/* Título — escala alineada a la referencia Crear Asociados (localhost:6319):
   h2 de sección = 21.33px/700/line-height 21px/letter-spacing 1.37px,
   color gris-azulado (no negro puro). Antes: 28.8px (1.8rem), negro, 36px
   de margen — notablemente más grande que la referencia.
   margin-bottom: en :6319 el espacio real entre el h2 y el primer campo
   del formulario (40px) se compone de DOS reglas distintas: el
   margin-bottom base de los h1-h4 (16px, --space-4) MÁS el gap del grid
   `.crearaso-form { display:grid; gap: var(--space-6) }` (24px) que
   envuelve título + formulario. En grupo-crear `.gc-form` NO es un grid
   (ver .gc-form más abajo), por lo tanto los 40px se replican como un
   único margin-bottom en el título — medido con getComputedStyle en
   ambos sitios (title.bottom → firstRow.top) para exactitud. */
.gc-contact__title {
  font-family: var(--font-heading);
  font-size: 1.333rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 1.37px;
  color: var(--gris-texto);
  margin-bottom: 40px;
}

/* ------------------------------------------------------------
   7. FORMULARIO CF7 — estructura semántica real (campos con <label>
      visible + wrappers .gc-field/.gc-form__row/.gc-form__submit-row),
      replicada 1:1 desde la plantilla del formulario CF7 (post ID 5,
      inc/cf7-capture.php registra [gc_contacto_info]). Reemplaza el
      hack de grid sobre un único <p> (Bloque T) porque la plantilla CF7
      ahora emite HTML real por campo — ver WPCF7_HTMLFormatter, que
      envuelve cada <label>+shortcode en su propio <p> dentro de cada
      div .gc-field, igual que la referencia localhost:6319 (#contacto).
      Mobile-first: 1 columna por defecto, 2 columnas desde 640px.
   ------------------------------------------------------------ */

/* .gc-form envuelve título + formulario completo (título ya usa
   .gc-contact__title) — fija el ancho máximo y centra el bloque
   dentro de .gc-contact__inner (900px). */
.gc-form {
  max-width: 815px;
  margin-inline: auto;
}

/* CF7 v6 ya no requiere display:contents: cada campo es un <div> real
   en flujo normal de documento (no hay grid compartido con el <form>). */
.gc-field p,
.gc-form__submit-row p {
  margin: 0;
}

.wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}

.gc-form__row {
  display: grid;
  gap: 0 24px;
}
/* Modifier explícito --2 (alineado a la referencia localhost:6319,
   .crearaso-form__row--2) — antes se aplicaba 2 columnas a CUALQUIER
   .gc-form__row sin distinción; ahora requiere el modificador, igual que
   la plantilla CF7 (post ID 5) que ya lo declara (Bloque V, 2026-07-01). */
@media (min-width: 640px) {
  .gc-form__row--2 {
    grid-template-columns: 1fr 1fr;
  }
}

.gc-field {
  margin-bottom: 24px;
}
.gc-field p {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.gc-field label {
  font-family: var(--font-body);
  font-size: 1.1667rem;
  font-weight: 400;
  color: var(--gris-texto);
  letter-spacing: 0.02em;
}

/* Inputs con caja completa — alineado a la referencia Crear Asociados
 * (localhost:6319 #contacto): borde 1px solid #E0E0E0 en los 4 lados,
 * fondo blanco, esquinas rectas, padding 12px/16px, min-height 44px
 * (touch target Apple HIG).
 *
 * line-height: 1.6 explícito — verificado con getComputedStyle() contra
 * :6319 (input height real = 51.59px = padding 12+12 + border 1+1 +
 * line-height 25.6px). Los <input>/<textarea> NO heredan line-height del
 * body vía cascada normal: el UA stylesheet del navegador les asigna su
 * propio line-height inicial ("normal", ≈19px en Montserrat 16px) que
 * ignora el line-height:1.65 del body salvo que se declare explícito aquí.
 * Sin esta línea, :6318 quedaba en 45px de alto vs 51.59px en la
 * referencia — inputs y textarea "más bajos" y desalineados entre sí. */
.gc-field input,
.gc-field textarea {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--gris-texto);
  background: #ffffff;
  border: 1px solid #E0E0E0;
  border-radius: 0;
  padding: 12px 16px;
  min-height: 44px;
  outline: none;
  width: 100%;
  transition: border-color 0.2s ease;
  -webkit-appearance: none;
  appearance: none;
}

.gc-field input::placeholder,
.gc-field textarea::placeholder {
  color: var(--gris-placeholder);
  font-size: 1rem;
  font-family: var(--font-body);
}

.gc-field input:focus,
.gc-field textarea:focus {
  border-color: var(--azul);
}

.gc-field textarea {
  resize: vertical;
  /* min-height: 140px — igual a :6319 (referencia). En la práctica el alto
     real lo determina rows="10" del <textarea> (~282px con line-height 1.6);
     min-height solo actúa como piso si el campo se redimensiona por debajo
     de ese valor con el handle de resize. */
  min-height: 140px;
}

/* Fila de envío — botón a la izquierda + datos de contacto a la derecha,
 * en la misma fila (alineado a la referencia localhost:6319). El <p>
 * generado por CF7 alrededor de [submit] + [gc_contacto_info] (misma
 * línea en la plantilla) es el flex container real: ambos elementos son
 * phrasing content (span/input), por lo que la fila queda HTML válida sin
 * necesidad de que el navegador "repare" un <div> mal anidado dentro de
 * un <p> (ver nota en grupocre_cf7_contacto_info_tag(), cf7-capture.php).
 */
.gc-form__submit-row p {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
}
@media (min-width: 768px) {
  .gc-form__submit-row p {
    justify-content: space-between;
  }
}

/* Botón submit CF7 — tipografía y esquinas alineadas a la referencia
 * Crear Asociados (localhost:6319): 16px/700/letter-spacing 1.37px,
 * esquinas rectas (border-radius 0). El formulario de contacto usa la
 * variante --amber (ver abajo) para replicar fielmente la referencia;
 * .gc-btn--primary (azul de marca Grupo Crear) sigue disponible para
 * otros CTAs del sitio que no forman parte de esta plantilla CF7. */
.gc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 700;
  border: none;
  border-radius: 0;
  padding: 12px 28px;
  cursor: pointer;
  letter-spacing: 1.37px;
  white-space: nowrap;
  transition: background 0.2s ease, transform 0.15s ease;
}
.gc-btn--primary {
  color: var(--blanco);
  background: var(--azul);
}
.gc-btn--primary:hover {
  background: var(--azul-dark);
}
@media (hover: none) {
  .gc-btn--primary:hover {
    background: var(--azul);
  }
}

/* Variante azul — usado en el submit del formulario de contacto,
 * color de marca de Grupo Crear (#1A8EC0 / hover #1570A0).
 * Revierte a azul del Bloque T (2026-06-16); Bloque W cambió a ámbar
 * pero el usuario confirma que debe ser azul (2026-07-01). */
.gc-btn--amber {
  color: var(--blanco);
  background: var(--azul);
}
.gc-btn--amber:hover {
  background: var(--azul-dark);
}
@media (hover: none) {
  .gc-btn--amber:hover {
    background: var(--azul);
  }
}

/* Visual feedback while CF7 AJAX is in progress (replaces spinner) */
.wpcf7-form.submitting .gc-btn {
  opacity: 0.65;
  cursor: wait;
  pointer-events: none;
}

/* Spinner CF7 — hidden globally; SweetAlert2 handles all submit feedback */
.wpcf7-spinner {
  display: none !important;
}

/* Mensajes de validación CF7 */
.wpcf7-not-valid-tip {
  font-size: 0.8rem;
  color: #c0392b;
  margin-top: 4px;
  display: block;
}

.wpcf7-response-output {
  display: none !important; /* SweetAlert2 maneja la confirmación */
}

/* Datos de contacto — hermano del botón dentro de .gc-form__submit-row
 * (equivalente gc- de .crearaso-contact-info / .crearaso-contact-info__item
 * en la referencia localhost:6319). */
.gc-contact-info {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.gc-contact-info__item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  letter-spacing: 1.02px; /* alineado a referencia localhost:6319 */
  color: var(--gris-texto);
  line-height: 1.4;
  word-break: break-word;
  overflow-wrap: break-word;
}

.gc-contact-info__item a {
  color: var(--gris-texto);
  text-decoration: none;
  transition: color 0.2s ease;
}

.gc-contact-info__item a:hover {
  color: var(--azul);
}

/* Ícono — <img> PNG ámbar (glifo blanco sobre círculo ámbar ya "horneado"
 * en el propio archivo, ver grupocre-plugin/assets/img/contacto/), igual
 * a la referencia (localhost:6319, .crearaso-contact-info__item img).
 * object-fit + border-radius son fallback defensivo por si el ícono se
 * vuelve administrable con una imagen no cuadrada. Bloque V, 2026-07-01
 * — reemplaza el círculo azul generado con icon-font (.bi-*). */
.gc-contact-info__item img {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: contain;
  margin-top: 1px;
}

/* Mobile: botón y datos de contacto apilados en columna única, botón
 * a ancho completo por usabilidad del touch target (decisión aprobada
 * en Bloque T, 2026-06-16 — se mantiene con la nueva estructura). */
@media (max-width: 767px) {
  .gc-form__submit-row p {
    flex-direction: column;
    align-items: stretch;
    gap: 20px;
  }

  .gc-btn--primary {
    justify-content: center;
  }

  .gc-contact__title {
    /* Antes 1.5rem — con la nueva escala desktop (1.333rem, alineada a
       la referencia) ese valor mobile quedaba MÁS grande que desktop.
       Se ajusta a 1.2rem para mantener una progresión coherente. */
    font-size: 1.2rem;
  }

  /* Imagen de fondo: recentrar en mobile para evitar recorte */
  .gc-contact__bg {
    background-position: center center;
    background-size: cover;
  }
}

/* ------------------------------------------------------------
   8. FOOTER — fondo azul, 3 columnas
   ------------------------------------------------------------ */
.gc-footer {
  background: var(--azul);
  width: 100%;
}

.gc-footer__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 56px var(--section-pad-x) 32px;
}

.gc-footer__grid {
  display: grid;
  grid-template-columns: 1fr 1.5fr 1fr;
  gap: 40px 48px;
  margin-bottom: 40px;
}

/* Columna Logo */
.gc-footer__col--logo {
  display: flex;
  flex-direction: column;
}

.gc-footer__brand {
  display: flex;
  align-items: center;
}

.gc-footer__logo-img {
  width: 160px;
  height: auto;
  display: block;
}

/* Título columna */
.gc-footer__col-title {
  font-family: var(--font-heading);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--blanco);
  margin-bottom: 16px;
  letter-spacing: 0.04em;
}

.gc-footer__col-title--mt {
  margin-top: 24px;
}

/* Lista de info de contacto */
.gc-footer__info-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.gc-footer__info-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-family: var(--font-body);
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.88);
  line-height: 1.45;
}

.gc-footer__info-item a {
  color: rgba(255, 255, 255, 0.88);
  text-decoration: none;
  transition: color 0.2s ease;
}

.gc-footer__info-item a:hover {
  color: var(--blanco);
  text-decoration: underline;
}

/* Ícono circular blanco */
.gc-footer__info-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  color: var(--blanco);
  font-size: 0.8rem;
  flex-shrink: 0;
  margin-top: 1px;
}

/* Horario */
.gc-footer__horario {
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.82);
  line-height: 1.5;
  margin-bottom: 6px;
}

/* Lista de nav del menú */
.gc-footer__nav-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 24px;
}

.gc-footer__nav-list a {
  font-family: var(--font-body);
  font-size: 0.9rem;
  color: rgba(255, 255, 255, 0.88);
  text-decoration: none;
  transition: color 0.2s ease;
}

.gc-footer__nav-list a:hover {
  color: var(--blanco);
  text-decoration: underline;
}

/* Fila "Síguenos" + íconos inline */
.gc-footer__social-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.gc-footer__siguenos {
  font-family: var(--font-heading);
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--blanco);
  margin-right: 4px;
}

.gc-footer__social-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--blanco);
  color: var(--azul);
  font-size: 1rem;
  text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
  flex-shrink: 0;
}

.gc-footer__social-btn:hover {
  background: rgba(255, 255, 255, 0.85);
  transform: translateY(-2px);
}

/* Barra inferior del footer */
.gc-footer__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  padding-top: 24px;
  text-align: center;
}

.gc-footer__bottom p {
  font-family: var(--font-body);
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.7);
  line-height: 1.5;
}

/* Mobile: stack vertical */
@media (max-width: 767px) {
  .gc-footer__grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .gc-footer__inner {
    padding: 40px 20px 28px;
  }
}

/* Tablet: 2 columnas */
@media (min-width: 768px) and (max-width: 1023px) {
  .gc-footer__grid {
    grid-template-columns: 1fr 1fr;
  }

  .gc-footer__col--logo {
    grid-column: 1 / -1;
  }
}

/* ------------------------------------------------------------
   9. ACCESIBILIDAD — focus visible, reduced motion
   ------------------------------------------------------------ */
:focus-visible {
  outline: 2px solid var(--dorado);
  outline-offset: 3px;
  border-radius: 3px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* Touch targets mínimos 44x44px en mobile */
@media (max-width: 767px) {
  .gc-navbar__cta {
    padding: 10px 18px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }

  .gc-btn {
    min-height: 48px;
    width: 100%;
  }

  .gc-footer__social-btn {
    width: 44px;
    height: 44px;
    font-size: 1.1rem;
  }
}

/* Hover solo en dispositivos con puntero preciso */
@media (hover: none) {
  .gc-accesos__mitad:hover {
    filter: none;
  }
}

/* === ScrollTo === */

/*
 * Widget flotante de navegación rápida.
 * Posición: esquina inferior derecha.
 * z-index 900: bajo navbar (1000) y bajo cualquier modal/overlay.
 * Semitransparente en reposo, casi opaco en hover/focus.
 * En mobile (< 768px): solo se muestra el botón "Top".
 */
/* === ScrollTo — botón volver arriba === */
.gc-scrollto {
  position: fixed;
  right: 20px;
  bottom: 24px;
  z-index: 900;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(120, 120, 120, 0.35);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease, background 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}

.gc-scrollto--visible {
  opacity: 1;
  pointer-events: auto;
}

@media (hover: hover) {
  .gc-scrollto--visible:hover {
    background: rgba(100, 100, 100, 0.6);
  }
}

.gc-scrollto:focus-visible {
  outline: 2px solid var(--dorado);
  outline-offset: 2px;
}

/* === Fin ScrollTo === */

/* ------------------------------------------------------------
   SECCIÓN DIRECTORIO
   ------------------------------------------------------------ */
.gc-directorio {
  background: #ffffff;
  padding: clamp(3rem, 8vw, 5rem) var(--section-pad-x);
}

.gc-directorio__inner {
  max-width: 1200px;
  margin: 0 auto;
  text-align: center;
}

/* Subtitulo: NO bold, peso 400 */
.gc-directorio__subtitle {
  font-family: var(--font-heading);
  font-size: clamp(1.2rem, 2.5vw, 1.6rem);
  font-weight: 400;
  color: var(--gris-texto);
  margin-bottom: 1.5rem;
}

/* Parrafo centrado ~844.13px */
.gc-directorio__descripcion {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--gris-texto);
  line-height: 1.75;
  max-width: 844.13px;
  margin: 1.5rem auto 3rem;
  text-align: center;
}

/* Grid 3 columnas */
.gc-directorio__grid {
  display: grid;
  grid-template-columns: repeat(3, 272px);
  gap: 32px;
  justify-content: center;
  margin-top: 2.5rem;
}

/* Card */
.gc-directorio__card {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* Contenedor imagen con overflow hidden para mantener proporciones */
.gc-directorio__img-wrap {
  width: 272px;
  height: 382px;
  overflow: hidden;
  flex-shrink: 0;
}

/* Imagen: grayscale por defecto → color en hover */
.gc-directorio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
  display: block;
  filter: grayscale(100%) brightness(0.92);
  transition: filter 0.4s ease;
}

.gc-directorio__card:hover .gc-directorio__img {
  filter: grayscale(0%) brightness(1);
}

/* Touch devices: no hover support — show images in color always */
@media (hover: none) {
  .gc-directorio__img {
    filter: grayscale(0%) brightness(1);
  }
}

.gc-directorio__img-placeholder {
  width: 100%;
  height: 100%;
  background: #dce6ea;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Texto bajo la imagen */
.gc-directorio__info {
  margin-top: 1rem;
  text-align: center;
  padding: 0 8px;
}

.gc-directorio__nombre {
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 700;
  color: var(--gris-texto);
  margin-bottom: 0.35rem;
}

.gc-directorio__cargo {
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: #5a6a72;
  line-height: 1.5;
}

/* Lista enriquecida — HTML proveniente de BD, sanitizado con wp_kses_post */
.gc-directorio__lista {
  font-family: var(--font-body);
  font-size: 0.82rem;
  color: #5a6a72;
  line-height: 1.55;
  margin-top: 0.65rem;
  text-align: left;
  width: 100%;
  padding: 0 8px;
}

/* Si el campo contiene <ul>: bullets visibles, sangría coherente */
.gc-directorio__lista ul {
  list-style: disc;
  padding-left: 1.2em;
  margin: 0;
}

.gc-directorio__lista ul li {
  margin-bottom: 0.25rem;
}

/* Si el campo contiene <p>: mantener espaciado */
.gc-directorio__lista p {
  margin-bottom: 0.4rem;
}

.gc-directorio__lista p:last-child {
  margin-bottom: 0;
}

/* Bloques KPI — nivel sección (entre descripción y grid de personas) */
.gc-directorio__bloques {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin: 2rem auto;
  max-width: 760px;
  padding: 0 1rem;
}

.gc-directorio__bloque {
  flex: 1;
  max-width: 173px;
  min-height: 140px;
  border-radius: 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 24px 12px 16px;
  text-align: center;
}

.gc-directorio__bloque--1 { background-color: var(--gc-bloque-1); }
.gc-directorio__bloque--2 { background-color: var(--gc-bloque-2); }
.gc-directorio__bloque--3 { background-color: var(--gc-bloque-3); }
.gc-directorio__bloque--4 { background-color: var(--gc-bloque-4); }

/* Número/valor grande centrado */
.gc-directorio__kpi-valor {
  display: block;
  font-family: var(--font-heading);
  font-size: 2rem;
  font-weight: 800;
  line-height: 1;
  color: #fff;
}

/* El bloque amarillo (#FFBF00) tiene fondo claro — texto corporativo para contraste */
.gc-directorio__bloque--3 .gc-directorio__kpi-valor,
.gc-directorio__bloque--3 .gc-directorio__kpi-texto {
  color: #384D56;
}

/* Texto descriptivo debajo del valor */
.gc-directorio__kpi-texto {
  display: block;
  font-family: var(--font-body);
  font-size: 0.60rem;
  font-weight: 500;
  line-height: 1.3;
  color: rgba(234, 228, 228, 0.9);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-top: 6px;
}

/* Descripción 2 — bloque RTE opcional debajo de .gc-directorio__bloques, mismo
   tratamiento tipográfico que .gc-directorio__descripcion. Oculto salvo que el
   cliente lo active desde el panel (opción directorio_mostrar_descripcion2). */
.gc-directorio__descripcion2 {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--gris-texto);
  line-height: 1.75;
  max-width: 844.13px;
  margin: 0 auto 2.5rem;
  text-align: center;
}

/* Responsive tablet */
@media (max-width: 1023px) {
  .gc-directorio__grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
  }

  .gc-directorio__img-wrap {
    width: 100%;
    height: 0;
    padding-bottom: 140%;
    position: relative;
  }

  .gc-directorio__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

  .gc-directorio__bloques {
    max-width: 100%;
    padding: 0 0.5rem;
  }

  .gc-directorio__bloque {
    max-width: 160px;
  }
}

/* Responsive mobile */
@media (max-width: 767px) {
  .gc-directorio__grid {
    grid-template-columns: 1fr;
    max-width: 300px;
    margin-left: auto;
    margin-right: auto;
  }

  .gc-directorio__img-wrap {
    width: 100%;
    padding-bottom: 140%;
    position: relative;
    height: 0;
  }

  .gc-directorio__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

  .gc-directorio__bloques {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    max-width: 360px;
    padding: 0 1rem;
  }

  .gc-directorio__bloque {
    max-width: none;
    min-height: 120px;
  }
}
