/* ============================================================================================================
 * plantilla-repaso.css · VisionLovers · REPASO DE LAS PANTALLAS YA MONTADAS CONTRA EL DIBUJO DE CLAUDE DESIGN
 * 26/09/2026, Claude Code (ayudante del coordinador). Lo encola inc/plantilla-repaso.php con el interruptor
 * VL_PLANTILLA_REPASO (true = todos · 'prueba' = solo con ?vl_camino_b=1 · false = apagado).
 *
 * Qué es, en cristiano: se ha mirado la web viva (sin sesión) a 375, 850 y 1440 px al lado del dibujo
 * (08-REMATE-FINAL/03-pantallas: registro-por-tipo, confirmacion-del-triaje, barra-iconos-movil, letra-titulos,
 * 11331-resultados-busqueda; y de referencia 07-DISENO-TOTAL/03-pantallas/10978-login). Aquí van SOLO las
 * diferencias que se arreglan con CSS. Cada regla dice qué diferencia arregla y el dato medido (antes → dibujo).
 * Lo que necesita tocar PHP o es una decisión NO está aquí: va en el informe.
 *
 * Reglas de la casa: cero !important (se gana por especificidad, como en cabecera-1200.css), todo con tokens --vl-*.
 * Las reglas que tocan letra o espaciado dejan en paz el panel de accesibilidad (html[data-vl-letra],
 * html[data-vl-espaciado], html[data-vl-facil]): si el visitante lo usa, manda el panel.
 * Marcha atrás: VL_PLANTILLA_REPASO en false, o quitar 'plantilla-repaso' del bucle de functions.php.
 * ============================================================================================================ */


/* ---------- 1 · El hueco blanco de 40 px entre la cabecera y la primera franja ----------
   Medido: Woodmart pone «padding-top: 40px» (y 40 abajo) a main.wd-content-layout. En la web viva la primera franja
   empieza 40 px por debajo de la cabecera: a 375/850 la barra de iconos acaba en 153 y el hero empieza en 193; a 1440 la
   cabecera acaba en 76 y el hero empieza en 116. En el dibujo (marco.html y capturas de 07) la franja lila va pegada
   a la cabecera: 0 px. Pasa en los 5 registros por tipo, en resultados de la búsqueda (11331, con y sin triaje),
   en la portada (10499), en entrar (10978), en el registro de ópticas (10987), en la venta de la ficha (11332, sin
   sesión) y en los listados por localidad (medido en /single-location/espana/valencia/). Solo se quita cuando el
   primer bloque es una pantalla del camino B; las páginas de WPBakery no se tocan (comprobado en el triaje, 10547). */
html body .wd-content-layout:has(> .wd-content-area > .entry-content > .vl-plantilla-entrar:first-child),
html body .wd-content-layout:has(> .wd-content-area > .entry-content > .vl-plantilla-alta-venta:first-child),
html body .wd-content-layout:has(> .wd-content-area > .entry-content > .vl-hero:first-child),
html body .wd-content-layout:has(> .wd-content-area > .entry-content > .vl-confirmacion:first-child),
html body .wd-content-layout:has(> .vl-plantilla-portada > .vl-hero:first-child) {
	padding-top: 0;
}
/* Y abajo: en los 5 registros la franja lila es el último bloque, y entre ella y el pie quedaban 40 px en blanco
   (medido: hero acaba en 2671, pie en 2711, a 375 en /registro-profesional-visionlovers/). En el dibujo, lila y pie se tocan. */
html body .wd-content-layout:has(> .wd-content-area > .entry-content > .vl-plantilla-entrar > .vl-hero--registro:last-child) {
	padding-bottom: 0;
}


/* ---------- 2 · 10 px de más debajo de cada punto de las listas ----------
   Medido: Woodmart da «margin-bottom: 10px» a todo <li> (parts/base.css «:is(ul, ol) li»). En el dibujo las listas
   del sistema ya separan sus puntos con «gap» y el <li> no lleva margen. Resultado en la web viva:
   · registro (.vl-hero__meta, las 3 garantías): 106 px de alto a 1440/850 frente a 86 del dibujo; 129 frente a 109 a 375;
   · «Qué pasa ahora» del triaje (.vl-confirmacion__pasos): 10 px de más entre paso y paso;
   · migas de pan (.vl-migas, «Inicio › Directorio › Resultados»): 38 px de alto frente a 32. */
html body .vl-hero__meta li,
html body .vl-confirmacion__pasos li,
html body .vl-migas li {
	margin-bottom: 0;
}


