/**
 * EDUCA FIDYS · Bloque "Formulario"
 *
 * Depende de educa-fidys-base.css (tokens y patrón de sección).
 *
 * NOTA SOBRE LA ESPECIFICIDAD
 *
 * El ajuste de estilo de WPForms es global: ponerlo en "Solo base" dejaría
 * sin estilo a todos los demás formularios del sitio. Por eso este bloque
 * convive con el estilo completo del plugin y lo vence por especificidad,
 * no con !important.
 *
 * WPForms declara sus reglas como
 *     div.wpforms-container-full .wpforms-form input[type=text]
 * es decir, tres clases y dos elementos. Aquí se antepone .fidys-formulario
 * al mismo patrón, lo que suma una clase más y basta para ganar. En el botón
 * de envío, donde el empate era exacto, se encadenan además la clase y el
 * atributo del propio botón.
 *
 * Todo va acotado bajo .fidys-formulario, así que ningún otro formulario del
 * sitio se ve afectado.
 *
 * Versión: 1.7.1
 *
 * 1.7.1 - Campo trampa del recuadro del email, fuera de la vista.
 *
 * 1.7.0 - Acceso recordado a la grabación: recuadro superior para entrar
 *         con el email y estado "con acceso", que retira el formulario.
 *
 * 1.6.0 - Reproductor de Vimeo dentro de la ventana tras el envío. La ventana
 *         se ensancha y se ocultan el texto y la nota de la convocatoria.
 *
 * 1.5.0 - Presentación en ventana modal sobre <dialog> nativo.
 *
 * 1.4.0 - La separación del campo de diseño pasa a las filas. Cada columna
 *         contiene un único campo, así que ese campo siempre es :last-child
 *         y la regla anterior le quitaba el margen precisamente a él.
 *         Además, la etiqueta del bloque RGPD recupera su estilo de rótulo:
 *         solo se aligera el texto largo del consentimiento.
 *
 * 1.3.0 - Se restituye la separación entre las filas de un campo de diseño.
 *         El reset de márgenes alcanzaba también a los campos anidados, que
 *         es donde WPForms pone su propia separación, y quedaban pegados.
 *
 * 1.2.0 - Se respeta el campo de diseño de WPForms. Si el formulario trae
 *         uno, las columnas las reparte el plugin y el bloque solo aporta
 *         la separación. La rejilla de dos columnas propia queda reservada
 *         a los formularios que no lo usan.
 *
 * 1.1.0 - Especificidad elevada para convivir con el estilo completo de
 *         WPForms. Se retira el requisito de poner el plugin en "Solo base",
 *         que era un ajuste global y afectaba al resto de formularios.
 * 1.0.0 - Versión inicial.
 */

.fidys-formulario__interior {
	display: grid;
	grid-template-columns: 0.72fr 1.28fr;
	gap: 60px;
	align-items: start;
}

/* -------------------------------------------------------------------------
   1. Columna de texto
   ---------------------------------------------------------------------- */

.fidys-formulario__titulo {
	margin: 10px 0 18px;
	font-size: clamp(28px, 3.2vw, 44px);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -1.6px;
	color: var(--fidys-color-primary);
}

.fidys-formulario__texto {
	max-width: 560px;
	margin: 0;
	font-size: 16px;
	line-height: 1.75;
	color: var(--fidys-color-secondary);
}

.fidys-formulario__nota {
	max-width: 560px;
	margin: 24px 0 0;
	font-size: 13px;
	line-height: 1.7;
	color: var(--fidys-color-accent);
}

.fidys-formulario__aviso {
	margin: 0;
	padding: 24px;
	border: 1px dashed var(--fidys-color-line);
	font-size: 14px;
	color: var(--fidys-color-secondary);
}

/* -------------------------------------------------------------------------
   2. Caja del formulario
   ---------------------------------------------------------------------- */

.fidys-formulario__caja {
	padding: 35px;
	border: 1px solid var(--fidys-color-line);
	background: var(--fidys-color-white);
}

/* Variables del marcado moderno de WPForms. No sustituyen a las reglas de
   abajo: cubren la versión del plugin que colorea por custom properties. */
.fidys-formulario .wpforms-container {
	--wpforms-field-border-color: #bdcddd;
	--wpforms-field-border-radius: 0;
	--wpforms-field-text-color: var(--fidys-color-primary);
	--wpforms-label-color: var(--fidys-color-primary);
	--wpforms-label-sublabel-color: var(--fidys-color-secondary);
	--wpforms-button-background-color: var(--fidys-color-primary);
	--wpforms-button-text-color: var(--fidys-color-white);
	--wpforms-button-border-radius: 4px;
}

