/*
Theme Name:   Libro Diario
Description:  Tema sobrio para ejercicios de contabilidad. Pensado para el plugin Asientos Contables: índice de ejercicios, ficha con el enunciado junto al libro diario y estilos coordinados con el diario, el mayor y la balanza.
Version:      1.1.0
Author:       Alberto Pérez Velázquez
Requires at least: 5.8
Tested up to: 6.8
Requires PHP: 7.4
License:      GNU General Public License v2 or later
License URI:  https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  libro-diario
Tags:         education, one-column, two-columns, custom-logo, custom-menu
*/

/* ---------- Fuentes (locales, licencia OFL) ---------- */
@font-face { font-family: "Plex Sans"; src: url("assets/fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Plex Sans"; src: url("assets/fonts/ibm-plex-sans-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Plex Sans"; src: url("assets/fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "Plex Sans"; src: url("assets/fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); font-weight: 600 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Plex Serif"; src: url("assets/fonts/ibm-plex-serif-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Plex Serif"; src: url("assets/fonts/ibm-plex-serif-latin-600-normal.woff2") format("woff2"); font-weight: 600 700; font-style: normal; font-display: swap; }

/* ---------- Tokens ---------- */
:root {
	--papel: #f6f4ef;
	--hoja: #ffffff;
	--tinta: #1b1f24;
	--tenue: #5d646d;
	--linea: #d8d3c8;
	--linea-suave: #e9e5dc;
	--acento: #1f5a46;
	--acento-hover: #174535;
	--acento-claro: #e7efe9;
	--rojo: #a8322d;
	--sans: "Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--serif: "Plex Serif", Georgia, "Times New Roman", serif;
	--radio: 4px;
	--ancho: 1120px;
	--ancho-amplio: 1320px;
	--texto: 720px;
	--gutter: clamp(16px, 4vw, 40px);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
	margin: 0;
	background: var(--papel);
	color: var(--tinta);
	font-family: var(--sans);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}
.principal { flex: 1; }
img, video, iframe { max-width: 100%; height: auto; }
a { color: var(--acento); text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { color: var(--acento-hover); }
:focus-visible { outline: 2px solid var(--acento); outline-offset: 2px; }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 600; line-height: 1.2; letter-spacing: -.005em; margin: 1.6em 0 .5em; }
h1 { font-size: clamp(1.9rem, 1.4rem + 1.6vw, 2.6rem); }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.2rem; }
p, ul, ol, table, figure, blockquote { margin: 0 0 1.1em; }
hr { border: 0; border-top: 1px solid var(--linea); margin: 2em 0; }
.tenue { color: var(--tenue); }

.saltar { position: absolute; left: -999px; top: 8px; background: var(--tinta); color: #fff; padding: .5em 1em; z-index: 100; border-radius: var(--radio); }
.saltar:focus { left: 8px; color: #fff; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.contenedor { width: 100%; max-width: calc(var(--ancho) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter); }
.contenedor-ancho,
.ld-ancho .cabecera .contenedor,
.ld-ancho .pie .contenedor { max-width: calc(var(--ancho-amplio) + 2 * var(--gutter)); }
.seccion { padding-top: clamp(2rem, 5vw, 3.5rem); padding-bottom: clamp(2.5rem, 6vw, 4.5rem); }

.sobretitulo {
	color: var(--acento);
	font-family: var(--sans);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .09em;
	margin: 0 0 .5em;
	text-transform: uppercase;
}

/* ---------- Cabecera ---------- */
.cabecera { background: var(--hoja); border-bottom: 1px solid var(--linea); position: relative; z-index: 10; }
.cabecera-fila { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 68px; }
.marca { display: flex; align-items: center; gap: .75rem; min-width: 0; }
.marca .custom-logo { display: block; max-height: 44px; width: auto; }
.marca-sello {
	display: grid;
	place-items: center;
	flex: none;
	width: 36px;
	height: 36px;
	border: 1.5px solid var(--acento);
	border-radius: var(--radio);
	color: var(--acento);
	font-family: var(--serif);
	font-size: 1.15rem;
	font-weight: 600;
	box-shadow: inset 0 -4px 0 var(--acento-claro);
}
.marca-nombre { color: var(--tinta); display: block; font-family: var(--serif); font-size: 1.15rem; font-weight: 600; line-height: 1.2; text-decoration: none; }
.marca-nombre:hover { color: var(--acento); }
.marca-lema { color: var(--tenue); display: block; font-size: .8rem; line-height: 1.3; }

.navegacion .menu { display: flex; flex-wrap: wrap; gap: .25rem; list-style: none; margin: 0; padding: 0; }
.navegacion a { border-radius: var(--radio); color: var(--tinta); display: block; font-size: .95rem; padding: .45em .8em; text-decoration: none; }
.navegacion a:hover { background: var(--papel); color: var(--tinta); }
.navegacion .current-menu-item > a, .navegacion .current-menu-ancestor > a, .navegacion .current_page_item > a { color: var(--acento); font-weight: 500; }
.navegacion .sub-menu { display: none; list-style: none; margin: 0; padding: .35rem; position: absolute; background: var(--hoja); border: 1px solid var(--linea); border-radius: var(--radio); min-width: 200px; box-shadow: 0 6px 20px rgba(27, 31, 36, .08); }
.navegacion li { position: relative; }
.navegacion li:hover > .sub-menu, .navegacion li:focus-within > .sub-menu { display: block; }

.menu-boton { display: none; align-items: center; gap: .5em; background: none; border: 1px solid var(--linea); border-radius: var(--radio); color: var(--tinta); cursor: pointer; font: inherit; font-size: .9rem; padding: .4em .75em; }
.menu-boton-icono, .menu-boton-icono::before, .menu-boton-icono::after { display: block; width: 16px; height: 1.5px; background: currentColor; position: relative; transition: transform .15s; }
.menu-boton-icono::before, .menu-boton-icono::after { content: ""; position: absolute; left: 0; }
.menu-boton-icono::before { top: -5px; }
.menu-boton-icono::after { top: 5px; }
.menu-boton[aria-expanded="true"] .menu-boton-icono { background: transparent; }
.menu-boton[aria-expanded="true"] .menu-boton-icono::before { transform: translateY(5px) rotate(45deg); }
.menu-boton[aria-expanded="true"] .menu-boton-icono::after { transform: translateY(-5px) rotate(-45deg); }

@media (max-width: 760px) {
	.menu-boton { display: inline-flex; }
	.navegacion { display: none; position: absolute; left: 0; right: 0; top: 100%; background: var(--hoja); border-bottom: 1px solid var(--linea); padding: .5rem var(--gutter) 1rem; }
	.navegacion.abierta { display: block; }
	.navegacion .menu { flex-direction: column; }
	.navegacion .sub-menu { position: static; display: block; border: 0; box-shadow: none; padding: 0 0 0 1rem; }
	.marca-lema { display: none; }
}

/* ---------- Portada ---------- */
.portada { background: var(--hoja); border-bottom: 1px solid var(--linea); padding: clamp(2.5rem, 7vw, 5rem) 0 clamp(2rem, 5vw, 3.5rem); }
.portada-titulo { margin: 0 0 .4em; max-width: 18ch; font-size: clamp(2.1rem, 1.5rem + 2.4vw, 3.2rem); }
.portada-texto { color: var(--tenue); font-size: 1.1rem; max-width: 60ch; }
.portada-texto > :last-child { margin-bottom: 0; }

.seccion-encabezado { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; border-bottom: 2px solid var(--tinta); padding-bottom: .5rem; margin-bottom: 0; }
.seccion-encabezado h2 { margin: 0; }
.enlace-flecha { font-size: .9rem; font-weight: 500; text-decoration: none; white-space: nowrap; }
.enlace-flecha::after { content: " →"; }

/* ---------- Índice de ejercicios ---------- */
.indice { list-style: none; margin: 0; padding: 0; }
.encabezado-pagina + .indice { border-top: 2px solid var(--tinta); }
.indice-fila {
	display: grid;
	grid-template-columns: 3rem 1fr auto;
	gap: 1rem;
	align-items: baseline;
	border-bottom: 1px solid var(--linea);
	padding: 1rem .25rem;
	position: relative;
	transition: background .12s;
}
.indice-fila:hover { background: var(--hoja); }
.indice-num { color: var(--tenue); font-family: var(--serif); font-size: 1.05rem; font-variant-numeric: tabular-nums; text-align: right; }
.indice-titulo { color: var(--tinta); font-family: var(--serif); font-size: 1.15rem; font-weight: 600; text-decoration: none; }
.indice-titulo::after { content: ""; position: absolute; inset: 0; }
.indice-fila:hover .indice-titulo { color: var(--acento); }
.indice-extracto { color: var(--tenue); font-size: .92rem; margin: .2em 0 0; max-width: 70ch; }
.indice-dato { color: var(--tenue); font-size: .85rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 560px) {
	.indice-fila { grid-template-columns: 2rem 1fr; }
	.indice-dato { grid-column: 2; margin-top: -.5rem; }
}

.vacio, .aviso { color: var(--tenue); padding: 1.5rem 0; }
.aviso { background: var(--hoja); border: 1px solid var(--linea); border-radius: var(--radio); padding: 1rem 1.25rem; }

/* ---------- Encabezados de página ---------- */
.encabezado-pagina { margin-bottom: 1.75rem; }
.encabezado-pagina h1 { margin: 0; }
.encabezado-pagina .descripcion { color: var(--tenue); margin-top: .5rem; }

/* ---------- Ficha del ejercicio ---------- */
.migas { color: var(--tenue); display: flex; flex-wrap: wrap; gap: .5em; font-size: .85rem; padding: 1.5rem 0 1rem; }
.migas a { color: var(--tenue); text-decoration: none; }
.migas a:hover { color: var(--acento); text-decoration: underline; }

.ficha { display: grid; grid-template-columns: minmax(280px, 360px) minmax(0, 1fr); gap: clamp(1.5rem, 3vw, 2.5rem); align-items: start; padding-bottom: 3rem; }
.ficha-enunciado-interior { position: sticky; top: 1.5rem; }
.admin-bar .ficha-enunciado-interior { top: calc(32px + 1.5rem); }
.ficha-titulo { font-size: clamp(1.5rem, 1.2rem + 1vw, 1.9rem); margin: 0 0 .75em; }
.ficha-dato { border-top: 1px solid var(--linea); color: var(--tenue); font-size: .85rem; margin-top: 1.25rem; padding-top: .75rem; }

.ficha-trabajo {
	background: var(--hoja);
	border: 1px solid var(--linea);
	border-radius: var(--radio);
	box-shadow: 0 1px 0 var(--linea-suave), 0 10px 30px -18px rgba(27, 31, 36, .18);
	min-width: 0;
	padding: .25rem clamp(1rem, 2.5vw, 1.75rem) 1.5rem;
}
@media (max-width: 960px) {
	.ficha { grid-template-columns: 1fr; }
	.ficha-enunciado-interior { position: static; }
}
@media (max-width: 560px) {
	.ficha-trabajo { margin: 0 calc(-1 * var(--gutter)); border-left: 0; border-right: 0; border-radius: 0; padding-left: var(--gutter); padding-right: var(--gutter); }
}

.vecinos { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; border-top: 1px solid var(--linea); padding: 1.5rem 0 3rem; }
.vecino { color: var(--tinta); font-family: var(--serif); font-weight: 600; text-decoration: none; }
.vecino span { color: var(--tenue); display: block; font-family: var(--sans); font-size: .75rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.vecino:hover { color: var(--acento); }
.vecino-next { grid-column: 2; text-align: right; }

/* ---------- Coordinación con el plugin Asientos Contables ---------- */
body .asc-app,
body .asc-gestor {
	--asc-borde: var(--linea);
	--asc-borde-fuerte: var(--tinta);
	--asc-texto: var(--tinta);
	--asc-tenue: var(--tenue);
	--asc-fondo: var(--hoja);
	--asc-fondo-2: var(--papel);
	--asc-acento: var(--acento);
	--asc-mal: var(--rojo);
	font-family: var(--sans);
	margin: 0;
}
body .asc-app .asc-tab.asc-activa { border-bottom-color: var(--acento); color: var(--tinta); }
body .asc-gestor .asc-btn.asc-prim:hover,
body .asc-app .asc-btn.asc-prim:hover { background: var(--acento-hover); border-color: var(--acento-hover); filter: none; }
body .asc-app .asc-t-nombre, body .asc-app .asc-num { font-family: var(--serif); }
body .asc-app table { margin: 0; }
.ficha-trabajo .asc-app .asc-barra { margin-left: calc(-1 * clamp(1rem, 2.5vw, 1.75rem)); margin-right: calc(-1 * clamp(1rem, 2.5vw, 1.75rem)); padding: .5rem clamp(1rem, 2.5vw, 1.75rem) 0; }
@media (max-width: 560px) {
	.ficha-trabajo .asc-app .asc-barra { margin-left: calc(-1 * var(--gutter)); margin-right: calc(-1 * var(--gutter)); padding-left: var(--gutter); padding-right: var(--gutter); }
}
.asc-enunciado { border-left-color: var(--acento); }
.contenido-ancho > .asc-app { background: var(--hoja); border: 1px solid var(--linea); border-radius: var(--radio); padding: .25rem 1.25rem 1.25rem; }

body .asc-gestor h2 { font-family: var(--serif); }
body .asc-gestor .asc-g-msg { font-family: var(--sans); }
.asc-g-editar { font-weight: 500; }

/* ---------- Contenido editorial ---------- */
.contenido { max-width: var(--texto); }
.contenido-ancho { max-width: none; }
.contenido > :first-child { margin-top: 0; }
.contenido-compacto { font-size: .98rem; }
.contenido-compacto ol, .contenido-compacto ul { padding-left: 1.25em; }
.contenido-compacto li { margin-bottom: .45em; }
.contenido blockquote { border-left: 3px solid var(--acento); color: var(--tenue); margin-left: 0; padding-left: 1rem; }
.contenido table { border-collapse: collapse; width: 100%; font-variant-numeric: tabular-nums; font-size: .95rem; }
.contenido th, .contenido td { border-bottom: 1px solid var(--linea); padding: .5em .6em; text-align: left; }
.contenido th { border-bottom: 2px solid var(--tinta); font-weight: 600; }
.contenido code { background: var(--hoja); border: 1px solid var(--linea-suave); border-radius: 3px; font-size: .9em; padding: .1em .3em; }
.contenido .alignwide, .contenido .alignfull { max-width: none; }
.destacada { margin: 0 0 2rem; }
.destacada img { border-radius: var(--radio); display: block; }
.wp-caption-text, figcaption { color: var(--tenue); font-size: .85rem; margin-top: .4em; }
.alignleft { float: left; margin: 0 1.5em 1em 0; }
.alignright { float: right; margin: 0 0 1em 1.5em; }
.aligncenter { display: block; margin-left: auto; margin-right: auto; }

/* ---------- Listados ---------- */
.lista { border-top: 2px solid var(--tinta); }
.lista-item { border-bottom: 1px solid var(--linea); padding: 1.25rem 0; }
.lista-item h2 { font-size: 1.3rem; margin: 0 0 .3em; }
.lista-item h2 a { color: var(--tinta); text-decoration: none; }
.lista-item h2 a:hover { color: var(--acento); }
.lista-item p:last-child { color: var(--tenue); margin: 0; }

.pagination, .post-navigation { margin-top: 2rem; }
.nav-links { display: flex; flex-wrap: wrap; gap: .35rem; }
.page-numbers { border: 1px solid var(--linea); border-radius: var(--radio); color: var(--tinta); padding: .35em .75em; text-decoration: none; background: var(--hoja); }
.page-numbers.current { background: var(--tinta); border-color: var(--tinta); color: #fff; }
.post-navigation .nav-links { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--linea); padding-top: 1.25rem; }
.post-navigation .nav-next { grid-column: 2; text-align: right; }
.post-navigation a { color: var(--tinta); font-family: var(--serif); font-weight: 600; text-decoration: none; }
.post-navigation a span { display: block; color: var(--tenue); font-family: var(--sans); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }

/* ---------- Formularios y botones ---------- */
.boton, button.boton, input[type="submit"], .wp-block-button__link {
	background: var(--acento);
	border: 1px solid var(--acento);
	border-radius: var(--radio);
	color: #fff;
	cursor: pointer;
	display: inline-block;
	font: inherit;
	font-size: .95rem;
	font-weight: 500;
	padding: .55em 1.1em;
	text-decoration: none;
}
.boton:hover, input[type="submit"]:hover, .wp-block-button__link:hover { background: var(--acento-hover); border-color: var(--acento-hover); color: #fff; }
.boton-sec { background: var(--hoja); color: var(--tinta); border-color: var(--linea); }
.boton-sec:hover { background: var(--papel); color: var(--tinta); border-color: var(--tinta); }
.error-404 .boton { margin: 0 .4rem .5rem 0; }

input[type="text"], input[type="email"], input[type="url"], input[type="search"], input[type="password"], textarea, select {
	background: var(--hoja);
	border: 1px solid var(--linea);
	border-radius: var(--radio);
	color: var(--tinta);
	font: inherit;
	padding: .5em .7em;
	max-width: 100%;
}
input:focus, textarea:focus, select:focus { border-color: var(--acento); outline: none; box-shadow: 0 0 0 3px var(--acento-claro); }
.search-form { display: flex; gap: .5rem; max-width: 460px; }
.search-form label { flex: 1; }
.search-form .search-field { width: 100%; }

/* ---------- Comentarios ---------- */
.comentarios { border-top: 1px solid var(--linea); max-width: var(--texto); padding: 2rem 0 3rem; }
.comentarios-lista { list-style: none; padding: 0; }
.comentarios-lista .children { list-style: none; padding-left: 1.5rem; }
.comment-body { border-bottom: 1px solid var(--linea-suave); padding: 1rem 0; }
.comment-meta { font-size: .85rem; color: var(--tenue); }
.comment-author .avatar { border-radius: 50%; vertical-align: middle; margin-right: .5rem; }
.comment-form textarea { width: 100%; }
.comment-form label { display: block; font-size: .9rem; margin-bottom: .25rem; }

/* ---------- Pie ---------- */
.pie { background: var(--hoja); border-top: 1px solid var(--linea); color: var(--tenue); font-size: .9rem; margin-top: auto; }
.pie-widgets { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.5rem 2rem; padding: 2rem 0 .5rem; }
.pie-widgets .widget-title { font-family: var(--sans); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--tinta); margin: 0 0 .6rem; }
.pie-widgets ul { list-style: none; padding: 0; }
.pie-fila { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding: 1.5rem 0; }
.pie-sitio { display: flex; gap: .75rem; margin: 0; }
.pie-sitio strong { color: var(--tinta); font-family: var(--serif); font-weight: 600; }
.menu-pie { display: flex; flex-wrap: wrap; gap: .25rem 1.25rem; list-style: none; margin: 0; padding: 0; }
.menu-pie a { color: var(--tenue); text-decoration: none; }
.menu-pie a:hover { color: var(--acento); }

/* ---------- Impresión ---------- */
@media print {
	body { background: #fff; }
	.cabecera, .pie, .migas, .vecinos, .comentarios { display: none !important; }
	.ficha { display: block; }
	.ficha-trabajo { border: 0; box-shadow: none; padding: 0; margin-top: 1.5rem; }
	.ficha-enunciado-interior { position: static; }
}
