/* ==========================================================================
   09 · Contacto (plan §09 · Fase 4.8)
   ========================================================================== */

/* Panel del formulario. El fondo gris y el border-radius originales
   (D3) solo tienen sentido cuando el panel es una "card" contenida en
   sí misma. Desde que el layout pasa a 2 columnas con fondo full-bleed
   en la mitad derecha (.aq-contact-split, más abajo), esa función la
   cumple el ::before del .row: el gris ahí es un bloque recto de
   borde a borde y un border-radius en el panel se vería como una
   esquina redondeada flotando en medio de un fondo que debe ser
   recto. Por eso en desktop el panel queda transparente (solo aporta
   el padding) y el color se restaura únicamente en el fallback mobile
   más abajo, donde sí vuelve a ser una card contenida. */
.aq-contact-form-panel {
   padding: var(--aq-space-6);
}

/* Ritmo vertical del formulario vía `gap` en el contenedor flex, NO vía
   margin-top por adyacencia entre campos (ver form-field.css: CF7
   envuelve su salida en <p> y rompería la adyacencia — auditoría
   Fase 4.9). El botón ENVIAR es un hijo más de este flex: recibe el
   mismo gap que los campos, sin regla aparte. */
.aq-contact-form {
   display: flex;
   flex-direction: column;
   gap: var(--aq-space-4);
}

/* --------------------------------------------------------------------
   Split de 2 columnas con fondo full-bleed en la mitad derecha
   (info de contacto a la izquierda con fondo normal de la sección,
   formulario a la derecha con panel gris que llega hasta el borde
   del viewport, no solo hasta el borde del .container).

   No se puede pintar .col-lg-6 ni .aq-contact-form-panel directamente:
   ambos viven adentro de .container, así que el color nunca podría
   pasar del padding/margen de ese container hacia el borde del
   viewport — el límite es estructural, no de selector (mismo
   problema resuelto en Servicios, ver services.css).

   Solución: pseudo-elemento del .row (no de la columna). Se ancla en
   el 50% del .row —coincide con el centro del viewport porque el
   .container tiene márgenes automáticos simétricos— y se extiende
   50vw hacia la derecha: cubre exactamente la mitad derecha de la
   pantalla sin importar el ancho del .container. El alto lo toma del
   .row (top:0/bottom:0 sobre el ancestro posicionado), así que
   acompaña la altura real del contenido de ambas columnas.

   z-index: el pseudo-elemento queda DETRÁS del contenido (z-index:-1)
   y el .row pasa a z-index:1 para que el fondo no tape el formulario.
   -------------------------------------------------------------------- */
.aq-contact-split {
   position: relative;
   z-index: 1;
}

.aq-contact-split::before {
   content: "";
   position: absolute;
   top: 0;
   bottom: 0;
   left: 50%;
   width: 50vw;
   background-color: var(--aq-beige);
   z-index: -1;
}

/* Debajo de lg las columnas se apilan (col-lg-6 → 100% de ancho); ya
   no hay "mitad derecha" que distinguir, así que el bleed se anula y
   el panel vuelve a pintar su propio fondo contenido — acá sí tiene
   sentido el border-radius, porque vuelve a ser una card normal
   dentro del flujo, no un bloque edge-to-edge. */
@media (max-width: 991.98px) {
   .aq-contact-split::before {
      content: none;
   }

   .aq-contact-form-panel {
      background-color: var(--aq-gray-panel);
      border-radius: var(--aq-radius-md);
   }
}

/* --------------------------------------------------------------------
   Resumen de errores (Fase 6.4) — INERTE desde 8.5: form-validation.js,
   el único que lo poblaba, se retiró (ver tareas.md, "form-validation.js
   se retira"). El nodo sigue en la plantilla real de CF7 (admin), sin
   JS que lo toque -- candidato a limpieza posterior a la aprobación,
   no se borra ahora por si una prueba con lector de pantalla real
   encuentra una carencia en el canal que sí usa CF7
   (`.screen-reader-response`, ver cf7-reset.css) y hay que reactivarlo
   como adaptador. Esta regla queda para que, si eso pasa, el nodo ya
   tenga estilo y no haga falta escribir CSS de nuevo.
   -------------------------------------------------------------------- */
.aq-contact-form__summary {
   display: flex;
   align-items: center;
   gap: var(--aq-space-3);
   color: var(--aq-danger);
   font-family: var(--aq-font-sans);
   font-size: var(--aq-fs-small);
}

.aq-contact-form__summary[hidden] {
   display: none;
}

/* Reclasificado en 8.6 (ya no es ANDAMIAJE-PLACEHOLDER): el mapa se
   conectó en 8.5 (aq_opt_mapa_src) -- esto ya no es "sin implementar
   todavía", es el estilo del estado vacío permanente, para cuando el
   campo no tiene URL cargada. No se fusiona con
   .aq-policy-collage__placeholder (misma forma, en
   sections/politicas.css) — auditoría Fase 4.9, hallazgo (f): no vale
   la pena abstraer una coincidencia de forma entre dos componentes de
   secciones distintas. */
.aq-contact-map__placeholder {
   display: flex;
   align-items: center;
   justify-content: center;
   height: 100%;
   background-color: var(--aq-gray-panel);
   color: var(--aq-text);
   font-family: var(--aq-font-sans);
   font-size: var(--aq-fs-small);
}

/* --------------------------------------------------------------------
   Respuesta del formulario — CF7 genera su propio contenedor,
   `.wpcf7-response-output`, justo después del `<form>`.
   `.aq-contact-form__response` (el placeholder de andamiaje de la Fase
   6.4, sin backend real) se retiró del HTML en 8.5 junto con
   form-validation.js: ya hay un endpoint real, no hace falta fingir
   uno. Esta regla queda solo para el contenedor real de CF7.

   CORREGIDO (8.5, medido con el formulario real, no supuesto): esta
   versión de CF7 NO agrega `.wpcf7-mail-sent-ok`/`-ng` al contenedor
   de respuesta -- pone la clase de estado (`sent`/`failed`/`spam`/
   `invalid`/...) en el `<form>` (confirmado leyendo
   includes/css/styles.css del plugin: `form.sent .wpcf7-response-output`,
   no `.wpcf7-response-output.wpcf7-mail-sent-ok`).

   Sin caja ni borde, a propósito: mismo lenguaje visual liviano que el
   resto del sitio (ícono + texto), nada nuevo que justificar en el
   diseño más allá del color, ya justificado en tokens.css.
   -------------------------------------------------------------------- */
.aq-contact-form.sent .wpcf7-response-output {
   display: flex;
   align-items: center;
   gap: var(--aq-space-3);
   margin-top: var(--aq-space-4);
   color: var(--aq-success);
   font-family: var(--aq-font-sans);
   font-size: var(--aq-fs-small);
}

/* Error de envío y spam (8.5, pedido explícito del cliente): mismo
   patrón liviano, en --aq-danger. `.invalid` (error de validación,
   antes de intentar enviar) queda deliberadamente FUERA de esta
   regla -- no se pidió, y ese texto ya convive con los mensajes de
   error por campo, que sí llevan color e ícono propios. */
.aq-contact-form.failed .wpcf7-response-output,
.aq-contact-form.spam .wpcf7-response-output {
   display: flex;
   align-items: center;
   gap: var(--aq-space-3);
   margin-top: var(--aq-space-4);
   color: var(--aq-danger);
   font-family: var(--aq-font-sans);
   font-size: var(--aq-fs-small);
}