/* ---------- 3 · «Triaje recibido» (resultados que vienen del triaje): doble margen lateral ----------
   Medido a 375: el bloque va dentro del .container de Woodmart (15 px a cada lado) y además lleva su .vl-container
   (16 px): el texto empieza en x=31 y la columna mide 313 px. En el dibujo empieza en x=16 y mide 343 px (un 9 % más).
   El hero «Resultados de tu búsqueda» al que sustituye ya iba a todo el ancho (base.css hace eso con .vl-hero);
   aquí se hace lo mismo, con el mismo truco (body ya lleva overflow-x:hidden). A 850 y 1440 no cambia nada visible:
   el bloque va centrado en 640 px igual que en el dibujo (x=105 a 850, x=400 a 1440, medido). */
html body .entry-content > .vl-confirmacion.vl-triaje-resultados {
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	width: 100vw;
}


/* ---------- 4 · Barra de 6 iconos: «Mi cuenta» partido en dos líneas ----------
   Medido a 375: cada hueco mide 59,8 px y el enlace lleva 4 px de relleno a cada lado (reparo-a.css G4, letra de 12 px);
   «Mi cuenta» necesita 59,8 px y solo tiene 51,8, así que sale en dos líneas y su icono queda 6 px más arriba que los
   otros cinco (icono a y=4 frente a y=10). En el dibujo las seis etiquetas van en una línea y los iconos a la misma
   altura. Se quita el relleno lateral del enlace (el hueco que se toca sigue midiendo lo mismo), el espaciado de letra
   (0,24 px por letra) y el salto de línea: «Mi cuenta» pasa a medir 57,6 px y cabe. Se mantiene la letra de 12 px de
   la auditoría. Solo entre 360 y 440 px, que es donde se partía (por encima de ~423 px ya cabía); por debajo de 360
   no cabría en una línea y se deja como está. No se aplica con el panel de accesibilidad en «letra» o «espaciado». */
@media (min-width: 360px) and (max-width: 440px) {
	html:not([data-vl-letra]):not([data-vl-espaciado="si"]) body.vl-con-barra-iconos .wd-page-content nav.vl-barra-iconos[aria-label] a {
		padding-inline: 0;
		letter-spacing: 0;
		white-space: nowrap;
	}
}


/* ---------- 5 · Letra de los títulos: la opción B (Manrope) lleva el espaciado apretado ----------
   Medido en el dibujo letra-titulos, opción B (la elegida por Sergio el 24/09): h1 y título del hero con
   letter-spacing -0,8 px a 40 px, h2 con -0,6 px a 30 px (= -0,02em, remate-1-1.css «.vl-letra--manrope»). En la web
   viva la letra ya es Manrope pero el espaciado es «normal»: esa regla solo funcionaba dentro de .vl-letra--manrope,
   una clase que ninguna página lleva. Aquí se aplica a todos los títulos, igual que el dibujo.
   OJO, especificidad a propósito MÍNIMA (:where + etiqueta = 0,0,1): así cualquier título con clase propia que lleve su
   espaciado gana. Caso medido: los títulos del pie son <h2 class="vl-footer__title"> en mayúsculas con 0,12em (pie.css) y
   deben seguir así. Y no se aplica con el panel de accesibilidad en «espaciado» o «lectura fácil». */
:where(html:not([data-vl-espaciado="si"]):not([data-vl-facil="si"])) h1,
:where(html:not([data-vl-espaciado="si"]):not([data-vl-facil="si"])) h2,
:where(html:not([data-vl-espaciado="si"]):not([data-vl-facil="si"])) .vl-hero__title {
	letter-spacing: -.02em;
}


/* ---------- 6 · Registro por tipo: el formulario dentro de la tarjeta «Tus datos» ----------
   El dibujo (registro-por-tipo/index.html) dice que el formulario «lo pinta el plugin con plugins/user-registration.css».
   Pero en la web viva las reglas de ESE fichero pierden contra las del propio plugin (más específicas: «body.user-
   registration-page .user-registration:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid …»). Medido en
   /registro-paciente-visionlovers/ (igual en los 5): se gana con la misma cadena más la tarjeta delante.
   Vale igual para /registros-opticas-visionlovers/ (10987), que mete el MISMO formulario del plugin en su .vl-auth__card y
   tenía los mismos fallos (medido a 375: 2 casillas rotas, campos de 38 px). El formulario de ENTRAR no entra aquí: allí
   las clases .user-registration y .ur-frontend-form van en dos cajas distintas (ver el bloque 7). */

