/*
Theme Name: Lot Opens
Theme URI: https://lotopens.com/
Description: Child theme de bloques sobre Twenty Twenty-Five para Lot Opens. Toda la marca vive en theme.json y en este archivo, versionados en git; nada de CSS guardado en la base de datos de un builder. El contenido de los posts es Gutenberg nativo, que es lo que produce el pipeline.
Author: Alexander Gonzalez
Template: twentytwentyfive
Version: 1.0
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 7.4
Text Domain: lotopens
*/

/* El grueso de los tokens esta en theme.json. Aqui solo lo que theme.json no
   puede expresar: estados, detalles tipograficos y los patrones de contenido
   que se repiten en las 283 piezas (tablas de tarifas, FAQ, dato con emisor). */

:root {
	--lotopens-shadow: 0 1px 2px rgba(22, 32, 27, .07), 0 8px 24px rgba(22, 32, 27, .07);
	--lotopens-radius: 10px;
}

/* --- Legibilidad de articulo largo ------------------------------------- */

.entry-content {
	font-size: 1.125rem;
	line-height: 1.65;
}

/* Medida de lectura, SOLO en articulos y paginas de texto corrido. Aplicada a
   todo .entry-content pisaba el ancho que el layout de bloques da a los
   parrafos de la portada, y el subtitulo del hero salia mas ancho que su
   propio titular y desalineado con los botones. */
body:not(.home) .entry-content > p,
body:not(.home) .entry-content > .wp-block-list {
	max-width: 68ch;
}

.entry-content h2 {
	margin-top: 2.4em;
	margin-bottom: .6em;
	letter-spacing: -.01em;
}

.entry-content h3 {
	margin-top: 1.8em;
	margin-bottom: .5em;
}

/* Enlaces del cuerpo: subrayado fino que no compite con el texto. */
.entry-content a:where(:not(.wp-element-button)) {
	color: var(--wp--preset--color--link);
	text-decoration-thickness: 1px;
	text-underline-offset: .18em;
}

.entry-content a:where(:not(.wp-element-button)):hover {
	color: var(--wp--preset--color--accent-dark);
}

/* --- Tablas de tarifas -------------------------------------------------- */
/* Cada pieza lleva al menos una, y llegan del pipeline como <table> pelada
   (functions.php les pone el figure). Los selectores atacan la tabla directa
   para que se vean bien aunque el envoltorio falte. */

.entry-content .wp-block-table,
.entry-content figure.wp-block-table {
	overflow-x: auto;
	margin-left: 0;
	margin-right: 0;
}

.entry-content table {
	border-collapse: collapse;
	width: 100%;
	font-size: .95rem;
	line-height: 1.45;
}

/* Cinco columnas en una pantalla de 390px dan celdas de 70px y una palabra por
   linea. Con un ancho minimo la tabla se sale de la caja y la caja la
   desplaza: se lee deslizando, y el documento no se mueve. */
@media (max-width: 782px) {
	.entry-content table {
		min-width: 38rem;
	}
}

.entry-content table :is(th, td) {
	border: 1px solid #d8e0da;
	padding: .65em .8em;
	vertical-align: top;
	text-align: left;
}

.entry-content table th {
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
}

.entry-content table tbody tr:nth-child(even) td {
	background: #f7faf8;
}

/* La primera columna es el nombre del modo, garaje u operador: no debe
   partirse en una palabra por linea. */
.entry-content table :is(th, td):first-child {
	min-width: 11ch;
}

/* --- Cita y dato con emisor -------------------------------------------- */
/* La barra de calidad exige emisor y fecha en cada cifra. Este bloque le da
   forma visible al "according to Allegiant Stadium, verified September 2026". */

.entry-content .wp-block-quote {
	border-left: 3px solid var(--wp--preset--color--accent);
	padding-left: 1.1em;
	margin-left: 0;
	font-style: normal;
	color: var(--wp--preset--color--muted);
}

.entry-content .wp-block-quote cite {
	display: block;
	margin-top: .5em;
	font-size: .9rem;
	font-style: normal;
}

/* --- FAQ de Yoast ------------------------------------------------------- */

.schema-faq-section {
	border-top: 1px solid #dde5df;
	padding: 1.1em 0;
}

.schema-faq-question {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
	font-size: 1.05rem;
	color: var(--wp--preset--color--primary);
	margin-bottom: .4em;
}

.schema-faq-answer {
	display: block;
	color: var(--wp--preset--color--contrast);
}

/* --- CTA de afiliado ---------------------------------------------------- */
/* La clase la emite tools/_cta.py, que ya trae estilos inline (no <style>, que
   esta prohibido en post_content). Esto solo ajusta lo que el inline no cubre:
   el ancho de sus parrafos, que heredarian el max-width de 68ch del articulo.
   Si algun dia se quitan los inline de _cta.py, el bloque sigue presentable. */

