/* =========================================================================
   ADG Directorio · Listado de despachos
   Valores tomados del prototipo Plantilla_Nivel2_Especialidad.html
   Fuente única de la paleta: claude/sistema-de-diseno-divi.md
   Si se cambia un color en Divi, hay que replicarlo aquí a mano.
   ====================================================================== */

.adg-listado {
	--adg-ink: #1c1d24;
	--adg-indigo: #26314a;
	--adg-indigo-2: #374663;
	--adg-red: #8c2733;
	--adg-red-hi: #a5344a;
	--adg-red-ink: #6d1c2a;
	--adg-red-soft: #b25563;
	--adg-brass: #a97e42;
	--adg-brass-lite: #c99b5e;
	--adg-paper-2: #f4eee6;
	--adg-line: #dbd2c4;
	--adg-white: #fff;
	--adg-note-bg: #fbf3e4;
	--adg-note-line: #e6cfa3;
	--adg-mute: #8a8069;
	--adg-shadow: 0 1px 2px rgba(26, 31, 43, .05), 0 8px 28px rgba(26, 31, 43, .08);
	--adg-shadow-lg: 0 12px 48px rgba(26, 31, 43, .16);
	--adg-r: 14px;
	--adg-serif: "Georgia", "Times New Roman", serif;
}

/* -------------------------------------------------------------------------
   Neutralización de estilos heredados
   Divi aplica márgenes, padding y line-height propios a p, h3, a y ul dentro
   del contenido. Esas reglas ganan por especificidad y estiran la tarjeta.
   Este bloque devuelve el control al CSS de la tarjeta. No toca nada fuera
   de .adg-listado.
   ---------------------------------------------------------------------- */

.adg-listado,
.adg-listado * {
	box-sizing: border-box;
}

.adg-listado p,
.adg-listado h3,
.adg-listado span,
.adg-listado div,
.adg-listado article {
	margin: 0;
	padding: 0;
	line-height: 1.4;
}

.adg-listado a {
	line-height: 1.4;
}

.adg-listado h3 {
	font-size: inherit;
	color: inherit;
	padding-bottom: 0;
}

/* Divi añade padding-bottom a los párrafos del contenido. */
.adg-listado p:last-of-type {
	padding-bottom: 0;
}

/* ---------- Contador ---------- */

.adg-listado .adg-count {
	font-size: 13px;
	color: var(--adg-mute);
	margin: 0 0 10px;
}

/* ---------- Lista ---------- */