/* 6a · Caja dentro de caja: el formulario llevaba su propia sombra (rgba(17,17,26,.05) 0 4px 16px + 0 8px 32px) y
        esquinas de 8 px dentro de la tarjeta. En el dibujo solo hay una tarjeta. */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) {
	box-shadow: none;
	border: 0;
	border-radius: 0;
	padding: 0;
	background: transparent;
}
/* 6b · Los campos iban metidos 10 px por cada lado (relleno del plugin en .ur-form-grid): a 375 medían 273 px frente a
        293 del dibujo. Sin ese relleno, cuando van dos por fila (desde 769 px) se separan con un hueco de 16 px. */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row {
	column-gap: var(--vl-space-md);
}
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid {
	padding: 0;
	min-width: 0;
}
/* 6c · Etiquetas: peso 500 y color #222 del plugin, con 16 px debajo → peso 600, color de texto de la casa y 8 px
        (plugins/user-registration.css). La letra va con token para que el panel de accesibilidad la pueda agrandar. */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item label:not(.user-registration-error) {
	font-size: var(--vl-font-small);
	line-height: var(--vl-lh-small);
	font-weight: 600;
	color: var(--vl-text);
	margin-bottom: var(--vl-space-sm);
}
/* 6d · Campos: 38 px de alto (con tope de 38), borde de 1 px #e1e1e1 (contraste 1,3:1), letra de 14 px en #383838 →
        como el campo del dibujo (.vl-input): mínimo 48 px, borde de 2 px --vl-border-field (3,1:1, WCAG 1.4.11),
        letra de 17 px en el color de texto. Las esquinas se quedan en 4 px: el plugin las fija con !important
        («.ur-field-item input, .ur-form-grid input») y aquí no se usa !important (va al informe). */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item :is(input[type="text"], input[type="email"], input[type="password"], input[type="tel"], input[type="number"], input[type="url"], input[type="date"], select) {
	height: auto;
	min-height: var(--vl-touch);
	max-height: none;
	padding: 12px var(--vl-space-md);
	border: 2px solid var(--vl-border-field);
	background: var(--vl-bg);
	color: var(--vl-text);
	font-size: var(--vl-font-body);
	line-height: 1.4;
}
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item :is(input[type="text"], input[type="email"], input[type="password"], input[type="tel"], input[type="number"], input[type="url"], input[type="date"], select):focus {
	border-color: var(--vl-secondary);
}
/* 6e · Textos de ayuda bajo el campo («Escribe tu Provincia…», «Este formulario es solo para pacientes…»): 14 px → 15 px. */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item .description {
	font-size: var(--vl-font-small);
	line-height: var(--vl-lh-small);
	color: var(--vl-text-muted);
}
/* 6f · «Tipo de usuario» y «Acepto la Política de Privacidad» salían ROTOS (medido a 375 y a 1440): el recuadro de
        «opción grande» de plugins/user-registration.css se ponía en la <label>, pero el plugin la deja «display: inline»,
        así que el marco de 2 px y 16 px de relleno se montaba encima de la línea de abajo y tachaba el texto. En el HTML
        real la casilla va FUERA de la etiqueta (<li><input><label>), así que el recuadro va en el <li>: casilla y
        texto dentro, 56 px de alto como pide el sistema, y en azul claro cuando está marcada. La etiqueta ocupa todo el
        recuadro, así que se puede pulsar en cualquier parte del texto. */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item :is(.ur-checkbox-list, .ur-radio-list) {
	display: flex;
	align-items: center;
	gap: var(--vl-space-xs);
	min-height: 56px;
	margin: 0 0 var(--vl-space-sm);
	padding: 0 0 0 var(--vl-space-md);
	border: 2px solid var(--vl-border-field);
	border-radius: var(--vl-radius-md);
	background: var(--vl-bg);
	line-height: var(--vl-lh-small);
}
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item :is(.ur-checkbox-list, .ur-radio-list) > label {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: var(--vl-space-md) var(--vl-space-md) var(--vl-space-md) var(--vl-space-sm);
	border: 0;
	border-radius: 0;
	background: transparent;
	cursor: pointer;
}
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item :is(.ur-checkbox-list, .ur-radio-list) > input {
	flex: 0 0 auto;
	margin: 0;
}
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-form-row .ur-form-grid .ur-field-item :is(.ur-checkbox-list, .ur-radio-list):has(> input:checked) {
	border-color: var(--vl-secondary);
	background: var(--vl-secondary-light);
}
/* 6g · Botón de enviar: el plugin encoge su caja («.ur-button-container»: width max-content y 10 px de relleno) y el
        botón mide 102 px, con 15 px y peso 500. En el dibujo es un botón de ancho completo (.vl-btn--block) en los tres
        anchos; peso 600 y letra de 17 px como manda plugins/user-registration.css para este botón. El texto («Enviar»
        frente a «Crear mi cuenta» del dibujo) no se cambia aquí: va en el informe. */
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-button-container {
	width: auto;
	padding-inline: 0;
}
html body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-button-container .ur-submit-button {
	width: 100%;
	min-height: var(--vl-touch);
	padding: 12px var(--vl-space-lg);
	font-size: var(--vl-font-body);
	font-weight: 600;
	line-height: 1.25;
}
html:not([data-vl-espaciado="si"]) body :is(.vl-hero--registro .vl-card--hero, .vl-plantilla-entrar .vl-auth__card) .user-registration.ur-frontend-form:not(.user-registration-MyAccount) .ur-button-container .ur-submit-button {
	letter-spacing: 0; /* el plugin le daba 0,15 px */
}