.lo-booking-cta {
	border-radius: var(--lotopens-radius);
	margin: 2.2em 0;
}

.entry-content .lo-booking-cta p {
	max-width: none;
}

.lo-booking-cta a[rel~="sponsored"] {
	font-family: var(--wp--preset--font-family--heading);
}

/* --- Bloques a sangre --------------------------------------------------- */
/* No hace falta ningun hack con vw: <main> no lleva ancho maximo, asi que la
   regla nativa de WordPress para .has-global-padding > .alignfull ya lleva el
   hero al ancho del viewport. Usar width:100vw ademas metia el ancho de la
   barra de scroll y provocaba desbordamiento horizontal, que es justo lo que
   rompe el movil. Solo queda la red de seguridad contra desbordes. */

img,
iframe,
video,
pre {
	max-width: 100%;
	height: auto;
}

/* --- Cabecera ----------------------------------------------------------- */

/* "Lot Opens" no debe partirse en dos lineas dentro del flex. */
.wp-block-site-title {
	white-space: nowrap;
}

.wp-block-site-title a {
	color: var(--wp--preset--color--primary);
	text-decoration: none;
	font-family: var(--wp--preset--font-family--heading);
}

.wp-site-blocks > header .wp-block-navigation a {
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.wp-site-blocks > header .wp-block-navigation a:hover {
	color: var(--wp--preset--color--accent-dark);
	text-decoration: underline;
	text-underline-offset: .25em;
}

/* --- Pie ---------------------------------------------------------------- */

.wp-site-blocks > footer a {
	color: var(--wp--preset--color--base);
	text-decoration: none;
	opacity: .88;
}

.wp-site-blocks > footer a:hover {
	opacity: 1;
	text-decoration: underline;
	text-underline-offset: .25em;
}

/* Listas de enlaces del pie: columnas de navegacion, no vinetas. */
.wp-site-blocks > footer .wp-block-list.is-style-none {
	list-style: none;
	padding-left: 0;
	margin: 0;
}

.wp-site-blocks > footer .wp-block-list.is-style-none li {
	margin: 0 0 .45em;
}

/* Los parrafos del pie NO llevan max-width propio, a proposito. WordPress emite
   para todo hijo de un contenedor constrained:

     .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){
       max-width: var(--wp--style--global--content-size);
       margin-left: auto !important; margin-right: auto !important; }

   Con los margenes en auto e !important, un max-width propio no alinea nada:
   solo estrecha la caja, y el auto la recentra dentro del hueco. Eso dejaba el
   pie con tres bordes izquierdos distintos (149, 359 y 280 px a 1280 de ancho),
   y el parrafo del nombre, en cuerpo grande, desbordaba los 720px y se salia
   por la izquierda. Forzar margin-left:0 tampoco vale: alinea al borde del
   padding (24px) y deja las columnas descolgadas en 280.
   Dejando que el layout aplique la misma anchura a todos, los tres bloques
   comparten borde. La medida de lectura del pie la da ya el contentSize. */

/* --- Movil -------------------------------------------------------------- */
/* El grid de bloques apila solo por debajo de 782px. Entre 782 y 900 las tres
   tarjetas y el grid de guias quedan demasiado estrechos, y el hero a sangre
   necesita menos aire vertical en pantallas pequenas. */

@media (max-width: 900px) {
	.wp-block-post-template.is-layout-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	/* wp-block-columns es flex: grid-template-columns no le hace nada. */
	.wp-block-columns:not(.is-not-stacked-on-mobile) {
		flex-wrap: wrap;
	}

	.wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
		flex-basis: calc(50% - .75rem) !important;
		flex-grow: 1;
	}
}

@media (max-width: 660px) {
	.wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
		flex-basis: 100% !important;
	}
}

@media (max-width: 782px) {
	.wp-site-blocks main > .alignfull,
	.wp-site-blocks main .wp-block-post-content > .alignfull {
		padding-top: 3.2rem !important;
		padding-bottom: 3.2rem !important;
	}

	.wp-block-post-template.is-layout-grid {
		grid-template-columns: 1fr;
	}

	/* Las columnas del pie apiladas necesitan separacion propia. */
	.wp-site-blocks > footer .wp-block-column + .wp-block-column {
		margin-top: 1.6rem;
	}

	.entry-content {
		font-size: 1.0625rem;
	}

	/* La tabla scrollea dentro de su caja; el documento nunca se mueve en X. */
	.entry-content table {
		font-size: .9rem;
	}

	.entry-content table :is(th, td) {
		padding: .55em .65em;
	}
}

@media (max-width: 600px) {
	.wp-block-site-title {
		font-size: 1.15rem;
	}

	.entry-content table :is(th, td):first-child {
		min-width: 9ch;
	}
}

/* --- Accesibilidad ------------------------------------------------------ */

:where(a, button, input, select, textarea):focus-visible {
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: 2px;
}

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