.fidys-formulario div.wpforms-container,
.fidys-formulario div.wpforms-container .wpforms-form {
	margin: 0;
	padding: 0;
}

/*
 * El reparto en columnas tiene dos orígenes posibles y no deben sumarse.
 *
 * Si el formulario lleva un campo de diseño de WPForms, manda el plugin: el
 * campo ocupa el ancho completo y el bloque solo aporta la separación entre
 * filas. Meterlo dentro de una rejilla propia lo encajaba en media caja y
 * dejaba los campos a un cuarto de ancho.
 *
 * Si no lo lleva, el bloque reparte en dos columnas por su cuenta.
 */
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-container {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-container:not(:has(.wpforms-field-layout)) {
	grid-template-columns: 1fr 1fr;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-layout {
	grid-column: 1 / -1;
}

/* La anchura de cada columna la fija el plugin según el reparto elegido en
   el campo de diseño; aquí solo se evita que un contenido largo la desborde. */
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-layout-column {
	min-width: 0;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field {
	display: grid;
	gap: 7px;
	align-content: start;
	padding: 0;
}

/* El reset de márgenes se limita a los campos de primer nivel, que son los
   que ya separa el gap del contenedor. */
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-container > .wpforms-field {
	margin: 0;
}

/* Dentro del campo de diseño, cada columna contiene un único campo: la
   separación va entre filas, no entre campos. */
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-layout .wpforms-field {
	margin: 0;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-layout-row + .wpforms-layout-row {
	margin-top: 18px;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-textarea,
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-checkbox,
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-gdpr-checkbox,
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-html {
	grid-column: 1 / -1;
}

/* -------------------------------------------------------------------------
   3. Etiquetas y controles
   ---------------------------------------------------------------------- */

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-label {
	display: block;
	margin: 0;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--fidys-color-primary);
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-required-label {
	color: var(--fidys-color-accent);
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-sublabel,
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-description {
	margin: 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--fidys-color-secondary);
}

.fidys-formulario div.wpforms-container .wpforms-form input[type="text"],
.fidys-formulario div.wpforms-container .wpforms-form input[type="email"],
.fidys-formulario div.wpforms-container .wpforms-form input[type="tel"],
.fidys-formulario div.wpforms-container .wpforms-form input[type="url"],
.fidys-formulario div.wpforms-container .wpforms-form input[type="number"],
.fidys-formulario div.wpforms-container .wpforms-form select,
.fidys-formulario div.wpforms-container .wpforms-form textarea {
	width: 100%;
	max-width: 100%;
	height: auto;
	padding: 14px;
	border: 1px solid #bdcddd;
	border-radius: 0;
	background-color: var(--fidys-color-white);
	color: var(--fidys-color-primary);
	font-family: inherit;
	font-size: 15px;
	line-height: 1.4;
}

.fidys-formulario div.wpforms-container .wpforms-form textarea {
	min-height: 130px;
	resize: vertical;
}

.fidys-formulario div.wpforms-container .wpforms-form input:focus,
.fidys-formulario div.wpforms-container .wpforms-form select:focus,
.fidys-formulario div.wpforms-container .wpforms-form textarea:focus {
	border-color: var(--fidys-color-accent);
	outline: 2px solid var(--fidys-color-tint);
	outline-offset: 0;
}

/* -------------------------------------------------------------------------
   4. Consentimiento
   ---------------------------------------------------------------------- */

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-checkbox ul,
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-gdpr-checkbox ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-checkbox li,
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-gdpr-checkbox li {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	margin: 0;
}

/* Solo se aligera el texto del consentimiento. El rótulo del campo conserva
   el estilo de etiqueta que comparte con el resto del formulario. */
.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-label-inline {
	font-size: 13px;
	font-weight: 400;
	line-height: 1.55;
	color: var(--fidys-color-secondary);
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-label-inline a {
	color: var(--fidys-color-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-label-inline strong {
	color: var(--fidys-color-primary);
}

.fidys-formulario div.wpforms-container .wpforms-form input[type="checkbox"] {
	width: 17px;
	height: 17px;
	margin: 2px 0 0;
	flex: 0 0 auto;
	accent-color: var(--fidys-color-primary);
}

/* -------------------------------------------------------------------------
   5. Botón de envío
   ---------------------------------------------------------------------- */

.fidys-formulario div.wpforms-container .wpforms-form .wpforms-submit-container {
	margin: 0;
	padding: 18px 0 0;
}

/* Se encadenan clase y atributo del botón: contra la regla del plugin el
   empate era exacto y el resultado dependía del orden de las hojas. */
.fidys-formulario div.wpforms-container .wpforms-form button[type="submit"].wpforms-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	padding: 16px 22px;
	border: 0;
	border-radius: 4px;
	background-color: var(--fidys-color-primary);
	background-image: var(--fidys-gradient-primary);
	color: var(--fidys-color-white);
	font-family: inherit;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.4px;
	cursor: pointer;
	transition: background-color 0.25s ease;
}

.fidys-formulario div.wpforms-container .wpforms-form button[type="submit"].wpforms-submit:hover,
.fidys-formulario div.wpforms-container .wpforms-form button[type="submit"].wpforms-submit:focus-visible {
	background-image: none;
	background-color: var(--fidys-color-primary-dark);
}

/* -------------------------------------------------------------------------
   6. Errores y confirmación
   ---------------------------------------------------------------------- */

.fidys-formulario div.wpforms-container .wpforms-form label.wpforms-error {
	margin: 0;
	font-size: 12px;
	font-weight: 600;
	color: #a3231f;
}

.fidys-formulario div.wpforms-container .wpforms-form input.wpforms-error,
.fidys-formulario div.wpforms-container .wpforms-form select.wpforms-error,
.fidys-formulario div.wpforms-container .wpforms-form textarea.wpforms-error {
	border-color: #a3231f;
}

.fidys-formulario div.wpforms-container .wpforms-confirmation-container-full {
	margin: 0;
	padding: 24px;
	border: 1px solid var(--fidys-line-semergen);
	background: var(--fidys-surface-semergen);
	color: var(--fidys-color-primary);
}

/* -------------------------------------------------------------------------
   6 bis. Ventana modal
   ---------------------------------------------------------------------- */

/* El contenedor no ocupa sitio: solo sostiene el diálogo y el aviso sin JS. */
.fidys-formulario--modal {
	display: contents;
}

.fidys-formulario__dialogo {
	width: min(720px, calc(100vw - 40px));
	max-height: calc(100vh - 60px);
	padding: 0;
	border: 0;
	border-top: 6px solid var(--fidys-color-accent);
	background: var(--fidys-color-white);
	color: var(--fidys-color-primary);
	box-shadow: 0 30px 90px rgba(0, 59, 92, 0.28);
}

.fidys-formulario__dialogo::backdrop {
	background: rgba(0, 20, 33, 0.55);
}

.fidys-formulario__dialogo-cuerpo {
	padding: 40px;
	overflow-y: auto;
}

.fidys-formulario__dialogo .fidys-formulario__titulo {
	margin: 10px 0 14px;
	font-size: clamp(24px, 3vw, 34px);
}

.fidys-formulario__dialogo .fidys-formulario__texto {
	max-width: none;
	margin-bottom: 26px;
	font-size: 15px;
}

.fidys-formulario__dialogo .fidys-formulario__nota {
	margin-top: 20px;
}

/* Dentro de la ventana la caja no lleva recuadro: ya lo es el propio
   diálogo, y un borde dentro de otro recarga la lectura. */
.fidys-formulario__caja--desnuda {
	padding: 0;
	border: 0;
	background: none;
}

.fidys-formulario__cerrar {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 1;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--fidys-color-surface);
	color: var(--fidys-color-primary);
	font-size: 26px;
	line-height: 1;
	cursor: pointer;
	transition: background-color 0.25s ease;
}

.fidys-formulario__cerrar:hover,
.fidys-formulario__cerrar:focus-visible {
	background: var(--fidys-color-tint);
}

.fidys-formulario__sin-js {
	margin: 0;
	padding: 20px 24px;
	border-left: 5px solid var(--fidys-color-accent);
	background: var(--fidys-color-surface);
	font-size: 14px;
	line-height: 1.7;
	color: var(--fidys-color-secondary);
}

/* -------------------------------------------------------------------------
   6 ter. Vídeo tras el envío
   ---------------------------------------------------------------------- */

/* Con el vídeo montado, la ventana gana anchura para verlo con holgura. */
.fidys-formulario__dialogo--video {
	width: min(980px, calc(100vw - 40px));
}

/* Una vez inscrito, el texto de la convocatoria ya no aporta: se retira
   para que la confirmación y el vídeo queden a la vista sin desplazarse. */
.fidys-formulario--completado .fidys-formulario__texto,
.fidys-formulario--completado .fidys-formulario__nota {
	display: none;
}

.fidys-formulario__video {
	margin-top: 24px;
}

.fidys-formulario__video[hidden] {
	display: none;
}

.fidys-formulario__video-marco {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: var(--fidys-color-primary);
}

.fidys-formulario__video-iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

/* -------------------------------------------------------------------------
   6 quater. Acceso recordado (1.7.0)
   ---------------------------------------------------------------------- */

/* Recuadro "¿Ya pediste acceso?" sobre el formulario. Los selectores llevan
   .fidys-formulario delante para imponerse a los estilos de Astra para p,
   input y button. */
.fidys-formulario__recordar {
	margin: 0 0 26px;
	padding: 18px 20px;
	border: 1px solid var(--fidys-color-line);
	background: var(--fidys-color-surface);
}

.fidys-formulario .fidys-formulario__recordar-texto {
	margin: 0 0 12px;
	font-size: 14px;
	line-height: 1.55;
	color: var(--fidys-color-secondary);
}

.fidys-formulario .fidys-formulario__recordar-form {
	display: flex;
	gap: 10px;
	margin: 0;
}

/* Campo trampa: fuera de la vista pero presente para los robots, que lo
   rellenan. No se usa display:none porque algunos lo detectan. */
.fidys-formulario .fidys-formulario__recordar-trampa {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.fidys-formulario .fidys-formulario__recordar-campo {
	flex: 1 1 auto;
	min-width: 0;
	height: auto;
	margin: 0;
	padding: 12px 14px;
	border: 1px solid #bdcddd;
	border-radius: 0;
	background: var(--fidys-color-white);
	color: var(--fidys-color-primary);
	font-family: inherit;
	font-size: 15px;
	line-height: 1.4;
}

.fidys-formulario .fidys-formulario__recordar-campo:focus {
	border-color: var(--fidys-color-accent);
	outline: 2px solid var(--fidys-color-tint);
	outline-offset: 0;
}

.fidys-formulario .fidys-formulario__recordar-boton {
	flex: 0 0 auto;
	min-width: 0;
	margin: 0;
	border: 0;
	font-family: inherit;
	line-height: 1.2;
	cursor: pointer;
}

.fidys-formulario .fidys-formulario__recordar-boton[aria-busy="true"] {
	opacity: 0.7;
	cursor: progress;
}

.fidys-formulario .fidys-formulario__recordar-mensaje {
	margin: 10px 0 0;
	font-size: 13px;
	font-weight: 600;
	line-height: 1.5;
	color: #a3231f;
}

.fidys-formulario .fidys-formulario__recordar-mensaje[hidden] {
	display: none;
}

/* Con acceso (por cookie o por email) sobran el formulario y el recuadro;
   tras enviar el formulario, solo el recuadro. */
.fidys-formulario--acceso .fidys-formulario__caja,
.fidys-formulario--acceso .fidys-formulario__recordar,
.fidys-formulario--completado .fidys-formulario__recordar {
	display: none;
}

/* El vídeo pasa a ser lo primero tras el título: sin el formulario delante,
   su margen superior sobraría. */
.fidys-formulario--acceso .fidys-formulario__video {
	margin-top: 0;
}

/* -------------------------------------------------------------------------
   7. Responsive
   ---------------------------------------------------------------------- */

@media (max-width: 950px) {

	.fidys-formulario__interior {
		grid-template-columns: 1fr;
		gap: 40px;
	}
}

@media (max-width: 650px) {

	.fidys-formulario__titulo br {
		display: none;
	}

	.fidys-formulario__caja {
		padding: 22px;
	}

	.fidys-formulario__dialogo-cuerpo {
		padding: 26px 22px 30px;
	}

	.fidys-formulario__caja--desnuda {
		padding: 0;
	}

	.fidys-formulario .fidys-formulario__recordar-form {
		flex-direction: column;
	}

	.fidys-formulario .fidys-formulario__recordar-boton {
		justify-content: space-between;
	}

	.fidys-formulario div.wpforms-container .wpforms-form .wpforms-field-container:not(:has(.wpforms-field-layout)) {
		grid-template-columns: 1fr;
	}
}

@media (prefers-reduced-motion: reduce) {

	.fidys-formulario div.wpforms-container .wpforms-form button[type="submit"].wpforms-submit,
	.fidys-formulario__cerrar {
		transition: none;
	}
}