/* ---------- 7 · Entrar (/login/), comparado con 07-DISENO-TOTAL/03-pantallas/10978-login ----------
   7a · A 375 px la página se salía por la derecha y se cortaba: «Entra en VisionLovers», el texto de debajo y la
        pestaña «Soy profesional» salían cortados (medido: la columna de .vl-auth__container crece a 418 px dentro de una
        caja de 313; ancho real de la página 465 px en una pantalla de 375). Causa: por debajo de 1024 px esa rejilla no
        dice cuánto mide su columna y el navegador la estira hasta lo que ocupe lo más ancho de dentro. Con minmax(0, 1fr)
        la columna no pasa del ancho disponible (probado inyectándolo: 0 elementos fuera de la pantalla).
        Se aplica también a /registros-opticas-visionlovers/, que usa la misma rejilla. */
@media (max-width: 1023px) {
	html body .vl-plantilla-entrar .vl-auth__container {
		grid-template-columns: minmax(0, 1fr);
	}
}
/* 7b · Triple margen lateral: .container de Woodmart (15 px) + .vl-container (16) + .vl-auth__container (16, de
        arreglos.css, pensado para /mi-cuenta/) → a 375 el texto empieza en x=47 y mide 281 px; en el dibujo empieza en
        x=16 y mide 343. A 850: x=55 frente a 24. Se hace como el hero (a todo el ancho) y la rejilla sin relleno propio.
        Solo dentro de las pantallas de entrar/registro del camino B: /mi-cuenta/ no se toca. */
html body .vl-plantilla-entrar > .vl-auth {
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	width: 100vw;
}
html body .vl-plantilla-entrar .vl-auth__container {
	padding-inline: 0;
}
/* 7c · Caja dentro de caja en la tarjeta de entrar: el plugin mete su formulario en otra caja blanca de 520 px como
        máximo, centrada, con sombra y 60 px / 40 px de relleno (40/30 en móvil). En el dibujo solo hay una tarjeta. */
html body .vl-plantilla-entrar .vl-auth__card #user-registration:not(.user-registration-MyAccount) {
	max-width: none;
	margin: 0;
	background: transparent;
}
html body .vl-plantilla-entrar .vl-auth__card #user-registration:not(.user-registration-MyAccount) .ur-frontend-form.login {
	box-shadow: none;
	border: 0;
	border-radius: 0;
	padding: 0;
	background: transparent;
}
/* y sin los 10 px de relleno del plugin a cada lado de los campos (a 375: campos de 289 → 309 px, a lo ancho de la tarjeta) */
html body .vl-plantilla-entrar .vl-auth__card #user-registration:not(.user-registration-MyAccount) .ur-frontend-form .ur-form-row .ur-form-grid {
	padding: 0;
}
/* 7d · Campos de entrar: 38 px de alto y borde de 1 px → mínimo 48 px y borde de 2 px --vl-border-field, como el
        campo del dibujo. El relleno izquierdo lo fija el plugin en línea con !important (deja sitio a su icono): no se toca. */
html body .vl-plantilla-entrar .vl-auth__card #user-registration:not(.user-registration-MyAccount) .ur-frontend-form .ur-form-row .ur-form-grid :is(input[type="text"], input[type="email"], input[type="password"]) {
	height: auto;
	min-height: var(--vl-touch);
	max-height: none;
	padding-top: 12px;
	padding-bottom: 12px;
	padding-right: var(--vl-space-md);
	border: 2px solid var(--vl-border-field);
	color: var(--vl-text);
	font-size: var(--vl-font-body);
	line-height: 1.4;
}

/* 26/09 (revisión de diseño) · El hueco de 40 px de Woodmart (main.wd-content-layout) también en las páginas hechas con WPBakery cuya
   primera franja es un hero (directorio 11333, triaje 10547, formulario del triaje 10651, reserva 11385; medido: hero en y=193 con la
   barra acabando en 153) y en la ficha del centro (single-at_biz_dir, migas en 243). El dibujo lleva el hero pegado. */
html body.page-id-11333 main.wd-content-layout,
html body.page-id-10547 main.wd-content-layout,
html body.page-id-10651 main.wd-content-layout,
html body.page-id-11385 main.wd-content-layout,
html body.single-at_biz_dir main.wd-content-layout { padding-top: 0; }

/* 26/09 (revisión de diseño): el «prefooter» de la demo de Woodmart (9 marcas con imágenes rotas + franja vacía de 40 px) antes del pie de
   /membership-pricing/ (11096). Va aquí porque esta hoja carga en todas las páginas (plantilla-tienda.css solo en carrito y pago). */
html body.page-id-11096 .wd-prefooter { display: none; }