.adg-listado .adg-firm-list {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

/* ---------- Tarjeta ---------- */

.adg-listado .adg-firm {
	display: grid;
	grid-template-columns: 104px 1fr auto;
	gap: 18px;
	background: var(--adg-white);
	border: 1px solid var(--adg-line);
	border-radius: var(--adg-r);
	padding: 18px 20px;
	box-shadow: var(--adg-shadow);
	transition: .16s;
}

.adg-listado .adg-firm:hover {
	border-color: var(--adg-red-soft);
	box-shadow: var(--adg-shadow-lg);
}

.adg-listado .adg-firm.adg-premium {
	border-color: var(--adg-brass);
	background: linear-gradient(180deg, #fffdf9, #fff);
	box-shadow: 0 2px 4px rgba(169, 126, 66, .1), 0 12px 34px rgba(169, 126, 66, .13);
}

/* ---------- Logo en marco (1.9.6) ----------
   Marco igual para todos. El tamaño del logo lo calcula el plugin
   (ancho en % del marco, peso visual igualado); aquí solo el marco.
   El logo de texto ajusta su letra al ancho del marco (unidades cqw). */

.adg-listado .adg-logo {
	width: 104px;
	height: 64px;
	box-sizing: border-box;
	border: 1px solid var(--adg-line);
	border-radius: 10px;
	background: var(--adg-white);
	display: grid;
	place-items: center;
	overflow: hidden;
	container-type: inline-size;
}

.adg-listado .adg-logo img {
	display: block;
	height: auto;
	max-width: none;
}

.adg-listado .adg-logo-marco img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.adg-listado .adg-logo-txt {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	line-height: 1;
}

.adg-listado .adg-logo-ap {
	font-family: var(--adg-serif);
	font-weight: 400;
	text-transform: uppercase;
	color: var(--adg-indigo);
	font-size: min(17px, calc(84cqw / (var(--adg-n) * .74)));
	letter-spacing: .01em;
	white-space: nowrap;
}

.adg-listado .adg-logo-ab {
	margin-top: 5cqw;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--adg-brass);
	font-size: max(6px, 6.4cqw); /* 6 px mínimo en los marcos pequeños (1.9.7) */
	letter-spacing: .32em;
	margin-right: -.32em;
}

.adg-listado .adg-logo-ab::before {
	content: "";
	display: block;
	width: 27cqw;
	height: 1px;
	margin: 0 auto 3.5cqw;
	background: var(--adg-brass-lite);
	transform: translateX(-.16em);
}

/* ---------- Cuerpo ---------- */

.adg-listado .adg-body {
	min-width: 0;
}

.adg-listado .adg-nm {
	font-family: var(--adg-serif);
	font-size: 17px;
	font-weight: 600;
	line-height: 1.2;
	margin: 0 0 3px;
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.adg-listado .adg-nm a {
	color: var(--adg-ink);
	text-decoration: none;
}

.adg-listado .adg-nm a:hover {
	color: var(--adg-red);
}

.adg-listado .adg-plate {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .6px;
	text-transform: uppercase;
	color: #6d4a12;
	background: var(--adg-note-bg);
	border: 1px solid var(--adg-note-line);
	padding: 2px 8px;
	border-radius: 5px;
}

/* Sello «Primera consulta gratuita» (1.9.8): misma forma que el Premium,
   en verde; solo si el despacho la ofrece (campo primera_consulta_gratis). */
.adg-listado .adg-plate-pcg {
	color: #2f6b4f;
	background: #eef6f1;
	border-color: #bcd9c8;
}

.adg-listado .adg-addr {
	font-size: 13px;
	color: var(--adg-mute);
	margin: 0 0 9px;
	display: flex;
	align-items: center;
	gap: 6px;
}

.adg-listado .adg-addr svg {
	width: 14px;
	height: 14px;
	stroke: #a99b7d;
	fill: none;
	stroke-width: 1.8;
	flex: none;
}

/* ---------- Etiquetas de especialidad ---------- */

.adg-listado .adg-tags {
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
	margin-bottom: 9px;
}

.adg-listado .adg-tag {
	font-size: 11.5px;
	font-weight: 600;
	color: var(--adg-red-ink);
	background: var(--adg-paper-2);
	border: 1px solid var(--adg-line);
	border-radius: 6px;
	padding: 3px 9px;
	text-decoration: none;
	display: inline-block;
}

.adg-listado .adg-tag.adg-tag-main {
	background: var(--adg-red);
	color: #fff;
	border-color: var(--adg-red);
}

.adg-listado a.adg-tag:hover {
	border-color: var(--adg-red);
}

/* ---------- Poblaciones ---------- */

.adg-listado .adg-cover {
	font-size: 12.5px;
	color: #665c4d;
	margin: 0;
	display: flex;
	align-items: center;
	gap: 6px;
}

.adg-listado .adg-cover svg {
	width: 14px;
	height: 14px;
	stroke: var(--adg-indigo);
	fill: none;
	stroke-width: 1.8;
	flex: none;
}

.adg-listado .adg-cover .adg-zn {
	color: var(--adg-indigo);
	font-weight: 600;
}

/* ---------- Columna derecha ---------- */

.adg-listado .adg-firm > .adg-side {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
	align-self: center;
	gap: 9px;
	text-align: right;
}

.adg-listado .adg-tel {
	font-size: 14px;
	font-weight: 700;
	color: var(--adg-indigo);
	white-space: nowrap;
	display: flex;
	align-items: center;
	gap: 6px;
	text-decoration: none;
}

.adg-listado .adg-tel svg {
	width: 14px;
	height: 14px;
	stroke: var(--adg-indigo);
	fill: none;
	stroke-width: 1.9;
}

.adg-listado .adg-web {
	font-size: 12px;
	color: var(--adg-mute);
	font-family: var(--adg-serif);
	text-decoration: none;
}

.adg-listado .adg-web:hover {
	color: var(--adg-red);
}

.adg-listado .adg-see {
	font-size: 13px;
	font-weight: 700;
	color: #fff;
	background: var(--adg-red);
	border: none;
	border-radius: 9px;
	padding: 8px 15px;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: 0 4px 12px rgba(140, 39, 51, .3);
	transition: background .16s;
}

.adg-listado .adg-see:hover {
	background: var(--adg-red-hi);
	color: #fff;
	box-shadow: 0 4px 12px rgba(140, 39, 51, .3);
}

/* ---------- Listado vacío ---------- */

.adg-listado .adg-empty {
	text-align: center;
	padding: 34px 20px;
	color: var(--adg-mute);
	font-size: 14px;
	background: var(--adg-paper-2);
	border: 1px dashed var(--adg-line);
	border-radius: var(--adg-r);
	margin: 0;
}

.adg-listado .adg-empty b {
	color: var(--adg-ink);
}

/* Aviso del listado de reserva (1.18.0, D122 punto 3). Encima del contador. */
.adg-listado .adg-aviso {
	font-size: 14px;
	line-height: 1.5;
	color: #5c5343;
	background: var(--adg-paper-2);
	border: 1px solid var(--adg-line);
	border-left: 3px solid var(--adg-brass);
	border-radius: 10px;
	padding: 12px 16px;
	margin: 0 0 14px;
}

.adg-listado .adg-aviso b {
	color: var(--adg-ink);
	font-weight: 600;
}

/* ---------- Paginación ---------- */

.adg-listado .adg-pager {
	display: flex;
	gap: 6px;
	justify-content: center;
	margin: 24px 0 6px;
	flex-wrap: wrap;
}

.adg-listado .adg-pager a,
.adg-listado .adg-pager span {
	min-width: 38px;
	height: 38px;
	display: grid;
	place-items: center;
	border: 1px solid var(--adg-line);
	border-radius: 9px;
	font-size: 14px;
	font-weight: 600;
	color: #4a4335;
	text-decoration: none;
	background: var(--adg-white);
}

.adg-listado .adg-pager a:hover {
	border-color: var(--adg-red);
	color: var(--adg-red);
}

.adg-listado .adg-pager .adg-cur {
	background: var(--adg-red);
	color: #fff;
	border-color: var(--adg-red);
}

.adg-listado .adg-pager .adg-nx {
	width: auto;
	padding: 0 16px;
	gap: 6px;
	grid-auto-flow: column;
}

/* ---------- Móvil ---------- */

@media (max-width: 860px) {

	.adg-listado .adg-firm {
		grid-template-columns: 88px 1fr;
		gap: 14px;
	}

	.adg-listado .adg-logo {
		width: 88px;
		height: 54px;
		border-radius: 9px;
	}

	.adg-listado .adg-side {
		grid-column: 1 / -1;
		flex-direction: row;
		align-items: center;
		justify-content: flex-start;
		text-align: left;
		flex-wrap: wrap;
		border-top: 1px dashed var(--adg-line);
		padding-top: 12px;
	}
}

@media (max-width: 520px) {

	.adg-listado .adg-firm {
		grid-template-columns: 72px 1fr;
	}

	.adg-listado .adg-logo {
		width: 72px;
		height: 44px;
		border-radius: 8px;
	}

	.adg-listado .adg-see {
		width: 100%;
		text-align: center;
	}
}

/* =========================================================================
   Texto editorial · [adg_texto] y [adg_entradilla]
   Patrón «ver más / ver menos»: casilla oculta + etiqueta, plegado por CSS.
   Cero JavaScript. El texto completo está siempre en el HTML.
   ====================================================================== */

.adg-edit {
	--adg-line: #dbd2c4;
	--adg-indigo: #26314a;
	--adg-lectura: #33302b;
	--adg-white: #fff;
	--adg-shadow: 0 1px 2px rgba(26, 31, 43, .05), 0 8px 28px rgba(26, 31, 43, .08);

	/* Sin marco ni sombra: en la maqueta el texto va directo sobre la banda
	   blanca. La caja que había aquí gastaba el contraste en dibujar un borde
	   en vez de en separar zonas. Ancho de lectura de la maqueta: 768px. */
	max-width: 768px;
	margin: 0 auto;
	padding: 0;
}

/* Enunciado sobre el texto. Solo sale con [adg_texto enunciado="si"]. */
.adg-edit .adg-kicker {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: #8c2733;
	margin: 0 0 14px;
	padding: 0;
}

/* Divi impone margen y relleno propios a los párrafos del contenido y gana
   por especificidad. Este bloque los anula, acotado a .adg-edit. */
.adg-edit p {
	font-size: 18px;
	line-height: 1.75;
	color: var(--adg-lectura);
	margin: 0 0 14px;
	padding: 0;
}

.adg-edit p:last-child {
	margin-bottom: 0;
}

/* Entrada del texto: primer párrafo algo mayor y letra capital, como en la
   maqueta. Es CSS puro sobre el contenido ya importado: no toca las 156. */
.adg-edit .adg-vm-text > p:first-of-type {
	font-size: 20px;
	line-height: 1.7;
	color: #26241f;
}

.adg-edit .adg-vm-text > p:first-of-type::first-letter {
	font-family: "Georgia", "Times New Roman", serif;
	font-size: 58px;
	font-weight: 600;
	line-height: .82;
	color: #8c2733;
	float: left;
	padding: 6px 12px 0 0;
}

/* La casilla no se oculta con display:none a propósito: así sigue siendo
   alcanzable con el teclado y la barra espaciadora despliega el texto. */
.adg-edit .adg-vm-toggle {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.adg-edit .adg-vm-text {
	position: relative;
	max-height: 128px;
	overflow: hidden;
	transition: max-height .35s ease;
}

.adg-edit .adg-vm-text::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 52px;
	background: linear-gradient(transparent, var(--adg-white));
	pointer-events: none;
	transition: opacity .3s;
}

.adg-edit .adg-vm-toggle:checked ~ .adg-vm-text {
	/* 1.13.2: sin tope. Con 3000px, en móvil los textos largos (17px en una
	   columna de ~330px) pasan de 3000 y el final quedaba cortado justo
	   encima de «Ver menos», como si el botón tapara la última línea. */
	max-height: none;
}

.adg-edit .adg-vm-toggle:checked ~ .adg-vm-text::after {
	opacity: 0;
}

/* Botón de verdad, con su caja, no un enlace suelto. El texto completo sigue
   estando entero en el HTML desde el principio: esto solo lo despliega. */
.adg-edit .adg-vm-btn {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	margin-top: 16px;
	font-size: 14px;
	font-weight: 700;
	color: #8c2733;
	background: #f4eee6;
	border: 1px solid var(--adg-line);
	border-radius: 10px;
	padding: 11px 20px;
	cursor: pointer;
	user-select: none;
	transition: .16s;
}

.adg-edit .adg-vm-btn:hover {
	border-color: #8c2733;
}

.adg-edit .adg-vm-btn svg {
	width: 16px;
	height: 16px;
	stroke-width: 2.4;
	transition: transform .25s ease;
}

.adg-edit .adg-vm-toggle:checked ~ .adg-vm-btn svg {
	transform: rotate(180deg);
}

.adg-edit .adg-lbl-less {
	display: none;
}

.adg-edit .adg-vm-toggle:checked ~ .adg-vm-btn .adg-lbl-more {
	display: none;
}

.adg-edit .adg-vm-toggle:checked ~ .adg-vm-btn .adg-lbl-less {
	display: inline;
}

.adg-edit .adg-vm-toggle:focus-visible ~ .adg-vm-btn {
	outline: 2px solid var(--adg-indigo);
	outline-offset: 3px;
	border-radius: 4px;
}

/* Entradilla de la cabecera. Sin plegar. */
.adg-lead {
	font-size: 17px;
	line-height: 1.6;
	color: #33302b;
	max-width: 78ch;
	margin: 0 0 18px;
	padding: 0;
}

@media (max-width: 860px) {

	.adg-edit {
		padding: 22px 20px;
	}

	.adg-edit p {
		font-size: 17px;
	}
}

/* =========================================================================
   Cabecera oscura de las plantillas · clase .adg-cabecera sobre la fila
   Y migaja de pan de Rank Math · clase .adg-migaja sobre su fila

   El fondo, el radio, la sombra, los colores Y EL ESPACIADO viven aquí y no
   en cada plantilla de Divi: Hub, Cruce y Local comparten cabecera, y así se
   corrige en un sitio en vez de en tres.

   El espaciado se le gana a Divi con !important, y es deliberado. Divi aplica
   `padding: 2% 0` a toda fila que no lo tenga escrito: en una pantalla de
   1366px son ~27px por fila, y como la cabecera son dos filas —migaja y caja
   oscura— se suman ~54px donde la maqueta pide 14. Los valores de aquí son
   los de la maqueta: 14px entre miga y caja, y 34/30 dentro de la caja.

   CORREGIDO EL 14 SEP 2026. Este comentario decía que un valor en píxeles
   desde el panel «no desactiva de forma fiable» el 2% de Divi. Era falso: un
   valor explícito escrito en el panel sustituye al de fábrica. Lo que pasaba
   es lo que descubrió D84 un día después: el hueco entre filas no era relleno
   sino `gap`, y se estaban escribiendo ceros en el campo equivocado. De ahí
   se concluyó, mal, que el panel no era fiable. Queda anotado para que nadie
   vuelva a apoyarse en esa razón.

   D88 · HISTÓRICO, CERRADO EL 16 SEP 2026 (plugin 1.8.7). Aquí vivía un
   bloque de 7 declaraciones con `gap: 0` y los rellenos verticales a 0 sobre
   la sección de la cabecera. Salió entero. El `gap` lo pone a 0 la regla de
   D89, al final del archivo, en las tres plantillas; el relleno vertical de
   la sección y el relleno de la fila de la migaja los pone el PANEL de cada
   plantilla (Hub 0/0; Cruce y Local 0 · 22 · 0 · 22 en la sección y
   0 · 0 · 8 · 0 en la migaja). Medido antes de quitarlo: esas declaraciones
   no pintaban nada que el panel o D89 no pintaran ya, y ninguna página sin
   clase `adg-nivel-` usa la cabecera (158 revisadas).
   Por qué existió: DIVI 5 NO TIENE CAMPO PARA EL `gap` DE SECCIÓN. Comprobado
   en pantalla el 14 sep 2026 sobre los ajustes de la sección «1 · Cabecera»
   de la plantilla Hub: el grupo Separación ofrece Margen y Relleno, y el
   grupo Tamaño ofrece Ancho, Ancho Máximo, Alineación De Sección, Altura
   Mínima, Altura, Altura Máxima y Relación De Aspecto. Ninguno es el `gap`.
   No se le puede dar el mando al panel si el panel no tiene dónde guardarlo.

   Lo que sí se limpió ese día: la sección «1 · Cabecera» de la Hub tenía
   escrito Relleno Superior = 6px, que no hacía nada porque esta hoja le pone
   `padding-top: 0 !important`. Vaciado a 0. Era el campo que mentía.

   AVISO DE MÉTODO: el lienzo del Theme Builder NO sirve para juzgar este
   espaciado. El constructor no carga esta hoja igual que el frontal, así que
   ahí manda el panel y en la página real manda este archivo. Medido el 14 sep
   2026: poner el relleno a 0 movió la sección dentro del constructor y no la
   movió en `/civil/`. Se juzga siempre sobre la página publicada.
   ====================================================================== */

.adg-cabecera {
	position: relative;
	overflow: hidden;
	border-radius: 14px;
	box-shadow: 0 12px 48px rgba(26, 31, 43, .16);
	color: #fff;

	/* Tres capas, de abajo arriba, como en el prototipo:
	   1. degradado diagonal de tres paradas
	   2. velo oscuro que apaga la caja hacia abajo
	   3. la trama, en el ::before de aquí debajo */
	background:
		linear-gradient(180deg, rgba(18, 23, 35, .55), rgba(18, 23, 35, .82)),
		linear-gradient(120deg, #374663 0%, #26314a 60%, #1a2236 100%);
}

/* Trama de rayas cruzadas: blancas de 2px cada 20, al 10 %, desvanecidas
   casi hasta el final de la caja. Va en un pseudoelemento para no tener que
   meter un div extra dentro de la fila de Divi. */
.adg-cabecera::before {
	content: '';
	position: absolute;
	inset: 0;
	opacity: .10;
	pointer-events: none;
	background-image:
		repeating-linear-gradient(45deg, #fff 0 2px, transparent 2px 20px),
		repeating-linear-gradient(-45deg, #fff 0 2px, transparent 2px 20px);
	-webkit-mask-image: linear-gradient(180deg, #000, transparent 95%);
	mask-image: linear-gradient(180deg, #000, transparent 95%);
}

/* El contenido de la fila tiene que quedar por encima de la trama. */
.adg-cabecera > * {
	position: relative;
	z-index: 1;
	margin-bottom: 0 !important;
}

/* Espaciado, contra el 2% de Divi. El margen superior va a 0: la separación
   con la migaja la pone el relleno inferior de la fila de la migaja, escrito
   en el panel, y si se dejara aquí se sumarían los dos. */
.adg-cabecera {
	margin-top: 0 !important;
	padding: 34px 40px 30px !important;
}

/* La migaja va envuelta en cuatro capas —fila, columna, módulo Código y el
   nav de Rank Math— y cualquiera de ellas mete margen propio. Apretar solo
   la fila no bastaba: el hueco lo ponían las de dentro. Comprobado con el
   inspector el 14 sep 2026.
   DESDE EL 16 SEP 2026 (1.8.7): el RELLENO de la propia fila `.adg-migaja` no
   se declara aquí. Lo pone el panel de cada plantilla, y su regla
   (`.et_pb_row_0_tb_body.et_pb_row`, dos clases) ganaba siempre a esta (una
   clase): los 0 y los 12px que había aquí estaban muertos. De la fila solo
   quedan los márgenes, en la regla de debajo. Las capas de dentro, igual. */
.adg-migaja .et_pb_column,
.adg-migaja .et_pb_module,
.adg-migaja .et_pb_code_inner,
.adg-migaja .rank-math-breadcrumb {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

.adg-migaja {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

@media (max-width: 860px) {

	.adg-cabecera {
		margin-top: 10px !important;
		padding: 26px 22px 24px !important;
	}
}

.adg-cabecera h1 {
	color: #fff;

	/* Escala de la maqueta: 26px en móvil, 38px en pantalla de escritorio. */
	font-size: clamp(26px, 3.4vw, 38px);
	line-height: 1.1;
	letter-spacing: -.5px;
	padding-bottom: 0;
}

/* La entradilla va sobre fondo oscuro: aquí manda el gris azulado claro,
   no el color de lectura sobre papel. */
.adg-cabecera .adg-lead {
	color: #c9cfda;
	margin-bottom: 0;
}

.adg-cabecera a {
	color: #c99b5e;
}

/* -------------------------------------------------------------------------
   Icono del área, en la cabecera · [adg_icono_area]
   Va en latón sobre índigo: el granate no contrasta sobre fondo oscuro, y así
   lo deja escrito la maqueta. En las tarjetas de subespecialidad es al revés,
   granate sobre piedra, porque allí el fondo es claro.
   ---------------------------------------------------------------------- */

.adg-area-ic {
	width: 64px;
	height: 64px;
	border-radius: 16px;
	background: rgba(201, 155, 94, .16);
	border: 1px solid rgba(201, 155, 94, .4);
	display: grid;
	place-items: center;
	color: #c99b5e;
	flex: none;
}

.adg-area-ic .adg-subesp-icono {
	width: 34px;
	height: 34px;
	stroke-width: 1.6;
}

/* Colocación del icono a la izquierda, con el H1 y la entradilla apilados a
   su derecha.

   EXCEPCIÓN DOCUMENTADA a la regla «lo que pueda hacer Divi, lo hace Divi».
   Se intentó en el panel partiendo la fila en dos columnas (14 sep 2026) y
   salió peor: al reestructurar la fila, Divi se llevó por delante las clases
   `adg-cabecera` y `adg-migaja` y hubo que recrearlas, la entradilla se quedó
   en la columna del icono, y habría que repetir el montaje en las tres
   plantillas. Aquí se resuelve en un sitio para las 151 páginas.

   Los tres módulos —icono, H1 y entradilla— van en UNA sola columna, en ese
   orden. La columna pasa a rejilla de dos columnas: el icono ocupa la
   primera y abarca las dos filas; H1 y entradilla se apilan en la segunda. */
.adg-cabecera .et_pb_column:has(.adg-area-ic) {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	column-gap: 22px;
	align-items: start;
	align-content: start;
}

/* CENTRADO VERTICAL contra el bloque de texto entero, que es lo que dice la
   maqueta: `.l2hero-in { display:flex; align-items:center; gap:22px }`.

   CORREGIDO EL 14 SEP 2026, a señalamiento de James. Aquí había escrito
   `align-self: start` con una nota que decía que centrarlo «caía a media
   altura entre el H1 y la entradilla, que es donde peor queda». Esa nota era
   una opinión propia contra un diseño aprobado, no un motivo: la maqueta
   centra el icono y así se queda. Misma lección que el 14 sep con el resto
   de la cabecera — se miden los valores de la maqueta antes de maquetar y
   solo se discrepa de ella con motivo escrito.

   El tamaño también sale de ahí: `.l2ic` es 64×64 con radio 16 y el glifo a
   34px. Estaba en 58/15/30. */
.adg-cabecera .et_pb_module:has(.adg-area-ic) {
	grid-column: 1;
	grid-row: 1 / span 2;
	align-self: center;
}

.adg-cabecera .et_pb_column:has(.adg-area-ic) > .et_pb_module:not(:has(.adg-area-ic)) {
	grid-column: 2;
}

/* En móvil no hay sitio para dos columnas: el icono se pone encima. */
@media (max-width: 860px) {

	.adg-cabecera .et_pb_column:has(.adg-area-ic) {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 14px;
	}

	.adg-cabecera .et_pb_module:has(.adg-area-ic),
	.adg-cabecera .et_pb_column:has(.adg-area-ic) > .et_pb_module:not(:has(.adg-area-ic)) {
		grid-column: 1;
		grid-row: auto;
		align-self: start;
	}

	.adg-area-ic {
		width: 48px;
		height: 48px;
		border-radius: 12px;
	}

	.adg-area-ic .adg-subesp-icono {
		width: 26px;
		height: 26px;
	}
}

/* Migaja. Rank Math no trae estilos propios: hereda los del tema. */
.adg-migaja,
.adg-migaja .rank-math-breadcrumb p {
	font-size: 13.5px;
	color: #6e6555;
	margin: 0;
}

/* Divi pone relleno inferior a los párrafos; el de la migaja va a 0. */
.adg-migaja .rank-math-breadcrumb p {
	padding-bottom: 0;
}

.adg-migaja a {
	color: #374663;
	text-decoration: none;
}

.adg-migaja a:hover {
	text-decoration: underline;
}

.adg-migaja .last,
.adg-migaja .rank-math-breadcrumb p > *:last-child {
	color: #1c1d24;
	font-weight: 600;
}

/* =========================================================================
   Rejilla de subespecialidades · [adg_subespecialidades]
   Bloque E de la plantilla Hub. En N2 lista las hijas; en N3, las hermanas.
   Mismos valores de casa que la tarjeta: radio 14px, línea, granate suave
   al pasar el ratón.
   ====================================================================== */

.adg-subesp {
	--adg-ink: #1c1d24;
	--adg-lectura: #33302b;
	--adg-red: #8c2733;
	--adg-red-hi: #a5344a;
	--adg-red-ink: #6d1c2a;
	--adg-red-soft: #b25563;
	--adg-line: #dbd2c4;
	--adg-white: #fff;
	--adg-shadow: 0 1px 2px rgba(26, 31, 43, .05), 0 8px 28px rgba(26, 31, 43, .08);
	--adg-shadow-lg: 0 12px 48px rgba(26, 31, 43, .16);
	--adg-r: 14px;
	--adg-serif: "Georgia", "Times New Roman", serif;
}

/* -------------------------------------------------------------------------
   Neutralización de estilos heredados
   Divi aplica margen, relleno e interlineado propios a h2, p, a y span
   dentro del contenido, y gana por especificidad. Sin esto, el titular sale
   con un hueco extra debajo y las tarjetas se estiran. Acotado a .adg-subesp.
   ---------------------------------------------------------------------- */

.adg-subesp,
.adg-subesp * {
	box-sizing: border-box;
}

.adg-subesp h2,
.adg-subesp p,
.adg-subesp span,
.adg-subesp div {
	margin: 0;
	padding: 0;
}

.adg-subesp h2 {
	font-size: inherit;
	color: inherit;
	padding-bottom: 0;
}

.adg-subesp p:last-of-type {
	padding-bottom: 0;
}

/* ---------- Rótulo e icono de la especialidad madre ---------- */

.adg-subesp .adg-subesp-rotulo {
	display: flex;
	align-items: center;
	gap: 9px;
	margin: 0 0 8px;
	font-size: 12.5px;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: .02em;
	color: var(--adg-red-ink);
}

.adg-subesp .adg-subesp-icono {
	width: 19px;
	height: 19px;
	flex: none;
}

/* ---------- Titular y subtítulo ---------- */

.adg-subesp .adg-subesp-titular {
	font-family: var(--adg-serif);
	font-size: 25px;
	font-weight: 600;
	line-height: 1.2;
	color: var(--adg-ink);
	margin: 0 0 6px;
}

.adg-subesp .adg-subesp-sub {
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--adg-lectura);
	margin: 0 0 20px;
	max-width: 62ch;
}

.adg-subesp .adg-subesp-sub a {
	color: var(--adg-red);
	font-weight: 600;
	text-decoration: none;
	line-height: 1.6;
}

.adg-subesp .adg-subesp-sub a:hover {
	color: var(--adg-red-hi);
	text-decoration: underline;
}

.adg-subesp .adg-subesp-sub a svg {
	vertical-align: -2px;
}

/* ---------- Rejilla ---------- */

.adg-subesp .adg-subesp-rejilla {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 14px;
}

/* Tarjeta con los valores de la maqueta: icono, título, descripción y ruta.
   La descripción sale de la entradilla de cada página, recortada. */
.adg-subesp .adg-subesp-card {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 18px;
	background: var(--adg-white);
	border: 1px solid var(--adg-line);
	border-radius: var(--adg-r);
	box-shadow: var(--adg-shadow);
	text-decoration: none;
	transition: .16s;
}

.adg-subesp .adg-subesp-card:hover,
.adg-subesp .adg-subesp-card:focus-visible {
	transform: translateY(-3px);
	border-color: var(--adg-red);
	box-shadow: var(--adg-shadow-lg);
}

/* Caja del icono: piedra de fondo y el dibujo en granate, que sobre piedra
   sí contrasta. Sobre índigo iría en latón; no es el caso. */
.adg-subesp .adg-subesp-ic {
	width: 42px;
	height: 42px;
	border-radius: 10px;
	background: #e7e0d3;
	display: grid;
	place-items: center;
	color: var(--adg-red);
	flex: none;
}

.adg-subesp .adg-subesp-ic .adg-subesp-icono {
	width: 22px;
	height: 22px;
	flex: none;
	stroke-width: 1.7;
}

.adg-subesp .adg-subesp-t {
	font-size: 15px;
	font-weight: 600;
	line-height: 1.25;
	color: var(--adg-ink);
}

.adg-subesp .adg-subesp-d {
	font-size: 12.5px;
	line-height: 1.4;
	color: #8a8069;
}

/* La ruta se pega al fondo aunque las descripciones tengan distinto largo. */
.adg-subesp .adg-subesp-u {
	margin-top: auto;
	padding-top: 4px;
	font-family: var(--adg-serif);
	font-size: 11px;
	color: #a99b7d;
	word-break: break-all;
}

/* ---------- Móvil ---------- */

@media (max-width: 860px) {

	.adg-subesp .adg-subesp-titular {
		font-size: 22px;
	}

	.adg-subesp .adg-subesp-rejilla {
		grid-template-columns: repeat(2, 1fr);
	}
}


/* =========================================================================
   Selector de población · [adg_poblaciones]
   Bloque B de la plantilla Hub. Valores medidos sobre el `.zonebar` de
   Plantilla_Nivel2_Especialidad.html, que es diseño aprobado.

   REPARTO DIVI / PLUGIN (D85). Aquí vive SOLO el componente: el rótulo, el
   subtítulo y los botones, que tienen que verse igual dondequiera que se
   usen. NO se tocan, a propósito:
     · el fondo de la banda   → Divi, fondo de la sección
     · el ancho de la fila    → Divi, ancho máximo de la fila
     · el relleno lateral     → Divi, relleno de la fila
   La maqueta los pone en `.zonebar` y `.zonebar-in` (blanco, línea inferior,
   `padding: 18px 40px`, ancho máximo 1180). Se maquetan en el panel, como el
   resto de bandas de la Hub. Escribirlos aquí sería repetir el error que el
   bloque de limpieza del 14 sep 2026 vino a deshacer.

   DISCREPANCIAS CON LA MAQUETA, con motivo escrito (los motivos completos
   están en el comentario del shortcode, en adg-directorio.php):
     · sin <select>: en producción los botones son enlaces indexables y el
       filtro JavaScript de la maqueta era solo vista previa
     · sin `.zone-reset` ni estado `.on`: no hay filtro que quitar y ninguna
       población es la actual
   ====================================================================== */

.adg-zonas {
	--adg-ink: #1c1d24;
	--adg-red: #8c2733;
	--adg-red-ink: #6d1c2a;
	--adg-line: #dbd2c4;
	--adg-white: #fff;
}

/* Neutralización de estilos heredados, igual que en la tarjeta y en la
   rejilla: Divi aplica margen e interlineado propios a p y a. */
.adg-zonas p,
.adg-zonas div,
.adg-zonas span {
	margin: 0;
	padding: 0;
	line-height: 1.4;
}

/* Rótulo con el pin, en granate. Valores del `.zl` de la maqueta.
   Los tres selectores de aquí abajo van escritos como `.adg-zonas .adg-zonas-x`
   y no como `.adg-zonas-x` a secas. Es a propósito: el bloque de
   neutralización de arriba usa `.adg-zonas p` y `.adg-zonas div`, que pesan
   más que una clase suelta y se comían el `margin-top` de los dos. Detectado
   el 14 sep 2026 viendo los valores TACHADOS en el inspector. */
.adg-zonas .adg-zonas-rotulo {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	font-weight: 700;
	color: var(--adg-red);
	letter-spacing: .3px;
}

.adg-zonas .adg-zonas-rotulo svg {
	width: 17px;
	height: 17px;
	stroke: var(--adg-red);
	fill: none;
	stroke-width: 1.9;
	flex: none;
}

/* Subtítulo. No está en la maqueta: se añade porque el bloque va de 1 a 11
   botones y con uno solo el rótulo «Elija su población» se quedaba sin
   explicar qué hay al otro lado del clic. Dice lo que el visitante se va a
   encontrar, sin contar cómo está montado el directorio. */
.adg-zonas .adg-zonas-sub {
	font-size: 13.5px;
	color: #665c4d;
	margin-top: 6px;
	padding-bottom: 0;
}

.adg-zonas .adg-zonas-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 12px;
}

/* Botón. Valores del `.zchip` de la maqueta, con dos cambios: es un enlace y
   no un <button>, y por tanto lleva `text-decoration: none`. */
.adg-zonas .adg-zona {
	font-size: 12.5px;
	font-weight: 600;
	color: #4a4335;
	background: var(--adg-white);
	border: 1px solid var(--adg-line);
	border-radius: 999px;
	padding: 6px 14px;
	text-decoration: none;
	white-space: nowrap;
	transition: .14s;
}

.adg-zonas .adg-zona:hover {
	border-color: var(--adg-red);
	color: var(--adg-red-ink);
}

@media (max-width: 860px) {

	.adg-zonas .adg-zonas-sub {
		font-size: 13px;
	}

	.adg-zonas .adg-zonas-chips {
		gap: 7px;
	}
}


/* -------------------------------------------------------------------------
   Sección B vacía · bancario y fiscal

   `[adg_poblaciones]` devuelve cadena vacía en las 11 páginas Hub que no
   tienen ninguna página de cruce —bancario, fiscal y sus nueve
   subespecialidades—, que es la decisión 1 aprobada el 14 sep 2026. Pero la
   sección de Divi sigue existiendo con su fila, su columna y su relleno, y
   ocupa más de 100px de blanco entre la cabecera y el texto editorial.
   Medido en pantalla sobre `/bancario/`.

   EXCEPCIÓN A D85, de la misma familia que D88. Divi no tiene ninguna
   condición de visualización capaz de mirar si un shortcode ha devuelto
   contenido: no se le puede dar el mando al panel sobre algo que el panel no
   sabe consultar. Se resuelve aquí, en una regla, para las 11 páginas.

   CÓMO SE ENGANCHA. La sección lleva la clase `adg-seccion-zonas`, escrita a
   mano en el panel (pestaña Avanzado, campo de clase CSS, sin punto delante).
   Sin esa clase esta regla no hace nada y el hueco vuelve, así que si algún
   día reaparece, lo primero que hay que mirar es si la clase sigue puesta:
   reestructurar una fila se lleva las clases por delante (D86).
   ---------------------------------------------------------------------- */

.adg-seccion-zonas:not(:has(.adg-zonas)) {
	display: none;
}





/* -------------------------------------------------------------------------
   D89 · El `gap` de Divi a 0 · LAS TRES PLANTILLAS

   Divi 5 monta como caja flexible las secciones, las filas, LAS COLUMNAS Y
   LOS MÓDULOS, y a todos les aplica el mismo canalón de fábrica:

     .et_flex_column, .et_flex_group, .et_flex_module, .et_flex_row,
     .et_flex_section { display: flex; column-gap: var(--horizontal-gap);
                        row-gap: var(--vertical-gap); }

   Leído en el inspector el 14 sep 2026. Puesto a cero, todo el espaciado
   pasa a ser RELLENO, que es lo único que el panel sabe editar —D88: Divi 5
   no tiene campo de `gap`—. Así el espaciado vuelve a Divi, que es a quien
   D85 se lo asigna, y deja de hacer falta un parche por sección. El `gap` se
   había perseguido ya tres veces: cabecera, migaja y selector de población.

   LÍMITE DE LA REGLA, Y ES LO QUE LA HACE VIABLE (aviso de James).
   El `gap` no separa solo las cajas de Divi: separa también POR DENTRO los
   componentes del plugin —los chips del selector entre sí, la rejilla de
   subespecialidades, la tarjeta de despacho, el rótulo del pin—. Una regla
   escrita a lo ancho los destrozaría. Va a cero SOLO en los contenedores de
   Divi y NO TOCA NADA cuyo nombre empiece por `adg-`. El plugin gobierna lo
   de dentro de sus componentes; Divi, lo de entre sus cajas. Es la frontera
   de D85 llevada al `gap`.

   POR QUÉ CUELGA DEL `<body>`. D89 obliga a aplicar la regla a UNA plantilla,
   comprobarla, y solo entonces las otras dos. El CSS no sabe en qué plantilla
   del Theme Builder está, así que el plugin escribe en el <body> la clase
   `adg-nivel-{slug}` con el término de `nivel` de la página (1.8.3). Las
   páginas sin término —/consulta/ y las 5 de alta conversión— no reciben
   clase y esta regla no las alcanza.
   CUANDO LAS TRES ESTÉN REPASADAS, los tres prefijos se sustituyen por la
   regla suelta sobre los cinco selectores, y la clase del <body> se queda
   como gancho general para futuras reglas de una sola plantilla.

   `et_flex_group` no estaba en la lista de cuatro nombres de D89 y se añade
   aquí con motivo escrito: es el módulo Grupo, contenedor de Divi como los
   otros cuatro y fuera del territorio `adg-`. Dejarlo fuera garantizaría una
   quinta ronda persiguiendo el mismo hueco. Para ceñirse a los cuatro, se
   borra su línea.

   SIN `!important` A PROPÓSITO: dos clases pesan más que la única clase del
   selector de Divi, así que esta regla gana por especificidad y el recuento
   de `!important` del archivo se queda en 18.

   HUB VALIDADA EN PANTALLA EL 14 SEP 2026 sobre /civil/, /bancario/ y
   /familia/divorcio/: ningún componente del plugin perdió su separación, y
   las seis bandas respondieron a los rellenos escritos en el panel. Con eso
   se borró el parche provisional de la sección B (1.8.4) y la regla se amplió
   a `cruce` y `local`, que son la misma estructura de cuatro secciones.

   HECHO EL 16 SEP 2026 (1.8.7): las 7 declaraciones de D88 —el bloque
   `:has(.adg-migaja)` / `:has(.adg-cabecera)`— salieron, después de escribir
   0 arriba y abajo en la sección «1 · Cabecera» de Cruce y Local (la Hub ya
   lo tenía). Esta regla es desde entonces la única dueña del `gap` de la
   cabecera. NO BORRAR sin devolver antes ese `gap` a otro sitio.
   ---------------------------------------------------------------------- */

body.adg-nivel-transversal .et_flex_section,
body.adg-nivel-hub .et_flex_section,
body.adg-nivel-transversal .et_flex_row,
body.adg-nivel-hub .et_flex_row,
body.adg-nivel-transversal .et_flex_column,
body.adg-nivel-hub .et_flex_column,
body.adg-nivel-transversal .et_flex_group,
body.adg-nivel-hub .et_flex_group,
body.adg-nivel-transversal .et_flex_module,
body.adg-nivel-hub .et_flex_module,
body.adg-nivel-cruce .et_flex_section,
body.adg-nivel-cruce .et_flex_row,
body.adg-nivel-cruce .et_flex_column,
body.adg-nivel-cruce .et_flex_group,
body.adg-nivel-cruce .et_flex_module,
body.adg-nivel-local .et_flex_section,
body.adg-nivel-local .et_flex_row,
body.adg-nivel-local .et_flex_column,
body.adg-nivel-local .et_flex_group,
body.adg-nivel-local .et_flex_module {
	column-gap: 0;
	row-gap: 0;
}

/* -------------------------------------------------------------------------
   D89 · EXCEPCIÓN: EL ENCABEZADO GLOBAL (1.8.15, 25 sep 2026)

   La regla de arriba se escribió para el CUERPO de las tres plantillas,
   cuando no había encabezado del Theme Builder. El encabezado global
   (layout 415) se pinta en esas mismas páginas y la regla también le
   alcanzaba: medido en /civil/, la columna de la barra blanca tenía
   `--horizontal-gap: 26px` escrito en Divi y `column-gap: 0` en pantalla,
   así que el menú salía pegado al logo. En /consulta/ y en las 5 de alta
   conversión (sin clase de nivel) sí habría 26: cabecera distinta según la
   página.

   Dentro de `.et-l--header` se devuelve el canalón de Divi, con sus mismas
   variables: vale lo que se escriba en «Espacio Horizontal / Vertical» del
   panel. (D88 decía que Divi 5 no tenía campo de `gap`: SÍ lo tiene en las
   cajas Flex, Diseño → Diseño. Corregido en fase0 v9.75.)

   1.9.3: lo mismo para el pie global (`.et-l--footer`): sin esto, en Hub,
   Cruce y Local el pie perdía el hueco logo–frase y el de las columnas
   (medido el 27 sep: 0 px frente a 8 px y 5,5 % en /aviso-legal/).

   Especificidad: `body.adg-nivel-x .et-l--header .et_flex_*` = 0,3,1, gana
   al 0,2,1 de la regla de arriba. Sin `!important`.
   ---------------------------------------------------------------------- */

body.adg-nivel-transversal .et-l--header .et_flex_section,
body.adg-nivel-hub .et-l--header .et_flex_section,
body.adg-nivel-transversal .et-l--header .et_flex_row,
body.adg-nivel-hub .et-l--header .et_flex_row,
body.adg-nivel-transversal .et-l--header .et_flex_column,
body.adg-nivel-hub .et-l--header .et_flex_column,
body.adg-nivel-transversal .et-l--header .et_flex_group,
body.adg-nivel-hub .et-l--header .et_flex_group,
body.adg-nivel-transversal .et-l--header .et_flex_module,
body.adg-nivel-hub .et-l--header .et_flex_module,
body.adg-nivel-cruce .et-l--header .et_flex_section,
body.adg-nivel-cruce .et-l--header .et_flex_row,
body.adg-nivel-cruce .et-l--header .et_flex_column,
body.adg-nivel-cruce .et-l--header .et_flex_group,
body.adg-nivel-cruce .et-l--header .et_flex_module,
body.adg-nivel-local .et-l--header .et_flex_section,
body.adg-nivel-local .et-l--header .et_flex_row,
body.adg-nivel-local .et-l--header .et_flex_column,
body.adg-nivel-local .et-l--header .et_flex_group,
body.adg-nivel-local .et-l--header .et_flex_module,
body.adg-nivel-transversal .et-l--footer .et_flex_section,
body.adg-nivel-hub .et-l--footer .et_flex_section,
body.adg-nivel-transversal .et-l--footer .et_flex_row,
body.adg-nivel-hub .et-l--footer .et_flex_row,
body.adg-nivel-transversal .et-l--footer .et_flex_column,
body.adg-nivel-hub .et-l--footer .et_flex_column,
body.adg-nivel-transversal .et-l--footer .et_flex_group,
body.adg-nivel-hub .et-l--footer .et_flex_group,
body.adg-nivel-transversal .et-l--footer .et_flex_module,
body.adg-nivel-hub .et-l--footer .et_flex_module,
body.adg-nivel-cruce .et-l--footer .et_flex_section,
body.adg-nivel-cruce .et-l--footer .et_flex_row,
body.adg-nivel-cruce .et-l--footer .et_flex_column,
body.adg-nivel-cruce .et-l--footer .et_flex_group,
body.adg-nivel-cruce .et-l--footer .et_flex_module,
body.adg-nivel-local .et-l--footer .et_flex_section,
body.adg-nivel-local .et-l--footer .et_flex_row,
body.adg-nivel-local .et-l--footer .et_flex_column,
body.adg-nivel-local .et-l--footer .et_flex_group,
body.adg-nivel-local .et-l--footer .et_flex_module {
	column-gap: var(--horizontal-gap);
	row-gap: var(--vertical-gap);
}

/* =========================================================================
   HUB · CABECERA Y CTA, OPCIÓN B (17 sep 2026, plugin 1.8.8; regla 1 corregida en la 1.8.9)
   Solo la plantilla Hub (body.adg-nivel-hub). Cruce y Local se unificaron
   con el bloque siguiente el 20 sep 2026 (1.8.10).

   Decisión de diseño aprobada por James: en escritorio, caja oscura y CTA son
   TARJETAS (radio y sombra); por debajo de 920px son BANDAS de borde a borde,
   sin radio ni sombra. Supera a la maqueta N2, que las dibuja a sangre en
   todos los anchos: la tarjeta es el idioma del resto del portal y mantiene
   la Hub igual que Cruce y Local en escritorio.

   Estado del panel del que parte (medido en /civil/ el 17 sep 2026): todas
   las filas del cuerpo a Ancho 100 % y sin Ancho Máximo escrito, así que
   todas toman el 1180 del ajuste global; laterales de 40 escritos en el panel
   con !important y selector de dos clases (.et_pb_row_N_tb_body.et_pb_row).

   Selector: `body.adg-nivel-hub .et_pb_row[class*="_tb_body"]` pesa tres
   clases/atributos y una etiqueta. Gana a las dos clases del panel y a la
   única clase de .adg-cabecera. El `_tb_body` deja fuera las filas de la
   cabecera y el pie del sitio cuando existan.
   ====================================================================== */

/* 1 · Por encima de 920: tope de 1136px y 22px de aire mínimo a cada lado.
   Todas las filas a la vez, para que el texto siga en una sola vertical.
   1136 desde la 1.8.11 (20 sep 2026), antes 1180. Medido ese día a 1351: la
   Hub daba caja oscura de 1180 en x=86 y Cruce y Local de 1136 en x=108, 44px
   de diferencia en el mismo componente, que D85 obliga a que sea idéntico.
   James decide bajar la Hub. Motivo de diseño: a 1180 —el ancho de contenido
   del sitio— la caja toca los dos bordes de la columna y se lee como banda
   aunque tenga radio; con 1136 quedan 22px de papel a cada lado y la tarjeta
   se lee como tarjeta. Es el valor que Cruce y Local tienen escrito en el
   panel desde D96. Cambia TODAS las filas del cuerpo de la Hub, no solo la
   caja: moverla sola la habría descuadrado respecto a su propio listado.
   Con !important desde la 1.8.9: la fila del CTA emite `max-width: 1180px
   !important` desde el CSS del panel aunque el campo Ancho Máximo De se ve
   vacío (medido en /civil/ a 1100 el 17 sep 2026). En la Hub, el ancho máximo
   de las filas del cuerpo lo manda esta regla, no el panel. */
@media (min-width: 921px) {
	body.adg-nivel-transversal .et_pb_row[class*="_tb_body"],
	body.adg-nivel-hub .et_pb_row[class*="_tb_body"] {
		max-width: min(1136px, calc(100% - 44px)) !important;
	}
}

/* 2 · Por debajo de 920 (corte de la N2): laterales a 22 en todas las filas,
   y caja oscura y CTA como bandas. El CTA se reconoce por la clase `adg-cta`,
   escrita en Atributos de su fila en el panel: su radio y su sombra los pone
   el panel y sin clase la hoja no puede nombrarlo. */
@media (max-width: 920px) {
	body.adg-nivel-transversal .et_pb_row[class*="_tb_body"],
	body.adg-nivel-hub .et_pb_row[class*="_tb_body"] {
		padding-left: 22px !important;
		padding-right: 22px !important;
	}

	body.adg-nivel-transversal .adg-cabecera,
	body.adg-nivel-hub .adg-cabecera,
	body.adg-nivel-transversal .adg-cta,
	body.adg-nivel-hub .adg-cta {
		border-radius: 0 !important;
		box-shadow: none !important;
	}
}

/* 3 · Entradilla: tope de 60 caracteres por línea (`.lede` de la N2). Con la
   caja a 1180, sin tope pasaba de ~110. Cruce y Local (66ch en su N4) se
   añadirán con su propio bloque. */
body.adg-nivel-transversal .adg-cabecera .adg-lead,
body.adg-nivel-hub .adg-cabecera .adg-lead {
	max-width: 60ch;
}


/* =========================================================================
   CRUCE Y LOCAL · CABECERA Y CTA COMO BANDAS EN ESTRECHO (20 sep 2026, plugin 1.8.10)
   Extiende a las otras dos plantillas la decisión del bloque anterior.

   Motivo, medido el 20 sep 2026 a 375px de ancho útil: en /civil/ la caja
   oscura salía de borde a borde (x=0, 375, radio 0, sin sombra) y en
   /abogado-civil-motril/ la misma caja salía como tarjeta (x=22, 331, radio
   14 y sombra). El mismo componente cambiaba de forma al pasar de un hub a su
   página de cruce. James decide unificar en BANDA, que es la forma aprobada
   el 17 sep para la Hub.

   Por qué este bloque toca secciones y el de la Hub no: por D96, en Cruce y
   Local los 22 laterales viven en la SECCIÓN y las filas van a 0 (medido a
   390 el 20 sep 2026 en /abogado-civil-motril/ y /abogados-armilla/: secciones
   0·22·0·22 y 34·22·34·22, filas en x=22 con 346 de ancho). Hay que invertir
   los dos valores. En la Hub los 40 están en las filas, y por eso allí basta
   con pisarlos.

   Coste asumido: por debajo de 920 los laterales de Cruce y Local los manda
   esta hoja y no el panel, como ya ocurría en la Hub. Fuera de la media no
   cambia nada y en escritorio siguen mandando los 22 del panel. Es una
   excepción consciente a D85, escrita aquí para que nadie la revierta
   creyéndola un descuido.

   La clase `adg-cta` se escribió en Atributos de la fila del CTA de las dos
   plantillas el 20 sep 2026, y se verificó en el código fuente (una aparición
   por página, sobre et_pb_row_4_tb_body). Sin ella la hoja no puede quitarle
   el radio ni la sombra.
   ====================================================================== */
@media (max-width: 920px) {
	body.adg-nivel-cruce .et_pb_section[class*="_tb_body"],
	body.adg-nivel-local .et_pb_section[class*="_tb_body"] {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	body.adg-nivel-cruce .et_pb_row[class*="_tb_body"],
	body.adg-nivel-local .et_pb_row[class*="_tb_body"] {
		padding-left: 22px !important;
		padding-right: 22px !important;
	}

	body.adg-nivel-cruce .adg-cabecera,
	body.adg-nivel-cruce .adg-cta,
	body.adg-nivel-local .adg-cabecera,
	body.adg-nivel-local .adg-cta {
		border-radius: 0 !important;
		box-shadow: none !important;
	}
}


/* =========================================================================
   Preguntas frecuentes · [adg_faq]  (1.8.12, 23 sep 2026, D103)
   Bloque F de la plantilla Hub. Valores medidos sobre `.faq-band` /
   `.faq-in` / `.faq-item` de Plantilla_Nivel2_Especialidad.html:
   ancho de lectura 820, titular serif 26 centrado, pregunta 16/600 con
   relleno 16·20, respuesta 15 con interlineado 1,65, caja con borde fino,
   radio 12 y fondo Papel, 10 de separación entre preguntas, «+» granate
   que gira 45° al abrir.
   El rótulo con el icono de la especialidad es el mismo que usa la rejilla
   de subespecialidades: componente de la casa, no de la maqueta.
   Fondo y borde de la banda: del panel de Divi (D85). Sin `!important`.
   ====================================================================== */

.adg-faq {
	--adg-ink: #1c1d24;
	--adg-lectura: #4a4335;
	--adg-red: #8c2733;
	--adg-red-ink: #6d1c2a;
	--adg-line: #dbd2c4;
	--adg-paper: #faf7f2;
	--adg-serif: "Georgia", "Times New Roman", serif;
	max-width: 820px;
	margin: 0 auto;
}

/* Neutralización de lo que Divi pone a h2, h3 y p dentro del contenido.
   Selectores de clase + etiqueta: pesan menos que los del componente
   (dos clases), para no comerse sus márgenes como pasó en la 1.8.2. */
.adg-faq,
.adg-faq * {
	box-sizing: border-box;
}

.adg-faq h2,
.adg-faq h3,
.adg-faq p {
	margin: 0;
	padding: 0;
}

/* ---------- Rótulo y titular ---------- */

.adg-faq .adg-faq-rotulo {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	margin: 0 0 8px;
	font-size: 12.5px;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: .02em;
	color: var(--adg-red-ink);
}

.adg-faq .adg-faq-rotulo svg {
	width: 18px;
	height: 18px;
	flex: none;
	fill: none;
	stroke: var(--adg-red);
	stroke-width: 1.7;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.adg-faq .adg-faq-titular {
	font-family: var(--adg-serif);
	font-size: 26px;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	color: var(--adg-ink);
	margin: 0 0 20px;
}

/* ---------- Acordeón ---------- */

.adg-faq .adg-faq-item {
	border: 1px solid var(--adg-line);
	border-radius: 12px;
	background: var(--adg-paper);
	margin: 0 0 10px;
	overflow: hidden;
}

.adg-faq .adg-faq-item:last-child {
	margin-bottom: 0;
}

.adg-faq .adg-faq-p {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 16px 20px;
	cursor: pointer;
	list-style: none;
}

.adg-faq .adg-faq-p::-webkit-details-marker {
	display: none;
}

.adg-faq .adg-faq-p::marker {
	content: "";
}

.adg-faq .adg-faq-p:focus-visible {
	outline: 2px solid var(--adg-red);
	outline-offset: -2px;
	border-radius: 12px;
}

.adg-faq .adg-faq-h {
	font-family: inherit;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--adg-ink);
	margin: 0;
	padding: 0;
}

.adg-faq .adg-faq-mas {
	width: 20px;
	height: 20px;
	flex: none;
	fill: none;
	stroke: var(--adg-red);
	stroke-width: 2;
	stroke-linecap: round;
	transition: transform .2s;
}

.adg-faq .adg-faq-item[open] .adg-faq-mas {
	transform: rotate(45deg);
}

.adg-faq .adg-faq-r {
	padding: 0 20px 18px;
}

.adg-faq .adg-faq-r p {
	font-size: 15px;
	line-height: 1.65;
	color: var(--adg-lectura);
}

@media (max-width: 920px) {
	.adg-faq .adg-faq-titular {
		font-size: 22px;
	}

	.adg-faq .adg-faq-p {
		padding: 14px 16px;
	}

	.adg-faq .adg-faq-r {
		padding: 0 16px 16px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.adg-faq .adg-faq-mas {
		transition: none;
	}
}

/* Sección vacía escondida (D90): la sección F de la Hub lleva la clase
   `adg-seccion-faq` en Avanzado → Atributos. Si la página no tiene
   preguntas, el shortcode no devuelve nada y la banda no ocupa alto. */
.adg-seccion-faq:not(:has(.adg-faq)) {
	display: none;
}

/* ---------- 1.26.0 · Buscador por nombre (listado general) ---------- */

.adg-listado .adg-firm[hidden],
.adg-listado .adg-busca-nada[hidden] {
	display: none;
}

.adg-listado .adg-busca {
	margin: 0 0 16px;
	padding: 16px 18px;
	background: var(--adg-white);
	border: 1px solid var(--adg-line);
	border-radius: var(--adg-r);
	box-shadow: var(--adg-shadow);
}

.adg-listado .adg-busca-l {
	display: block;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .6px;
	text-transform: uppercase;
	color: var(--adg-red);
	margin: 0 0 8px 3px;
	line-height: 1.3;
}

.adg-listado .adg-busca-c {
	position: relative;
	display: flex;
	gap: 10px;
}

.adg-listado .adg-busca-i {
	position: absolute;
	left: 13px;
	top: 50%;
	transform: translateY(-50%);
	width: 17px;
	height: 17px;
	fill: none;
	stroke: var(--adg-red);
	stroke-width: 2;
	pointer-events: none;
}

.adg-listado .adg-busca-q {
	flex: 1 1 auto;
	min-width: 0;
	font: inherit;
	font-size: 16px;
	line-height: 1.4;
	color: var(--adg-ink);
	background: var(--adg-paper-2);
	border: 1px solid var(--adg-line);
	border-radius: 11px;
	padding: 12px 14px 12px 40px;
	margin: 0;
	height: auto;
	-webkit-appearance: none;
	appearance: none;
}

.adg-listado .adg-busca-q:focus {
	outline: 2px solid var(--adg-brass-lite);
	outline-offset: 1px;
	background: var(--adg-white);
}

.adg-listado .adg-busca-b {
	flex: 0 0 auto;
	border: 0;
	border-radius: 11px;
	background: var(--adg-red);
	color: #fff;
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	padding: 0 22px;
	cursor: pointer;
}

.adg-listado .adg-busca-b:hover,
.adg-listado .adg-busca-b:focus-visible {
	background: var(--adg-red-hi);
}

.adg-listado .adg-busca-nada {
	margin-top: 14px;
}

.adg-listado .adg-busca-nada a {
	color: var(--adg-red);
	font-weight: 700;
}

@media (max-width: 480px) {
	.adg-listado .adg-busca {
		padding: 14px;
	}

	.adg-listado .adg-busca-b {
		padding: 0 16px;
	}
}

/* 1.26.1 · La plantilla «Transversal» (copia de la Hub, 12 oct) hereda todas
   las reglas de la Hub de arriba: sin ellas, Divi volvía a meter su hueco de
   fábrica entre filas (60 px entre la migaja y la caja oscura). */
