@charset "UTF-8";
/*
Theme Name: Xixón al Día
Theme URI: https://xixonaldia.com/
Author: Xixón al Día
Author URI: https://xixonaldia.com/
Description: Tema clásicu de xixonaldia.com. Ensin compilación, ensin constructor visual y ensin dependencies: lo que hai equí ye lo que corre nel sirvidor. El sistema visual entero ta en docs/adr/0015-identida-visual.md.
Version: 0.13.0
Requires at least: 6.4
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: xixonaldia
Tags: news, blog, custom-menu, translation-ready, accessibility-ready
*/

/* ===========================================================================
   AVISO 1 — POR QUÉ ESTE FICHERU EMPIEZA CON @charset

   Los nomes de variable que fixa ADR-0015 lleven acentu y eñe:
   --xal-escuro-apagáu, --xal-claro-apagáu, --xal-pegañosu. Ye CSS válidu, pero
   si la fueya se interpreta nuna codificación que nun ye UTF-8, el nome NUN
   casa y el valor cáyese ensin avisar: nun hai error en consola, nun hai avisu,
   la páxina carga y el color ta mal. @charset zarra esa puerta.

   WordPress llee la cabecera del tema con una expresión regular sobre los
   primeros 8 KB del ficheru, non pola posición: poner @charset delantre NON
   rompe el reconocimientu del tema.

   AVISO 2 — EL RADIU DE LES ESQUINES NUN S'ESCRIBE NUNCA, NIN NUN COMENTARIU

   ADR-0015, «Cómo se verifica», puntu 3: el conteu d'esa propiedá nesti
   ficheru tien que dar CERO, y el grep que lu mide nun distingue una regla
   d'un comentariu. Poro nun s'escribe la propiedá en nengún sitiu, nin equí.
   La variable --xal-requexu declárase pero nun s'aplica: aplicala obligaría a
   escribila. Nun fai falta, porque'l valor ye 0 y 0 ye lo que val por defeutu;
   la variable queda como declaración d'intención. Les esquines rectes de los
   controles del formulariu consíguense con appearance: none.

   AVISO 3 — LO QUE container-type FAI, Y LO QUE NON FAI

   Esto ta MIDÍO nun navegador, non lleío na especificación. La especificación
   diz que container-type aplica contención de disposición, y d'ehí sacaríase
   que l'elementu se vuelve bloque contenedor de los sos descendientes con
   position: fixed y qu'abre contestu d'apiláu. Nel navegador NUN pasa nin una
   cosa nin la otra:

     - un position: fixed dientro de .xal-sitiu sigue midiéndose contra la
       ventana (top 0 dempués de baxar 1500 px);
     - un z-index de dientro NON queda atrapáu: gana a un hermanu de .xal-sitiu.

   Poro, DOS coses:

   1. El menú llateral cuelga de <body> por otres razones, non por esa: quier el
      so propiu container-type —el so conteníu tien que midise contra'l panel y
      non contra la páxina— y va delantre de .xal-sitiu pa que `:target` nun
      dea un saltu de scroll. Nun se mueva de sitiu.
   2. ⚠ Como .xal-sitiu NUN abre contestu d'apiláu, el z-index de la cabecera
      (20) y el del menú (80) compiten na MESMA pila. Un elementu de dientro con
      z-index mayor de 80 travesaría'l velu del menú. Nun subas d'ehí ensin
      mirar esto.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   1. Les fontes (ADR-0015 § 3)

   ⚠ font-stretch: 62% 125% ye OBLIGATORIU. Ensin esti descriptor el navegador
   trata la fonte como d'anchu únicu y DESCARTA toles declaraciones de
   font-stretch de les regles, anque'l ficheru traiga l'exe wdth. La páxina
   carga, la consola ta llimpio, y TOLOS titulares del sitiu salen anchos.
   Los dos valores son los del ficheru midíu, non los que s'usen.

   Nun se recorta el conxuntu de carauteres: la ḥ asturiana y la flecha ↗ tán
   fuera de «latin». ADR-0015 § 3.
   --------------------------------------------------------------------------- */

@font-face {
	font-family: 'Archivo';
	src: url('fonts/Archivo[wdth,wght].woff2') format('woff2-variations');
	font-weight: 100 900;
	font-stretch: 62% 125%;
	font-display: swap;
}

@font-face {
	font-family: 'JetBrains Mono';
	src: url('fonts/JetBrainsMono[wght].woff2') format('woff2-variations');
	font-weight: 100 800;
	font-display: swap;
}

/* ---------------------------------------------------------------------------
   2. El sistema: 34 pasos con nome (ADR-0015 § 1)

   Nenguna regla d'esti ficheru lleva un númberu de color, d'espaciáu o de
   tamañu. Si un valor fai falta y nun ta equí, AÑÁDESE EQUÍ, non na regla.

   La unidá ye cqi, non vw: .xal-sitiu declara container-type: inline-size, y
   asina un bloque puestu na columna llateral compórtase como bloque de columna
   llateral y non como bloque de portada.
   --------------------------------------------------------------------------- */

:root {
	/* --- Retícula ------------------------------------------------- */
	--xal-anchu-max:      1560px;
	--xal-marxe:          clamp(14px, 2.6cqi, 44px);   /* marxe llateral */
	--xal-alto-cabecera:  clamp(58px, 4.8cqi, 72px);
	--xal-alto-logo:      clamp(24px, 2.6cqi, 36px);
	--xal-pegañosu:       clamp(72px, 5.6cqi, 88px);   /* top de lo pegañoso */
	--xal-requexu:        0;                           /* el radiu de les esquines. Cero. Ver AVISO 2 */

	/* --- Espaciáu: ocho pasos, y nin unu más ---------------------- */
	--xal-e1:  clamp( 6px, 0.8cqi, 12px);
	--xal-e2:  clamp( 9px, 1.1cqi, 15px);
	--xal-e3:  clamp(12px, 1.4cqi, 20px);
	--xal-e4:  clamp(14px, 1.7cqi, 26px);
	--xal-e5:  clamp(17px, 2.1cqi, 34px);
	--xal-e6:  clamp(20px, 2.5cqi, 44px);
	--xal-e7:  clamp(24px, 3.0cqi, 56px);
	--xal-e8:  clamp(30px, 4.0cqi, 74px);

	/* --- Tamaños de titular (Archivo) ----------------------------- */
	--xal-t1:  clamp(13px, 1.05cqi, 15px);
	--xal-t2:  clamp(14px, 1.15cqi, 17px);
	--xal-t3:  clamp(15px, 1.35cqi, 20px);
	--xal-t4:  clamp(17px, 1.5cqi,  23px);
	--xal-t5:  clamp(19px, 1.8cqi,  28px);
	--xal-t6:  clamp(22px, 2.1cqi,  34px);
	--xal-t7:  clamp(28px, 3.2cqi,  52px);
	--xal-t8:  clamp(32px, 4.4cqi,  72px);
	--xal-t9:  clamp(42px, 6.4cqi, 112px);
	--xal-t10: clamp(96px, 17cqi,  300px);   /* la cifra «404», y nada más */

	/* --- Testu llargu (Archivo 400) ------------------------------- */
	--xal-cuerpu:      clamp(16px, 1.3cqi,  18px);
	--xal-entradiella: clamp(14px, 1.25cqi, 19px);
	--xal-estractu:    clamp(13px, 1.05cqi, 15px);
	--xal-pie-semeya:  clamp(11px, 0.95cqi, 13px);

	/* --- Metadatu (JetBrains Mono) -------------------------------- */
	--xal-m1: 9px;                          /* el metadatu, 232 usos */
	--xal-m2: 10px;                         /* botones, paxinación, migues */
	--xal-m3: clamp(10px, 0.95cqi, 13px);   /* rótulu de banda */
	--xal-m4: 15px;                         /* la cifra d'un bloque */

	/* --- Dimensiones de semeya ------------------------------------ */
	--xal-miniatura:       clamp( 46px,  4.4cqi,  64px);  /* cuadrada 1/1 */
	--xal-miniatura-media: clamp( 72px,  7cqi,   108px);
	--xal-miniatura-ancha: clamp( 76px,  8cqi,   136px);
	--xal-semeya-1: clamp(110px,  9cqi,   146px);   /* tarxeta de rexella */
	--xal-semeya-2: clamp(124px, 10.5cqi, 182px);   /* destacada de bloque */
	--xal-semeya-3: clamp(185px, 20cqi,   330px);   /* apertura de seición */
	--xal-semeya-4: clamp(195px, 24cqi,   420px);   /* apertura de portada */

	/* --- AÑADÍO POL TRAMU 1 DE T-006 ------------------------------
	   ADR-0015 nun trai nin anchu de panel nin xeometría d'iconu, y les dos
	   coses son d'esti tramu. La respuesta correuta ye AÑADIR el valor equí,
	   non poner un númberu suelto na regla («Consecuencias» del ADR).

	   ⚠ Esto NON son pasos d'escala. La escala d'espaciáu y la de titular
	   siguen teniendo ocho y diez pasos, los del ADR. El avisu del ADR
	   —«si fai falta añader más de dos o tres, la escala ta mal»— refierse a
	   esos pasos, non a la midida d'un iconu.

	   La xeometría del burger ye la del mock, midida: caxa de 22 × 14, tres
	   rayes de 2 px y la del mediu más curtia. Los 4 px d'aire nun se
	   escriben: salen de repartir el güecu con space-between.        */
	/* La midida ye la del mock —clamp(180px, 46vw, 320px)—, en cqi y non en vw
	   porque ADR-0015 § 1 nun dexa nin una sola escepción de vw. Dientro d'un
	   `position: fixed` que ye'l so propiu contenedor, 46cqi ye 46vw. */
	--xal-anchu-menu:   clamp(180px, 46cqi, 320px);
	--xal-anchu-llau:   clamp(220px, 17cqi, 300px);  /* la columna llateral del articulu */
	--xal-anchu-testu:  900px;                       /* el bloque de comentarios */

	/* L'anchu del artículu enteru: cuerpu (70ch ≈ 722 px) + aire + la columna
	   llateral. Añadíu el 2026-09-01: ensin él, el bloque de conteníu midía
	   1.000 px dientro d'una caxa de 1.351 y quedaba pegáu a la manzorga, con
	   350 px d'aire muertu a la derecha. Midío, non aparente. */
	--xal-anchu-articulu: 1020px;

	/* Xeometria FIXA: ornamentos que NON escalen. Nun son pasos d'escala -la
	   d'espaciau sigue teniendo ocho y la de titular diez, les del ADR-. Son
	   midides d'iconu, y un iconu que crez con el contenedor deforma. */
	--xal-iconu:         22px;  /* anchu de los iconos de la cabecera */
	--xal-iconu-curtiu:  14px;  /* la raya curtia del indiz, y l'altor de la caxa */
	--xal-raya-marcador:  9px;  /* l'anchu de raya del marcador de semeya */
	--xal-cuadru-llau:    6px;  /* el cuadradin ambre del bloque de tema */
	--xal-avatar:        38px;  /* l'avatar d'un comentariu */

	/* --- AÑADÍO NOS ARREGLOS DE LA PRIMERA REVISIÓN (2026-09-01) ---
	   Otra vuelta lo mesmo: la respuesta correuta ye añadir el valor equí y
	   non poner un númberu suelto na regla. Nengún d'estos ye un pasu
	   d'escala. */
	--xal-columna-pie:  clamp(112px, 9cqi, 150px);   /* anchu mínimu d'una columna de la llista del pie */
	--xal-anchu-sofitu: clamp(150px, 14cqi, 220px);  /* el logotipu del Principáu nel pie */
	--xal-desvanecíu:   clamp(18px, 3cqi, 34px);     /* lo que se desvanez nes vores de la navegación */
	/* El techu d'altor de la semeya d'apertura d'un artículu. Baxó de 760 a 520
	   el 2026-09-01: con 760, una foto 9:16 obligaba a rodar una pantalla
	   entera enantes de llegar a la primer llinia del testu. */
	--xal-semeya-alta:  clamp(280px, 40cqi, 520px);
}

/* ---------------------------------------------------------------------------
   3. La paleta: dos rampes y cuatro acentos (ADR-0015 § 2)

   Cada rampa tien el so propiu gris: fríos sobre escuro, cálidos sobre claro.
   NUN se mecen. Los 30 hexadecimales del mock consérvense unu a unu, y de les
   6 rgba consérvense 5.
   --------------------------------------------------------------------------- */

:root {
	/* Rampa escuro */
	--xal-escuro:        #0C0D12;   /* fondu */
	--xal-claro:         #F3F0EA;   /* testu sobre escuro, y fondu de la banda clara */
	--xal-escuro-testu2: #A2A3AE;   /* entradielles, navegación inactiva */
	--xal-escuro-meta:   #85868F;
	--xal-escuro-meta2:  #8A8B95;
	--xal-escuro-meta3:  #7C7D87;
	--xal-escuro-apagáu: #4C4D57;   /* llinia llegal, y lo desactiváu */
	--xal-escuro-borde:  #31333F;   /* borde de botón y de chip */
	--xal-escuro-filete: #22232C;   /* la separación principal */
	--xal-escuro-banda:  #1A1B23;
	--xal-escuro-banda2: #282A35;
	--xal-escuro-fondu2: #171922;   /* fondu de «Y amás» */
	--xal-escuro-marca1: #1A1C24;   /* les dos rayes del marcador de semeya */
	--xal-escuro-marca2: #13151B;

	/* Rampa clara */
	--xal-claro-testu:    #1C1D24;  /* cuerpu del artículu */
	--xal-claro-testu2:   #3A3B44;  /* titulares secundarios y chips */
	--xal-claro-testu3:   #5B5952;  /* entradiella, pie de semeya */
	--xal-claro-meta:     #6E6C66;  /* fecha, «Ver too», «Cargar más» */
	--xal-claro-apagáu:   #8C8A82;
	--xal-claro-filete:   #DBD7CF;  /* separación ente pieces */
	--xal-claro-filete2:  #E4E0D9;  /* separación DIENTRO d'una llista */
	--xal-claro-fondu2:   #EDEAE4;  /* fondu d'avatar, y raya del marcador */
	--xal-claro-marca:    #E2DED6;  /* la otra raya del marcador de semeya */
	--xal-blancu:         #fff;     /* campos del formulariu, testu sobre azul */
	--xal-claro-inactivu: #B3B0A8;  /* «← Anterior» desactiváu */
	--xal-claro-puntos:   #A9A69E;  /* los … de la paxinación */

	/* Acentos */
	--xal-azul:        #4E6BF5;  /* seición, :hover de too enllaz, ::selection */
	--xal-azul-fondu:  #1E3FE0;  /* menú llateral, botones d'aición, enllaces del cuerpu */
	--xal-ambre:       #E8B23A;  /* aniellu de focu, pestaña activa, mes actual */
	--xal-ambre-marca: #F6E4B4;  /* el <mark> de la gueta, y nada más */

	/* Tresparencies */
	--xal-velu:         rgba(13,13,15,.55);    /* el velu del menú */
	--xal-llinia-menu:  rgba(255,255,255,.3);  /* llinies dientro del menú azul */
	--xal-llinia-menu2: rgba(255,255,255,.28);
	--xal-llinia-menu3: rgba(255,255,255,.35);
	--xal-campu-menu:   rgba(0,0,0,.18);       /* el campu de gueta del menú */
}

/* ---------------------------------------------------------------------------
   4. LES BANDES (ADR-0015 § 2) — ESTO YE LO QUE NUN SE PUEDE ROMPER

   Una pieza usa var(--xal-testu) y var(--xal-filete) y NUN SABE en qué banda
   ta. La banda ye la que los define. Esto ye lo que fai que nengún componente
   de los tramos 2 y 3 haiga qu'escribilu dos vegaes, en versión clara y
   escura.

   Si una pieza nueva precisa un color que nun ta nesti xuegu, añádese a los
   TRES sitios —el :root d'abaxo y les dos bandes—, nunca na regla del
   componente. Si t'atopes escribiendo .xal-banda-escura .lo-que-sea, para: ye
   la señal de que fai falta un token.

   ⚠ EL SUELU DEL SITIU YE ESCURO. Midío nel mock: el `div` raíz lleva de fondu
   el color de --xal-escuro, y les bandes clares son seiciones DIENTRO. Poro los
   valores por defeutu de :root son los de la rampa escura — asina una pieza
   suelta, fuera de toa banda, sal col color del suelu y non al revés.
   --------------------------------------------------------------------------- */

:root {
	--xal-fondu:        var(--xal-escuro);
	--xal-testu:        var(--xal-claro);
	--xal-testu2:       var(--xal-escuro-testu2);
	--xal-meta:         var(--xal-escuro-meta);
	--xal-apagáu:       var(--xal-escuro-apagáu);
	--xal-filete:       var(--xal-escuro-filete);
	--xal-filete2:      var(--xal-escuro-banda);
	--xal-borde:        var(--xal-escuro-borde);
	--xal-inactivu:     var(--xal-escuro-apagáu);
	--xal-hover:        var(--xal-azul);
	--xal-campu:        var(--xal-escuro-banda);  /* fondu d'un campu de formulariu */
	--xal-campu-testu:  var(--xal-claro);
	--xal-aicion:       var(--xal-azul-fondu);    /* fondu d'un botón d'aición */
	--xal-aicion-testu: var(--xal-blancu);
	--xal-marcador1:    var(--xal-escuro-marca1); /* les dos rayes del marcador */
	--xal-marcador2:    var(--xal-escuro-marca2);
	--xal-testu3:       var(--xal-escuro-meta3);  /* estractu d'un resultáu */
}

.xal-banda-escura {
	--xal-fondu:        var(--xal-escuro);
	--xal-testu:        var(--xal-claro);
	--xal-testu2:       var(--xal-escuro-testu2);
	--xal-meta:         var(--xal-escuro-meta);
	--xal-apagáu:       var(--xal-escuro-apagáu);
	--xal-filete:       var(--xal-escuro-filete);
	--xal-filete2:      var(--xal-escuro-banda);
	--xal-borde:        var(--xal-escuro-borde);
	--xal-inactivu:     var(--xal-escuro-apagáu);
	--xal-hover:        var(--xal-azul);
	--xal-campu:        var(--xal-escuro-banda);
	--xal-campu-testu:  var(--xal-claro);
	--xal-aicion:       var(--xal-azul-fondu);
	--xal-aicion-testu: var(--xal-blancu);
	--xal-marcador1:    var(--xal-escuro-marca1);
	--xal-marcador2:    var(--xal-escuro-marca2);
	--xal-testu3:       var(--xal-escuro-meta3);
	background-color: var(--xal-fondu);
	color: var(--xal-testu);
}

.xal-banda-clara {
	--xal-fondu:        var(--xal-claro);
	--xal-testu:        var(--xal-claro-testu);
	--xal-testu2:       var(--xal-claro-testu2);
	--xal-meta:         var(--xal-claro-meta);
	--xal-apagáu:       var(--xal-claro-apagáu);
	--xal-filete:       var(--xal-claro-filete);
	--xal-filete2:      var(--xal-claro-filete2);
	--xal-borde:        var(--xal-claro-filete);
	--xal-inactivu:     var(--xal-claro-inactivu);
	--xal-hover:        var(--xal-azul);
	--xal-campu:        var(--xal-blancu);
	--xal-campu-testu:  var(--xal-claro-testu);
	--xal-aicion:       var(--xal-azul-fondu);
	--xal-aicion-testu: var(--xal-blancu);
	--xal-marcador1:    var(--xal-claro-marca);
	--xal-marcador2:    var(--xal-claro-fondu2);
	--xal-testu3:       var(--xal-claro-testu3);
	background-color: var(--xal-fondu);
	color: var(--xal-testu);
}

/* El panel azul del menú ye un TERCER contestu, non una escepción.
   Se resuelve del mesmu mou: redefiniendo los tokens. Asina'l formulariu de
   gueta ye UN solu formulariu y nun hai que reescribilu pa cuando ta dientro
   del menú. Ye lo mesmo que fai ADR-0015 § 2 con les dos bandes; el ADR nun lu
   nomó porque'l menú nun ye una banda de la páxina, pero'l mecanismu ye ésti.
   ⚠ Equí'l :hover ye ESCURO, non azul (inventariu § 9). */
.xal-banda-menu {
	--xal-fondu:        var(--xal-azul-fondu);
	--xal-testu:        var(--xal-blancu);
	--xal-testu2:       var(--xal-blancu);
	--xal-meta:         var(--xal-blancu);
	--xal-apagáu:       var(--xal-blancu);
	--xal-filete:       var(--xal-llinia-menu);
	--xal-filete2:      var(--xal-llinia-menu2);
	--xal-borde:        var(--xal-llinia-menu3);
	--xal-inactivu:     var(--xal-llinia-menu);
	--xal-hover:        var(--xal-escuro);
	--xal-campu:        var(--xal-campu-menu);
	--xal-campu-testu:  var(--xal-blancu);
	--xal-aicion:       var(--xal-blancu);
	--xal-aicion-testu: var(--xal-azul-fondu);
	--xal-marcador1:    var(--xal-llinia-menu2);
	--xal-marcador2:    var(--xal-campu-menu);
	--xal-testu3:       var(--xal-blancu);
	background-color: var(--xal-fondu);
	color: var(--xal-testu);
}

/* ---------------------------------------------------------------------------
   5. Base
   --------------------------------------------------------------------------- */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

body {
	margin: 0;
	background-color: var(--xal-fondu);
	color: var(--xal-testu);
	font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-size: var(--xal-cuerpu);
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
}

/* El contenedor raíz. Tolos cqi de :root resuélvense contra esti anchu.
   ⚠ Ver AVISO 3: esto vuélvelu bloque contenedor de los fixed de dientro. */
.xal-sitiu {
	container-type: inline-size;
	font-size: var(--xal-cuerpu);
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

h1, h2, h3, h4, h5, h6, p, figure, blockquote, ul, ol, dl {
	margin: 0;
}

ul, ol {
	padding: 0;
	list-style: none;
}

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

a {
	color: inherit;
	text-decoration: none;
	transition: color .12s ease;
}

/* El :hover sal del contestu, non d'un color fixu: azul na páxina y escuro
   dientro del menú azul (inventariu § 9). Una pieza nun sabe ónde ta. */
a:hover {
	color: var(--xal-hover);
}

/* El focu vese siempre (ADR-0015 § 6, regla 6). Nun s'anula en nenguna regla
   d'esti ficheru: la comprobación 5 del ADR busca el contorno anuláu y nun
   distingue una regla d'un comentariu, asina que nin equí s'escribe. */
:focus-visible {
	outline: 2px solid var(--xal-ambre);
	outline-offset: 2px;
}

::selection {
	background-color: var(--xal-azul);
	color: var(--xal-blancu);
}

/* Ensin appearance: none, Safari y iOS ponen esquines redondiaes a los
   controles. Nun se correx con la propiedá del radiu: ver AVISO 2. */
input, button, select, textarea {
	appearance: none;
	-webkit-appearance: none;
	font: inherit;
	color: inherit;
	background-color: transparent;
	border: 0;
	margin: 0;
}

button, [type='submit'] {
	cursor: pointer;
}

@media (prefers-reduced-motion: reduce) {
	* {
		transition-duration: .01ms !important;  /* anula la transición del núcleu y la propia */
		animation-duration: .01ms !important;
		scroll-behavior: auto !important;
	}

	/* ⚠ Y EQUÍ NUN VA UNA ESCEPCIÓN PA `.xal-nav`, que ye lo que paecía que
	   faía falta.

	   El desvanecíu de les dos vores de la navegación —más abaxo— muévese con
	   `animation-timeline: scroll()`: nun se mueve solu, el so reló ye'l dedu
	   de quien rueda, igual que una barra de scroll. La dulda yera si esti
	   `animation-duration: .01ms !important` lu rompía, dexándolu saltar al
	   últimu fotograma en cuanto se rodara un píxel —que diría una mentira:
	   «nun queda nada a la derecha»—.

	   **Midióse, y non:** en Chromium 148, cola duración forzada a .01ms, la
	   vera esquierda sigue dando 0 px al 0 %, 5,9 al 2 %, 18 a la metá y la
	   derecha 0 al final; esautamente lo mesmo que con `auto`. Nuna llinia de
	   tiempu de progresu la duración en segundos nun manda. Poro nun se escribe
	   una regla que nun fai nada. */
}

/* ---------------------------------------------------------------------------
   6. Tipografía (ADR-0015 § 4)

   Un pasu tipográficu NUN ye un tamañu: ye un paquete de cuatro valores,
   porque l'anchu, l'interletraxe y la interlinia van pegaos al cuerpu. Ensin
   compilación nun hai mixin, asina que'l paquete ye una CLASE. El marcáu lleva
   class="xal-tit xal-tit-4".

   El pesu queda FUERA de la escala y ye llibre (400–800).
   --------------------------------------------------------------------------- */

.xal-tit { font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif; text-wrap: pretty; }

.xal-tit-1 { font-size: var(--xal-t1); font-stretch: 93%; letter-spacing: -.013em; line-height: 1.2;  }
.xal-tit-2 { font-size: var(--xal-t2); font-stretch: 92%; letter-spacing: -.018em; line-height: 1.15; }
.xal-tit-3 { font-size: var(--xal-t3); font-stretch: 92%; letter-spacing: -.021em; line-height: 1.15; }
.xal-tit-4 { font-size: var(--xal-t4); font-stretch: 90%; letter-spacing: -.026em; line-height: 1.1;  }
.xal-tit-5 { font-size: var(--xal-t5); font-stretch: 89%; letter-spacing: -.029em; line-height: 1.05; }
.xal-tit-6 { font-size: var(--xal-t6); font-stretch: 88%; letter-spacing: -.032em; line-height: 1.02; }
.xal-tit-7 { font-size: var(--xal-t7); font-stretch: 86%; letter-spacing: -.038em; line-height: 0.94; }
.xal-tit-8 { font-size: var(--xal-t8); font-stretch: 85%; letter-spacing: -.045em; line-height: 0.90; }
.xal-tit-9 { font-size: var(--xal-t9); font-stretch: 84%; letter-spacing: -.05em;  line-height: 0.87; }
.xal-tit-10{ font-size: var(--xal-t10);font-stretch: 80%; letter-spacing: -.06em;  line-height: 0.78; }

.xal-tit-7, .xal-tit-8, .xal-tit-9, .xal-tit-10 { text-wrap: balance; }

/* El metadatu en Mono ye una sola regla repetida 232 vegaes nel mock.
   ⚠ La flecha ↗ (U+2197) NUN ta n'Archivo, sí en Mono: va SIEMPRE dientro d'un
   .xal-meta. Puesta nun titular sal cola fonte de respaldu. */
.xal-meta {
	font: 500 var(--xal-m1)/1 'JetBrains Mono', ui-monospace, Consolas, monospace;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.xal-meta--m2 { font-size: var(--xal-m2); }
.xal-meta--m3 { font-size: var(--xal-m3); }
.xal-meta--m4 { font-size: var(--xal-m4); }

.xal-entradiella { font-size: var(--xal-entradiella); line-height: 1.4; color: var(--xal-testu2); }
.xal-estractu    { font-size: var(--xal-estractu);    line-height: 1.5; color: var(--xal-testu2); }
.xal-pie-semeya  { font-size: var(--xal-pie-semeya);  line-height: 1.4; color: var(--xal-meta); }

/* ---------------------------------------------------------------------------
   7. Retícula
   --------------------------------------------------------------------------- */

.xal-caxa {
	width: 100%;
	max-width: var(--xal-anchu-max);
	margin-inline: auto;
	padding-inline: var(--xal-marxe);
}

.xal-conteniu {
	flex: 1 0 auto;
}

/* ⚠ <main> NON lleva .xal-caxa. Les bandes van de vera a vera y la caxa va
   DIENTRO de cada una; ponela tamién nel <main> aplicaba'l marxe dos vegaes.
   Les pantalles que nun tienen bandes propies —index.php— usen esti
   envoltoriu. */
.xal-conteniu__caxa {
	padding-block: var(--xal-e6);
}

/* El saltu al conteníu. Ye la primera parada del tabulador y tien que verse
   cuando toma'l focu: si non, nun sirve pa nada. */
.xal-saltu {
	position: fixed;
	top: var(--xal-e3);
	left: var(--xal-e3);
	z-index: 100;
	padding: var(--xal-e2) var(--xal-e4);
	background-color: var(--xal-ambre);
	color: var(--xal-escuro);
	transform: translateY(-200%);
}

.xal-saltu:focus {
	transform: translateY(0);
	color: var(--xal-escuro);
}

/* La definición del logo. Ver inc/marca.php: píntase una sola vez por
   documentu y reutilízase con <use>. */
.xal-logo-def {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
}

/* ---------------------------------------------------------------------------
   8. Cabecera (ADR-0015 § 8 y § 9, y la xeometría del mock)

   ÍNDIZ + LOGO + NAVEGACIÓN + GUETAR, y nada más. El reló-tiempu que'l mock
   pon ente la navegación y Guetar ta FUERA, y el bloque d'Instagram tamién
   (ADR-0015 § 9).

   ⚠ PEGAÑOSA, y midío que sigue siéndolo dientro de .xal-sitiu: dempués de
   baxar 1500 px la cabecera queda en top 0. Lo que sí ruempe `position: sticky`
   ye un `overflow` distintu de `visible` nun antepasáu — nun lu añadas a
   .xal-sitiu nin a <body>.
   --------------------------------------------------------------------------- */

.xal-cabecera {
	position: sticky;
	top: 0;
	z-index: 20;
	border-bottom: 1px solid var(--xal-filete);
}

.xal-cabecera__caxa {
	display: flex;
	align-items: center;
	gap: var(--xal-e4);
	min-height: var(--xal-alto-cabecera);

}

/* El índiz. Nel mock ye un <button> porque'l mock tien JavaScript; equí ye un
   enllaz, porque lo que abre'l panel ye `:target` y eso funciona col script
   desactiváu. Les tres rayes son de 2 px —gramática de filetes, § 6.2 del
   inventariu— y los 4 px d'aire salen de repartir el güecu, non d'un `gap`
   escritu a mano. */
.xal-indiz {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	width: var(--xal-iconu);
	height: var(--xal-iconu-curtiu);
	color: var(--xal-testu);
}

.xal-indiz:hover {
	color: var(--xal-hover);
}

.xal-indiz__raya {
	display: block;
	height: 2px;
	background-color: currentColor;
}

.xal-indiz__raya--curtia {
	width: var(--xal-iconu-curtiu);
}

/* El logo va separáu de la navegación por un filete, como nel mock. */
.xal-marca {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	align-self: stretch;
	padding-right: var(--xal-e3);
	border-right: 1px solid var(--xal-filete);
	color: inherit;
}

/* height y width ganen a la regla d'arriba de svg por especificidá de clase.
   El logo hereda currentColor: el mesmu códigu val na cabecera escura y nel
   pie claro. Un <img> nun heredaría (ADR-0015 § 7). */
.xal-marca__logo {
	display: block;
	height: var(--xal-alto-logo);
	width: auto;
}

.xal-nav {
	flex: 1 1 auto;
	min-width: 0;
	overflow-x: auto;
	overscroll-behavior-inline: contain;
	scrollbar-width: none;
	-ms-overflow-style: none;

	/* La vera esvanecida diz «equí sigue habiendo», que ye lo que fai una barra
	   de scroll ensin ponela (orde de la persona, 2026-09-01).

	   ⚠ El `black` d'esta máscara NUN ye un color: nuna máscara namás cuenta
	   l'alfa, y `black` quier dicir «opaco». Nun sal de la paleta y nun tien
	   que salir de :root. El grep de la comprobación 1 d'ADR-0015 busca
	   hexadecimales y rgba(), y esto nun ye nin lo uno nin lo otro.

	   ESTA REGLA YE'L SUELU: esvanez namás pela derecha, que ye lo correuto nel
	   estáu inicial —nel principiu nun hai nada escondío a la esquierda— y ye
	   tamién lo que se ve nun navegador que nun sofite el bloque `@supports` de
	   más abaxo. Les dos vores vienen d'ellí, y nun precisen JavaScript. */
	mask-image: linear-gradient(
		to right,
		black calc(100% - var(--xal-desvanecíu)),
		transparent 100%
	);
}

/* ---------------------------------------------------------------------------
   LES DOS VORES DE LA NAVEGACIÓN, Y ENSIN JAVASCRIPT

   ⚠ ESTO CORRIX LO QUE TABA ESCRITO EQUÍ EL 2026-09-01. Aquel día quitóse esti
   códigu porque `animation-timeline: scroll()` daba `currentTime: null` coles
   trés formes, y apuntóse que la causa yera «seguramente'l container-type de
   .xal-sitiu». **Nun yera.** Midióse otra vuelta el 2026-09-02 en Chromium 148,
   con grupu de control fuera de tou container-type:

     barra que DESBORDA, dientro d'un container-type ..... 0% -> 50,7% -> 100%
     barra que DESBORDA, fuera de tou container-type ...... esautamente lo mesmo
     barra que NUN DESBORDA .............................. null

   `currentTime: null` nun diz «nun ta sofitao»: diz «esti desplazador nun
   desborda, asina que nun hai progresu que midir». Midióse nun escritoriu
   anchu, y ellí la navegación de seis estayes NUN desborda. Los númberos
   enteros tán nel anexu A de
   docs/planes/2026-09-02-arreglos-revision-1-tramu-4.md.

   ⚠ EL @supports NUN YE ADORNU. Ensin él, un navegador que nun conoza
   `animation-timeline` correría esta animación col reló del documentu: duración
   0s y `both`, o seya, saltaría al últimu fotograma y quedaría col desvanecíu
   al revés pa siempre. Con él, esi navegador queda cola regla d'enriba, que ye
   la que yá ta firmada.
   --------------------------------------------------------------------------- */

@property --xal-vera-esquierda {
	syntax: '<length>';
	inherits: false;
	initial-value: 0px;
}

@property --xal-vera-drecha {
	syntax: '<length>';
	inherits: false;
	initial-value: 0px;
}

/* Los dos topes de la máscara, movíos pol propiu scroll de la barra.
   El 6% y el 94% son el trechu nel que cada vera entra y sal, y **non un
   tiempu**: son parte del recorríu, asina que nuna barra que desborda pocu ye
   casi instantáneo y nuna que desborda muncho ye un degradáu. Midío: con 1.122
   px de recorríu, la vera esquierda val 3 px al 1 % y 18 px al 20 %. */
@keyframes xal-vores {
	0% {
		--xal-vera-esquierda: 0px;
		--xal-vera-drecha: var(--xal-desvanecíu);
	}

	6% {
		--xal-vera-esquierda: var(--xal-desvanecíu);
		--xal-vera-drecha: var(--xal-desvanecíu);
	}

	94% {
		--xal-vera-esquierda: var(--xal-desvanecíu);
		--xal-vera-drecha: var(--xal-desvanecíu);
	}

	100% {
		--xal-vera-esquierda: var(--xal-desvanecíu);
		--xal-vera-drecha: 0px;
	}
}

@supports (animation-timeline: scroll(self inline)) {
	.xal-nav {
		/* Los valores de partida, que son tamién los que queden si la barra
		   NUN desborda: ellí el ScrollTimeline queda inactivu y la animación
		   nun s'aplica. Esquierda 0 y derecha entera — la máscara de siempre,
		   ensin escribila dos veces. */
		--xal-vera-esquierda: 0px;
		--xal-vera-drecha: var(--xal-desvanecíu);

		animation: xal-vores linear both;
		animation-timeline: scroll(self inline);

		mask-image: linear-gradient(
			to right,
			transparent 0,
			black var(--xal-vera-esquierda),
			black calc(100% - var(--xal-vera-drecha)),
			transparent 100%
		);
	}
}

.xal-nav::-webkit-scrollbar {
	display: none;
}

.xal-nav__llista {
	display: flex;
	align-items: center;
	gap: var(--xal-e4);
	white-space: nowrap;
}

.xal-nav__enllaz {
	display: block;
	padding-block: var(--xal-e2);
	color: var(--xal-testu2);
}

.xal-nav__enllaz:hover {
	color: var(--xal-hover);
}

/* La seición na que tas: azul y más pesada, como nel mock. */
.xal-nav__enllaz[aria-current='page'] {
	font-weight: 600;
	color: var(--xal-azul);
}

/* Guetar. Abre'l so propiu panel, non el índiz: son dos coses distintes y dos
   controles distintos. El Popover API failo ensin JavaScript nin fragmentos. */
.xal-abrir {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: var(--xal-e1);
	padding: var(--xal-e2) var(--xal-e3);
	border: 1px solid var(--xal-borde);
	color: var(--xal-testu);
}

.xal-abrir:hover {
	border-color: var(--xal-testu);
	color: var(--xal-testu);
}

/* Un solu control, dos formes: lupa en pequeñu, palabra en grande. El cambiu
   ta na regla de contenedor de más abaxo; equí queda l'estáu por defeutu, que
   ye'l de pantalla estrecha —primero lo pequeño—. */
.xal-abrir__lupa {
	display: block;
	width: var(--xal-iconu);
	height: var(--xal-iconu);
}

.xal-abrir__testu {
	display: none;
}

/* El panel de gueta de la cabecera. Como popover vive na capa cimera: esto
   quita los valores iniciales del navegador y déxalu xusto baxo la cabecera.

   ⚠ CLASE NUEVA, `…__gueta-panel` y non `…__gueta`, y ye a costa fecha. El
   2026-09-02 midióse que'l sirvidor daba la fueya de 0.3.7 a tou'l que pidiera
   `br` o `gzip` —o seya, a tolos navegadores— y la de 0.3.8 a quien pidiera
   ensin comprimir —o seya, a `curl`—. Aquella fueya vieya trai
   `.xal-cabecera__gueta { display: none }`, asina que'l popover abría de verdá
   (`:popover-open` daba `true`) y nun se vía. Col nome nuevu, una fueya vieya
   nun casa con esti elementu: el peor casu ye que'l panel salga ensin estilar
   —caxa del navegador—, non que nun salga. Lo mesmo con `.xal-zarrar-panel`,
   que en 0.3.7 nacía `display: none`. Esto ye refuerzu: l'arreglu de la caché
   de comprimíos ta en TRAMPAS.md § «Al subir códigu a producción». */
.xal-cabecera__gueta-panel {
	position: fixed;
	inset: var(--xal-alto-cabecera) 0 auto;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-top: 1px solid var(--xal-filete);
	background-color: var(--xal-fondu);
	color: var(--xal-testu);
}

/* ⚠ Ensin Popover API l'atributu `popover` ignórase, el navegador NUN pon el
   `display: none` de partida y esti panel quedaría abiertu pa siempre baxo la
   cabecera, col aspa encima de la palabra «GUETAR» y ensin manera de zarralu.
   Midío'l 2026-09-02 quitando l'atributu a mano. Con esta guarda, un navegador
   ensin Popover nun lu amuesa: el control queda inerte —degradación—, non una
   barra rota en toles páxines. */
@supports not selector(:popover-open) {
	.xal-cabecera__gueta-panel {
		display: none;
	}
}

/* La testera invisible del popover ocupa la mesma caxa que la cabecera. El
   botón ye l'únicu fío que recibe eventos; el restu nun tapa la navegación. */
.xal-cabecera__zarrar-caxa {
	position: fixed;
	inset: 0 0 auto;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	min-height: var(--xal-alto-cabecera);
	pointer-events: none;
}

.xal-cabecera__gueta-caxa {
	display: flex;
	align-items: center;
	gap: var(--xal-e4);
	padding-block: var(--xal-e3);
}

.xal-cabecera__gueta-panel .xal-gueta {
	flex: 1 1 auto;
	min-width: 0;
}

/* ---------------------------------------------------------------------------
   9. Menú llateral (ADR-0015 § 8, inventariu § 11.2)

   ⚠ ABRE Y ZARRA ENSIN JAVASCRIPT: ye :target, que ye CSS. Criteriu
   d'aceptación de T-006 y regla 8 d'ADR-0015. Si daquién-y pon JavaScript
   enriba, que seya ENRIBA: esto tien que siguir funcionando col script
   desactiváu.

   ⚠ Cuelga de <body>, FUERA de .xal-sitiu. Ver AVISO 3: si se mete dientro
   d'un container-type, dexa de ser fixu y va col scroll.
   --------------------------------------------------------------------------- */

.xal-menu {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 80;
	container-type: inline-size;
}

/* Entra pola manzorga, como nel mock, y na mesma vera que'l índiz que lu abre.
   `justify-content` queda nel so valor inicial a costa fecha. */
.xal-menu:target {
	display: flex;
}

.xal-menu__velu {
	position: absolute;
	inset: 0;
	background-color: var(--xal-velu);
}

.xal-menu__panel {
	position: relative;
	display: flex;
	flex-direction: column;
	width: var(--xal-anchu-menu);
	max-width: 100%;
	height: 100%;
	overflow-y: auto;
	overscroll-behavior: contain;
	font-size: var(--xal-cuerpu);
	animation: xal-entrar .2s ease-out;

	/* La barra de scroll nun se ve —pidiólo la persona el 2026-09-01—, pero el
	   panel SIGUE desplazándose: con rueda, con dedu y col tecláu. Nun ye
	   `overflow: hidden`, que dexaría conteníu inalcanzable nes pantalles
	   baxes. Ye la mesma receta que yá usa `.xal-nav`. */
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.xal-menu__panel::-webkit-scrollbar {
	display: none;
}

@keyframes xal-entrar {
	from { transform: translateX(-100%); }
	to   { transform: translateX(0); }
}

/* La testera del panel repite la caxa de la cabecera del sitiu: mesmu altor, y
   la X ocupa esautamente el sitiu del índiz que lu abrió. */
/* ⚠ ESTABA con `gap` y ensin `justify-content`: la X y el logo quedaben
   apilotonaos a la manzorga y sobraba mediu renglón a la derecha. Yera lo que
   la persona vio'l 2026-09-01. Agora la X queda onde taben les tres rayes
   —eso nun se toca— y el logo va a la otra vera. */
.xal-menu__testera {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--xal-e4);
	min-height: var(--xal-alto-cabecera);
	padding-inline: var(--xal-marxe);
	border-bottom: 1px solid var(--xal-filete2);
}

/* El filete queda, pero camuda de llau: cola X a la manzorga y el logo a la
   derecha, el filete va DELANTRE del logo. Ye la mesma pieza que na cabecera
   del sitiu —el logo siempre lleva'l so filete al llau—, y la persona pidió
   caltenelu: «mantener algo de la portada ahí» (2026-09-01). */
.xal-menu__testera .xal-marca {
	padding-right: 0;
	border-right: 0;
	padding-left: var(--xal-e3);
	border-left: 1px solid var(--xal-filete2);
}

/* L'ASPA: la pieza de zarrar, escrita UNA VEZ.
   Úsala'l índiz llateral y el control de gueta de la cabecera. Nesti tema
   zarrar ye siempre un aspa — y por eso nun se escribe dos veces. */
.xal-aspa {
	position: relative;
	display: block;
	flex: 0 0 auto;
	width: var(--xal-iconu);
	height: var(--xal-iconu);
	color: var(--xal-testu);
}

.xal-aspa:hover {
	color: var(--xal-hover);
}

.xal-aspa .xal-indiz__raya {
	position: absolute;
	top: 50%;
	left: 0;
	width: 100%;
}

.xal-aspa .xal-indiz__raya:first-child { transform: translateY(-50%) rotate(45deg); }
.xal-aspa .xal-indiz__raya:last-child  { transform: translateY(-50%) rotate(-45deg); }

.xal-menu__grupu {
	flex: 0 0 auto;
	padding: var(--xal-e3) var(--xal-marxe);
}

.xal-menu__rotulu {
	display: block;
	margin-bottom: var(--xal-e2);
	color: var(--xal-meta);
	opacity: .75;
}

.xal-menu__llista {
	display: flex;
	flex-direction: column;
	gap: var(--xal-e2);
}

.xal-menu__enllaz {
	display: block;
	color: var(--xal-testu);
}

/* El pesu queda fuera de la escala tipográfica y ye llibre (ADR-0015 § 4).
   Va nun modificador y non en .xal-menu__enllaz porque los enllaces de «Más»
   son de Mono, y `.xal-meta` usa la forma curtia de `font`, que reafita'l
   pesu: puestu equí, el que ganara sería'l que tuviere más abaxo nel ficheru,
   que ye una forma mui mala de decidir un pesu. */
.xal-menu__enllaz--grande {
	font-weight: 700;
}

.xal-menu__grupu--mas {
	opacity: .85;
}

.xal-menu__grupu--mas .xal-menu__llista {
	gap: var(--xal-e1);
}

/* La gueta y les redes van al fondu del panel, como nel mock. */
.xal-menu__pie {
	flex: 0 0 auto;
	margin-top: auto;
	display: flex;
	flex-direction: column;
	gap: var(--xal-e2);
	padding: var(--xal-e3) var(--xal-marxe);
	border-top: 1px solid var(--xal-filete);
}

.xal-menu__redes {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e1) var(--xal-e3);
}

/* ---------------------------------------------------------------------------
   10. Formulariu de gueta

   Manda a home_url('/') con name="s", o seya /?s=… El mu-plugin xal-urls.php
   endereza eso a /gueta/xixon/ con un 301 (ADR-0012). Ensin el mu-plugin,
   /?s=… funciona igual: ye WordPress de serie. Eso ye degradar bien.
   --------------------------------------------------------------------------- */

.xal-gueta {
	display: flex;
	align-items: stretch;
	gap: var(--xal-e2);
}

.xal-gueta__etiqueta {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* ⚠ ESTE FORMULARIU ESCRÍBESE UNA SOLA VEZ. Val na banda clara, na escura y
   dientro del panel azul del menú, porque nun mira nengún color: mira'l
   contestu. Si daquién añade equí una regla .xal-menu .xal-gueta__…, ye que
   falta un token de banda — añádese arriba, non equí. */
.xal-gueta__campu {
	flex: 1 1 auto;
	min-width: 0;
	padding: var(--xal-e2) var(--xal-e3);
	border: 1px solid var(--xal-borde);
	background-color: var(--xal-campu);
	color: var(--xal-campu-testu);
}

.xal-gueta__campu::placeholder {
	color: var(--xal-apagáu);
	opacity: .7;
}

.xal-gueta__boton {
	flex: 0 0 auto;
	padding: var(--xal-e2) var(--xal-e4);
	background-color: var(--xal-aicion);
	color: var(--xal-aicion-testu);
}

.xal-gueta__boton:hover {
	background-color: var(--xal-escuro);
	color: var(--xal-claro);
}

/* ---------------------------------------------------------------------------
   11. Pie (inventariu § 11.4)

   ⚠ REPENSADO EL 2026-09-15, SEGUNDA VUELTA. La primera (0.12.x) quitó los
   centrados, y la persona contestó: «el footer en mobile se ve todo muy
   junto, falta espaciado. en tablets se ve raro […] debe mostrar una
   estructura clara en desktop, mobile y tablet, que sea legible y clara para
   el usuario, que sepa que cada cosa es algo diferente y no un puñado de
   texto amontonado». Y le gusta que sea todo texto, sin iconos.

   Lo que había detrás de «amontonado», medido en el espejo a 956 px: trece
   secciones, tres redes y seis enlaces legales con la MISMA letra (Mono, 10
   px, versales) y sin un solo rótulo, así que nada decía dónde acababa un
   grupo; y la marca sola en una celda enorme con las redes al otro lado.

   LA ESTRUCTURA, IGUAL EN LOS TRES ANCHOS:

     fila 1   la marca y el correo  ·············  el logotipu del Principáu
     fila 2   ESTAYES (rótulo) + la lista  ·······  REDES (rótulo) + la lista
     abajo    © y los enlaces legales, tras un filete

   En móvil la fila 2 se apila (Estayes y luego Redes); la fila 1 se queda en
   una fila desde 360 px y solo se apila en teléfonos más estrechos.

   Tres cosas hacen que cada grupo se lea como algo distinto, y ninguna es un
   icono:
     1. Un RÓTULO con filete encima, en negrita y en el color de texto fuerte,
        frente a los enlaces en `--xal-testu2`. Es la pieza del aside del mock.
     2. AIRE entre grupos (`e7`) claramente mayor que entre filas (`e3`).
     3. Los legales, con un punto medio entre enlaces cuando van en fila: sin
        él, «HISTORIAL DEL CONSENTIMIENTU RETIRAR EL CONSENTIMIENTU» se lee
        como una sola frase.

   El logotipu del Principáu va a la DERECHA de la marca, enfrente, y no bajo
   las redes: es la otra institución del pie, no un enlace más. Sin leyenda:
   «no por ahora» (2026-09-15).
   --------------------------------------------------------------------------- */

.xal-pie {
	flex: 0 0 auto;
	border-top: 1px solid var(--xal-filete);
	padding-block: var(--xal-e8) var(--xal-e6);
}

.xal-pie__rexella {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas:
		"marca"
		"sofitu"
		"estayes"
		"redes";
	gap: var(--xal-e7) var(--xal-e7);
	align-items: start;
}

/* Regla 9 de ADR-0015: sin menú de redes, footer.php no pinta ese <nav>, y
   un área con nombre pero sin hijo SÍ deja su fila y su `gap` en una rejilla
   de una columna. Por eso la rejilla lleva este modificador y la fila no
   existe. Desde 660 px la celda vacía queda a la derecha de Estayes, en la
   misma fila, y no añade altura. */
.xal-pie__rexella--ensin-redes {
	grid-template-areas:
		"marca"
		"sofitu"
		"estayes";
}

.xal-pie__marca {
	grid-area: marca;
	min-width: 0;
	color: var(--xal-testu);
}

/* ⚠ La marca de la cabecera lleva un filete a la derecha (§ 8), y en el pie
   era `display: flex` a todo el ancho de su celda: el filete salía como una
   raya vertical suelta en el borde de la celda —junto a FACEBOOK en la captura
   de tableta del 2026-09-15, y en el borde de la pantalla en móvil—. Aquí la
   marca mide lo que mide el logo y no lleva filete, igual que en el índice
   lateral lo cambia de lado (§ 10). */
.xal-pie__marca .xal-marca {
	display: inline-flex;
	padding-right: 0;
	border-right: 0;
}

.xal-pie__grupu {
	min-width: 0;
}

/* ⚠ La clase y el área se llaman `estayes`, NUNCA `seiciones`:
   `comprobar-sitiu.ps1` exige que la portada NO contenga «Seicion» (la palabra
   pública es «Estaya») y compara sin distinguir mayúsculas. En la 0.12.0 la
   clase `xal-pie__columna--seiciones` la puso en rojo nada más subir. */
.xal-pie__grupu--estayes {
	grid-area: estayes;
}

.xal-pie__grupu--redes {
	grid-area: redes;
}

/* El rótulo de grupo. Es un <h2> por accesibilidad —un lector de pantalla
   salta de grupo en grupo—, pero a la vista es metadato: la forma corta de
   `font` de `.xal-meta` pone el peso en 500, y esta regla va después. */
.xal-pie__rotulu {
	display: block;
	margin: 0 0 var(--xal-e4);
	padding-top: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
	font-weight: 700;
	letter-spacing: .18em;
	color: var(--xal-testu);
}

/* ⚠ ESTABA MAL, y ye lo que la persona vio'l 2026-09-01: catorce seiciones
   n'una tira vertical d'una sola columna. Agora enllenen l'anchu que tengan,
   que ye lo que fai un pie de periódicu.

   El `row-gap` sube de `e2` a `e3` el 2026-09-15 («todo muy junto»): con la
   altura de línea del <li>, el paso entre filas pasa de 34 a 37 px en móvil,
   que además es mejor zona de toque. */
.xal-pie__llista {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(var(--xal-columna-pie), 1fr));
	gap: var(--xal-e3) var(--xal-e4);
}

/* Las redes, una por fila: son tres, y en columna se leen como lista y no
   como una frase. */
.xal-pie__llista--redes {
	grid-template-columns: minmax(0, 1fr);
}

.xal-pie__enllaz {
	color: var(--xal-testu2);
}

/* ⚠ Blancu sobre tresparente: namás val sobre banda escura, y el pie ye
   escuru. Nun hereda `currentColor` porque ye un PNG, non un SVG. */
.xal-pie__sofitu {
	grid-area: sofitu;
	display: block;
	width: var(--xal-anchu-sofitu);
	height: auto;
	max-width: 100%;
}

/* Los enllaces llegales y de privacidá (menú «pie-llegal», seis dende T-018).
   Lo que pidió la persona el 07-09-2026, y sigue en pie:

   - Son los más PEQUEÑOS del pie: m1 (9 px), un puntu per baxo de les
     seiciones (m2). Ye información que nun s'esconde pero tampoco se destaca.
   - En pantalla pequeña (< 660 px) van UNU POR FILERA, con relleno vertical
     pa que la zona de calcar seya mayor que la lletra.
   - ⚠ Hasta el 2026-09-15 iban además CENTRADOS, y era lo único centrado de
     un pie alineado a la izquierda: «hay cosas centradas otras no». Uno por
     fila se queda; el centrado, no.
   - Dende 660 px fluyen n'una filera, con un punto medio entre enlaces.

   ⚠ `xal_nav_navegacion()` pon `xal-meta xal-meta--m2` en CADA <a>, non namás
   nel contenedor: una regla sobre la llista sola nun llega (midío na 0.7.3).
   Por eso el tamañu va nel <a>, que gana a `.xal-meta--m2` por especificidá. */
.xal-pie__llegal {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--xal-e3);
	margin-top: var(--xal-e8);
	padding-top: var(--xal-e5);
	border-top: 1px solid var(--xal-filete2);
	color: var(--xal-apagáu);
}

.xal-pie__llegal-llista {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--xal-e2);
}

.xal-pie__llegal-llista a {
	display: inline-block;
	padding-block: var(--xal-e1);
	font-size: var(--xal-m1);
	line-height: 1.4;
	color: var(--xal-testu2);
}

/* ⚠ Esta regla FAI FALTA: `.xal-pie__llegal-llista a` tien la mesma
   especificidá que'l `a:hover` xeneral del § 3 y va después, asina que ensin
   esto ganaba siempre y los seis enllaces nun camudaben de color (midío'l
   07-09-2026 col mur enriba: quedaben en --xal-testu2). */
.xal-pie__llegal-llista a:hover {
	color: var(--xal-hover);
}

/* Desde 360 px la marca y el Principáu comparten la primera fila, cada uno en
   su borde: a 375 caben (logo y correo ≈130 px, aire 24, Principáu 150) y en
   un teléfono de 320 no, por eso el corte está aquí y no en la base. */
@container (min-width: 360px) {
	.xal-pie__rexella {
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-areas:
			"marca   sofitu"
			"estayes estayes"
			"redes   redes";
	}

	.xal-pie__rexella--ensin-redes {
		grid-template-areas:
			"marca   sofitu"
			"estayes estayes";
	}

	.xal-pie__sofitu {
		justify-self: end;
	}
}

/* Tableta y escritorio: la segunda fila pone Estayes y Redes lado a lado. La
   columna de la derecha es la misma en las dos filas, así que el rótulo
   «Redes» arranca justo debajo del borde izquierdo del Principáu. */
@container (min-width: 660px) {
	.xal-pie__rexella {
		grid-template-areas:
			"marca   sofitu"
			"estayes redes";
		column-gap: var(--xal-e8);
	}

	/* `start` y no `end`: el logotipu tiene ancho fijo y la columna mide lo
	   que él, así que su borde izquierdo es el del rótulo «Redes». */
	.xal-pie__sofitu {
		justify-self: start;
	}

	.xal-pie__llegal-llista {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: var(--xal-e2) 0;
	}

	.xal-pie__llegal-llista li {
		display: flex;
		align-items: center;
	}

	/* El punto medio va en CSS y no en el menú: el menú lo edita una persona
	   desde el panel, y un separador escrito ahí saldría también en móvil,
	   donde van uno por fila. La segunda declaración de `content` da texto
	   alternativo vacío, para que un lector de pantalla no lea «punto»; un
	   navegador que no la entiende se queda con la primera.
	   ⚠ Cuando la fila salta de línea, la nueva empieza con «·». Se acepta: la
	   alternativa es un separador al final, que se queda colgando igual. */
	.xal-pie__llegal-llista li + li::before {
		content: "·";
		content: "·" / "";
		padding-inline: var(--xal-e3);
		color: var(--xal-apagáu);
	}
}

/* El rellenu vertical de calcar queda hasta les trés columnes: una tableta
   tamién ye deu, non mur. */
@container (min-width: 900px) {
	.xal-pie__llegal-llista a {
		padding-block: 0;
	}
}

/* ---------------------------------------------------------------------------
   12. Llista mínima d'entraes (index.php)

   Esto ye ANDAMIU. El tramu 2 escribe les once variantes de tarxeta del § 7
   del inventariu y esta regla desapaez. Nun se copie.
   --------------------------------------------------------------------------- */

.xal-llista {
	display: flex;
	flex-direction: column;
}

.xal-llista__item {
	padding-block: var(--xal-e4);
	border-bottom: 1px solid var(--xal-filete2);
}

.xal-llista__enllaz {
	display: block;
}

.xal-llista__meta {
	display: block;
	margin-bottom: var(--xal-e2);
	color: var(--xal-meta);
}

.xal-vacio {
	padding-block: var(--xal-e7);
	color: var(--xal-testu2);
}

/* La paxinación del núcleu, pa que nun salga ensin estilu nel tramu 1. */
.xal-conteniu .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e3);
	align-items: center;
	margin-top: var(--xal-e6);
	font: 500 var(--xal-m2)/1 'JetBrains Mono', ui-monospace, Consolas, monospace;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.xal-conteniu .page-numbers {
	display: inline-block;
	padding: var(--xal-e2) var(--xal-e3);
	border: 1px solid var(--xal-borde);
}

.xal-conteniu .page-numbers.current {
	background-color: var(--xal-escuro);
	color: var(--xal-claro);
}

.xal-conteniu .page-numbers.dots {
	border-color: transparent;
	color: var(--xal-claro-puntos);
}

/* ---------------------------------------------------------------------------
   13. Los cortes son de CONTENEDOR, non de medios (ADR-0015 § 6, regla 4)

   Los seis del sistema son 520, 660, 780, 900, 980 y 1180 px. Esti tramu usa
   los que precisa; los otros lléguenlos los tramos 2 y 3.
   --------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   La gueta zarra de tres maneres natives y ensin JavaScript: col aspa, al
   calcar fuera y con `Escape`. Nun toca URL, historial nin posición de lectura.
   --------------------------------------------------------------------------- */

.xal-zarrar-panel {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	padding: var(--xal-e2);
	border: 1px solid var(--xal-testu);
	color: var(--xal-testu);
	pointer-events: auto;
}

.xal-zarrar-panel:hover {
	border-color: var(--xal-testu);
	color: var(--xal-testu);
}

/* La lupa conserva'l so güecu nel flex mientres l'aspa, que vive na capa
   cimera, ocupa'l mesmu sitiu. Asina la navegación nun salta al abrir. */
.xal-cabecera:has(.xal-cabecera__gueta-panel:popover-open) .xal-abrir--abrir {
	visibility: hidden;
}

/* Un aspa dientro d'un control que hereda `currentColor`: nun precisa color
   propiu, y asina val na banda escura y na clara. */
.xal-zarrar-panel .xal-aspa {
	color: inherit;
}

/* De 900 p'arriba caben les seis estayes enteres al llau del logo y de la
   palabra «Guetar». Por baxo d'ahí manda lo pequeño: lupa y vores esvanecíes. */
@container (min-width: 900px) {
	.xal-abrir__lupa {
		display: none;
	}

	.xal-abrir__testu {
		display: block;
	}

	.xal-nav {
		mask-image: none;
	}
}

/* ---------------------------------------------------------------------------
   14. TRAMU 2 — les tarxetes, los bloques y l'artículu

   Too lo d'esta seición sal de los tokens de banda del § 4. NIN UNA regla
   escribe un color, y por eso la mesma tarxeta val na banda escura, na clara y
   na sub-banda de «Y amás». Si t'atopes escribiendo
   .xal-banda-escura .xal-tarxeta__loquesea, para: falta un token.
   --------------------------------------------------------------------------- */

/* --- 14.1 La sub-banda de «Y amás» -------------------------------------
   Ye la rampa escura otra vez, un pasu más p'arriba: el fondu ye
   --xal-escuro-fondu2 y los filetes --xal-escuro-banda2. Nun ye un componente:
   ye una banda, y resuélvese como les otres tres.

   ⚠ Nun escribas equí el valor hexadecimal, nin nun comentariu: la
   comprobación 1 d'ADR-0015 ye un grep y nun distingue una regla de la prosa
   que la esplica. Ver l'AVISO 2. */
.xal-banda-escura2 {
	--xal-fondu:        var(--xal-escuro-fondu2);
	--xal-testu:        var(--xal-claro);
	--xal-testu2:       var(--xal-escuro-testu2);
	--xal-meta:         var(--xal-escuro-meta);
	--xal-apagáu:       var(--xal-escuro-apagáu);
	--xal-filete:       var(--xal-escuro-banda2);
	--xal-filete2:      var(--xal-escuro-filete);
	--xal-borde:        var(--xal-escuro-borde);
	--xal-inactivu:     var(--xal-escuro-apagáu);
	--xal-hover:        var(--xal-azul);
	--xal-campu:        var(--xal-escuro-banda);
	--xal-campu-testu:  var(--xal-claro);
	--xal-aicion:       var(--xal-azul-fondu);
	--xal-aicion-testu: var(--xal-blancu);
	--xal-marcador1:    var(--xal-escuro-marca1);
	--xal-marcador2:    var(--xal-escuro-marca2);
	--xal-testu3:       var(--xal-escuro-meta3);
	background-color: var(--xal-fondu);
	color: var(--xal-testu);
	border-top: 1px solid var(--xal-filete);
	border-bottom: 1px solid var(--xal-filete);
	padding-block: var(--xal-e5);
}

/* --- 14.2 La tarxeta, la gramática común (inventariu § 7.1) ------------
   Nun ye una caxa: nun tien fondu propiu, nin borde alredor, nin solombra. La
   llenden l'espaciu y, como muncho, una llinia de 1 px. */
.xal-tarxeta {
	display: block;
	color: inherit;
}

.xal-tarxeta__testu {
	display: block;
}

/* El metadatu va SIEMPRE enriba del titular. */
.xal-tarxeta__meta {
	display: flex;
	gap: var(--xal-e2);
	margin-bottom: var(--xal-e2);
	color: var(--xal-meta);
}

.xal-tarxeta__meta--estremos {
	justify-content: space-between;
}

.xal-tarxeta__titular {
	display: block;
	color: var(--xal-testu);
}

/* El pesu queda fuera de la escala y ye llibre (ADR-0015 § 4). */
.xal-tarxeta__titular--500 { font-weight: 500; }
.xal-tarxeta__titular--600 { font-weight: 600; }
.xal-tarxeta__titular--700 { font-weight: 700; }
.xal-tarxeta__titular--800 { font-weight: 800; }

.xal-tarxeta:hover .xal-tarxeta__titular {
	color: var(--xal-hover);
}

.xal-tarxeta__entradiella {
	display: block;
	margin-top: var(--xal-e2);
}

/* --- 14.3 El güecu de semeya y el so marcador -------------------------- */
.xal-semeya {
	display: block;
	overflow: hidden;
	margin-bottom: var(--xal-e3);
	background-color: var(--xal-marcador2);
}

.xal-semeya__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Les dos rayes diagonales de cuando nun hai destacada. Nun ye andamiu del
   boceto: ADR-0015 § 2 conserva los cuatro colores del marcador con nome
   propiu, dos en cada rampa, y por eso la tarxeta guarda la so forma anque-y
   falte la semeya. */
.xal-semeya--marcador {
	background-image: repeating-linear-gradient(
		135deg,
		var(--xal-marcador1) 0 var(--xal-raya-marcador),
		var(--xal-marcador2) var(--xal-raya-marcador) calc(var(--xal-raya-marcador) * 2)
	);
}

.xal-semeya--1 { height: var(--xal-semeya-1); }
.xal-semeya--2 { height: var(--xal-semeya-2); }
.xal-semeya--4 { height: var(--xal-semeya-4); }
.xal-semeya--apertura { height: var(--xal-semeya-4); }

/* --- 14.4 La cabecera de banda ---------------------------------------- */
.xal-banda-testera {
	display: flex;
	align-items: center;
	gap: var(--xal-e3);
	padding-top: var(--xal-e2);
	margin-bottom: var(--xal-e4);
	border-top: 2px solid var(--xal-testu);
}

.xal-banda-testera--azul  { border-top-color: var(--xal-azul); }
.xal-banda-testera--ambre { border-top-width: 3px; border-top-color: var(--xal-ambre); }
.xal-banda-testera--tema  { border-top-width: 1px; border-top-color: var(--xal-filete); }

.xal-banda-testera__titulu {
	flex: 0 0 auto;
	font-weight: 700;
	color: var(--xal-testu);
}

.xal-banda-testera--azul .xal-banda-testera__titulu { color: var(--xal-azul); }

/* El filete que llena lo que queda hasta l'enllaz de la drecha. */
.xal-banda-testera__filete {
	flex: 1 1 auto;
	height: 1px;
	background-color: var(--xal-filete);
}

.xal-banda-testera__ver {
	flex: 0 0 auto;
	font-weight: 400;
	color: var(--xal-meta);
}

/* El cuadradín ámbar del bloque de tema. */
.xal-cuadru {
	flex: 0 0 auto;
	display: block;
	width: var(--xal-cuadru-llau);
	height: var(--xal-cuadru-llau);
	background-color: var(--xal-ambre);
}

.xal-cuadru--borde { background-color: var(--xal-borde); }

/* --- 14.5 La portada -------------------------------------------------- */
.xal-apertura {
	padding-block: var(--xal-e4) var(--xal-e5);
}

.xal-apertura .xal-tarxeta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e5);
	align-items: stretch;
}

/* La semeya va primero nel marcáu y primero na pantalla: el orde del marcáu ye
   el orde de llectura (ADR-0015 § 6, regla 5) y ye tamién el de la tarxeta
   (inventariu § 7.1). Nun se recoloca con `order`, que ye lo que fai el mock. */
.xal-apertura .xal-semeya {
	flex: 1 1 340px;
	margin-bottom: 0;
}

.xal-apertura .xal-tarxeta__testu {
	flex: 1 1 320px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.xal-rexella-tres {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--xal-e4);
	padding-top: var(--xal-e4);
	padding-bottom: var(--xal-e5);
	border-top: 1px solid var(--xal-filete);
}

.xal-amas__rexella {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: var(--xal-e4);
}

/* La tira «Y amás» lleva filete azul a la manzorga. */
.xal-tarxeta--amas {
	padding-left: var(--xal-e3);
	border-left: 2px solid var(--xal-azul);
}

.xal-clara {
	padding-block: var(--xal-e6) var(--xal-e7);
}

/* --- 14.6 Bloque de seición ------------------------------------------- */
.xal-bloque {
	margin-bottom: var(--xal-e7);
}

.xal-bloque__cuerpu {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e5);
}

.xal-bloque__destacada {
	flex: 1 1 300px;
	min-width: 0;
}

.xal-bloque__llinies {
	flex: 1.7 1 400px;
	min-width: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 0 var(--xal-e5);
	align-content: start;
}

.xal-tarxeta--llinia {
	padding-bottom: var(--xal-e2);
	margin-bottom: var(--xal-e3);
	border-bottom: 1px solid var(--xal-filete);
}

/* Ye un enllaz de verdá al archivu de la seición, non un botón que carga na
   páxina: asina funciona col JavaScript desactiváu, que ye criteriu
   d'aceptación de T-006. Un tramu posterior pue ponei JavaScript ENRIBA. */
.xal-bloque__mas {
	display: block;
	width: 100%;
	margin-top: var(--xal-e3);
	padding-top: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
	color: var(--xal-meta);
	text-align: center;
}

.xal-bloque__mas:hover {
	color: var(--xal-hover);
}

/* --- 14.7 Bloques de tema ---------------------------------------------

   ⚠ Van a 1 destacada + DOS llinies, non trés, y con más aire. Pidiólo la
   persona na revisión del 2026-09-02: con trés, la columna llegaba abaxo
   apilada y les llinies lleíense como una llista. El númberu ta en
   `xal_bloque_tema()`; equí namás ta l'aire, y sal de la escala de :root —nun
   hai nengún númberu sueltu—. */
.xal-temes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: var(--xal-e7) var(--xal-e6);
	margin-bottom: var(--xal-e8);
}

.xal-tema__llinies {
	margin-top: var(--xal-e4);
}

.xal-tarxeta--tema-llinia {
	display: block;
	padding-block: var(--xal-e3);
	border-top: 1px solid var(--xal-filete2);
}

/* --- 14.7b La banda de viñetes, al final de la portada -----------------

   Va escura a costa fecha: el dibuxu ye llinia sobre claro, y sobre fondu
   escuru lléese como una lámina enmarcada y sepártase de les noticies.

   ⚠ Pero la SUB-banda, `escura2`, non `escura`. La primer versión usaba la
   mesma clase que'l pie, y el pie va xusto detrás: dos superficies del mesmu
   color qu'e tocan nun se separten de nenguna manera. Corrixóse'l 2026-09-02,
   na revisión. El porqué enteru ta en `xal_bloque_vinetes()`.

   Cuatro del mesmu tamañu: una viñeta nun se xerarquiza, asina que facer una
   grande mentiría. El motivu enteru ta en `xal_bloque_vinetes()`. */
.xal-vinetes {
	padding-block: var(--xal-e7);
}

.xal-vinetes__rexella {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--xal-e5);
}

/* ⚠ LA ÚNICA IMAXE DEL TEMA QUE NUN SE RECORTA, y ye la única esceición al
   `cover` de `.xal-semeya__img`. Les 47 son 1800 × 1366 y la **firma del autor
   va dientro del dibuxu**, abaxo a la manzorga: un recorte cómela, y amás parte
   el chiste. Midío nos ficheros, non supuesto. */
.xal-semeya--vinieta {
	height: auto;
	aspect-ratio: 4 / 3;
}

.xal-semeya--vinieta .xal-semeya__img {
	object-fit: contain;
}

/* --- 14.7b La estaya de les viñetes: una galería ----------------------- */

/* ⚠ POR QUÉ UNA GALERÍA Y NON LA LLISTA DE `category.php`. El motivu enteru,
   coles trés midíes que lo sostienen, ta al entamu de `category.php`. En corto:
   la llista xenérica recorta el dibuxu —24,1 % del anchu na miniatura cuadrada,
   xusto onde va la firma—, xerarquiza lo que nun tien xerarquía, y escuende la
   viñeta detrás d'un titular que ensin el dibuxu nun diz nada.

   Reutiliza `.xal-semeya--vinieta`, que ye la MESMA regla de «nun se recorta»
   que la banda de portada y que la navegación ente viñetes. Nun se escribe una
   segunda: el día que se camude una, nun pue quedar la otra atrás.

   La banda ye `escura2` y non `escura` porque **el pie ye `escura` y va xusto
   detrás** (ADR-0016). */
.xal-galeria {
	padding-block: var(--xal-e7);
}

/* `auto-fill` y non `auto-fit`: con `auto-fit`, una páxina cola cabera fila a
   medies estiraría eses viñetes hasta ocupar la fila entera y saldríen más
   grandes que les de la fila d'enriba. Nuna galería toes tienen que midir lo
   mesmo — ye la mesma decisión que «cuatro del mesmu tamañu» de la portada. */
.xal-galeria__rexella {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--xal-e6) var(--xal-e5);
	margin-bottom: var(--xal-e6);
}

/* --- 14.7c Anterior y siguiente ente viñetes -------------------------- */

/* Dos güecos siempre, anque una de les dos falte: la posición ye lo que diz la
   direición, y mover al mediu la que queda mentiría sobre haza ónde va. El
   porqué enteru ta en `xal_navegacion_vinetes()`. */
.xal-vecines {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--xal-e5) var(--xal-e6);
	max-width: var(--xal-anchu-articulu);
	margin-inline: auto;
	margin-top: var(--xal-e7);
	padding-top: var(--xal-e5);
	border-top: 1px solid var(--xal-filete);
}

.xal-vecines__enllaz {
	display: block;
}

.xal-vecines__rotulu {
	display: block;
	margin-bottom: var(--xal-e3);
	color: var(--xal-meta);
}

/* El de la drecha alliniase a la drecha: la flecha apunta pa fuera de la
   páxina, y el testu tien que dir con ella. */
.xal-vecines__enllaz--siguiente {
	text-align: right;
}

.xal-vecines__titular {
	display: block;
	margin-top: var(--xal-e3);
}

.xal-vecines__data {
	display: block;
	margin-top: var(--xal-e1);
	color: var(--xal-meta);
}

/* --- 14.8 L'artículu -------------------------------------------------- */
.xal-articulu__testera {
	padding-block: var(--xal-e5);
}

/* El aire ente la llinia de meta —estaya, data, minutos— y el titular sube de
   e3 a e5. Pidiólo la persona el 2026-09-01: taben pegaos. */
.xal-articulu__migues {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e2) var(--xal-e3);
	margin-bottom: var(--xal-e5);
	color: var(--xal-meta);
}

.xal-articulu__seicion {
	color: var(--xal-azul);
}

.xal-articulu__titular {
	max-width: 26ch;
}

/* ⚠ LA SEMEYA D'UN ARTÍCULU NUN SE RECORTA.
   Toles demás semeyes del sitiu son caxes d'altor fixu con `object-fit: cover`,
   porque nuna rexella de tarxetes too tien que cuadrar. Nun artículu ye al
   revés: la semeya ye la noticia, y una foto VERTICAL recortada a una franxa
   apaisada ye otra foto. Vistolo la persona'l 2026-09-01.

   Asina que equí manda la forma de la imaxe: l'anchu sal del altu, l'altu tien
   techu pa que una vertical mui llarga nun se coma trés pantalles, y la caxa
   nun pinta fondu — nun hai franxes a los llaos. */
.xal-articulu__figura .xal-semeya {
	display: flex;
	justify-content: center;
	height: auto;
	background-color: transparent;
}

.xal-articulu__figura .xal-semeya__img {
	width: auto;
	max-width: 100%;
	height: auto;
	max-height: var(--xal-semeya-alta);
	object-fit: contain;
}

.xal-articulu__entradiella {
	max-width: 58ch;
	margin-top: var(--xal-e3);
}

.xal-articulu__firma {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e2) var(--xal-e5);
	margin-top: var(--xal-e4);
	padding-top: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
	color: var(--xal-testu);
}

.xal-articulu__cuerpu-banda {
	padding-bottom: var(--xal-e7);
}

.xal-articulu__figura {
	margin-bottom: var(--xal-e5);
}

.xal-articulu__pie {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e1) var(--xal-e3);
	padding-top: var(--xal-e2);
	border-top: 1px solid var(--xal-filete);
	color: var(--xal-testu2);
}

/* ---------------------------------------------------------------------------
   UN SOLU EXE PA TOL ARTÍCULU.

   La testera, la semeya y el bloque de testu miden lo mesmo y van centraes. La
   semeya diba a tol anchu —1.351 px— y el testu a 722: la diferencia yera tanta
   que'l testu paecía descolocáu, y de fechu quedaben 350 px d'aire muertu a la
   derecha. Vistolo la persona'l 2026-09-01.

   ADR-0015 nun diz nada del interior d'un artículu: namás fixa l'anchu máximu
   del sitiu. Esto ye una decisión de composición que taba ensin tomar.
   --------------------------------------------------------------------------- */
.xal-articulu__testera,
.xal-articulu__figura,
.xal-articulu__rexella {
	max-width: var(--xal-anchu-articulu);
	margin-inline: auto;
}

.xal-articulu__rexella {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e6);
	align-items: flex-start;
}

.xal-articulu__testu {
	flex: 1 1 440px;
	min-width: 0;
	max-width: 70ch;
	font-size: var(--xal-cuerpu);
	line-height: 1.62;
	color: var(--xal-testu);
}

.xal-articulu__testu > * + * {
	margin-top: var(--xal-e4);
}

.xal-articulu__testu a {
	color: var(--xal-azul-fondu);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.xal-articulu__testu h2 {
	font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-size: var(--xal-t5);
	font-stretch: 89%;
	letter-spacing: -.029em;
	line-height: 1.05;
	font-weight: 700;
	margin-top: var(--xal-e6);
}

.xal-articulu__testu h3 {
	font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-size: var(--xal-t4);
	font-stretch: 90%;
	letter-spacing: -.026em;
	line-height: 1.1;
	font-weight: 700;
	margin-top: var(--xal-e5);
}

.xal-articulu__testu blockquote {
	padding-left: var(--xal-e4);
	border-left: 3px solid var(--xal-azul);
	font-size: var(--xal-t5);
	font-stretch: 90%;
	letter-spacing: -.029em;
	line-height: 1.16;
	font-weight: 600;
}

.xal-articulu__testu img,
.xal-articulu__testu figure {
	max-width: 100%;
	height: auto;
}

.xal-articulu__testu figcaption {
	font-size: var(--xal-pie-semeya);
	line-height: 1.4;
	color: var(--xal-meta);
}

/* UNA PÁXINA NUN YE UN ARTÍCULU: nun tien rail.

   L'artículu lleva una segunda columna a la mandrecha —lo más lleío,
   rellacionao— y por eso'l so cuerpu va pegáu a la manzorga de la retícula de
   `--xal-anchu-articulu`. Una páxina nun tien esa columna, asina que too
   —migues, titular, entradiella y cuerpu— va nuna sola columna de llectura,
   centrada y col mesmu berbesu a la manzorga.

   ⚠ Enantes d'esto, el titular diba nuna caxa de 1020 px centrada y el cuerpu
   nuna de 1560: el testu entamaba **203 px más a la manzorga** que'l so propiu
   titular. Vio-lo una persona el 2026-09-07 y midióse nel espeyu. */

.xal-articulu--paxina .xal-articulu__testera {
	/* La testera YE la caxa: lleva'l so propiu marxe llateral y hai que
	   sumalu, o quedaría más estrecha que'l cuerpu. */
	max-width: calc(70ch + var(--xal-marxe) * 2);
}

.xal-articulu--paxina .xal-articulu__rexella {
	/* Esta va DIENTRO de `.xal-caxa`, que yá punxo'l marxe. */
	max-width: 70ch;
}

.xal-articulu--paxina .xal-articulu__testu {
	/* La columna yá ta llendada arriba; equí sobra la llende y sobra tamién el
	   `flex-basis`, que ye pa cuando hai dos columnes. */
	max-width: none;
	flex: 1 1 auto;
}

/* Y aire ente les dos bandes. Trenta píxeles nun abasten pa un cambiu de
   fondu: pidiólo la mesma persona el mesmu día. */
.xal-articulu--paxina .xal-articulu__cuerpu-banda {
	padding-top: var(--xal-e6);
}

/* EL SUMARIU d'una páxina llarga.

   Nun lu pinta'l tema: escríbese nel conteníu, porque los títulos y los sos
   `id` son parte del testu llegal y decídense al escribilu. El tema namás-y da
   forma.

   ⚠ Llámase `xal-sumariu` y NON `xal-indiz` porque **`.xal-indiz` yá esiste**:
   ye'l botón de les tres rayes de la cabecera, y lleva `display: flex`. Usar
   esi nome dexaba'l sumariu nun requexu de 51 px d'anchu ensin que fallara
   nada. Midióse nel espeyu el 2026-09-07. */

.xal-articulu__testu .xal-sumariu {
	margin-top: var(--xal-e5);
	padding: var(--xal-e3) var(--xal-e4);
	border-left: 3px solid var(--xal-azul);
	background: var(--xal-filete2);
}

.xal-articulu__testu .xal-sumariu > p {
	margin: 0 0 var(--xal-e2);
	font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-stretch: 90%;
	font-weight: 700;
	font-size: .95em;
}

.xal-articulu__testu .xal-sumariu ul {
	margin: 0;
	padding-left: var(--xal-e4);
	list-style: disc;
}

.xal-articulu__testu .xal-sumariu li + li {
	margin-top: var(--xal-e1);
}

.xal-articulu__testu .xal-sumariu a {
	color: var(--xal-testu);
	text-decoration: none;
}

/* ⚠ Escribir color sobro `.algo a` y NON escribir el so `:hover` al llau mata
   el hover, porque les dos regles tienen la mesma especificidá. Costó una
   versión del pie el 2026-09-07. */
.xal-articulu__testu .xal-sumariu a:hover,
.xal-articulu__testu .xal-sumariu a:focus-visible {
	color: var(--xal-azul);
	text-decoration: underline;
}

/* Llistes y tables DIENTRO d'un testu.

   El reset de riba —`ul, ol { padding: 0; list-style: none }`— ye lo que se
   quier en tolos sitios menos nun sitiu: dientro del cuerpu d'un artículu o
   d'una páxina. Ellí una llista ye una llista y tien que tener viñeta y
   sangría. Les páxines llegales son cuasi too llistes, y los artículos
   importaos tamién les lleven. */

.xal-articulu__testu ul,
.xal-articulu__testu ol {
	padding-left: var(--xal-e5);
	list-style: disc;
}

.xal-articulu__testu ol {
	list-style: decimal;
}

.xal-articulu__testu ul ul {
	list-style: circle;
}

.xal-articulu__testu li + li,
.xal-articulu__testu li > ul,
.xal-articulu__testu li > ol {
	margin-top: var(--xal-e2);
}

.xal-articulu__testu li::marker {
	color: var(--xal-meta);
}

/* La tabla pue ser más ancha que la caxa —la de la política de cookies pide
   2.400 px—, asina que se desplaza ella sola y NUNCA fai que se desplace la
   páxina entera. `display: block` ye lo que da el desplazamientu; les fileres
   y les caxelles siguen componiéndose como tabla. */

.xal-articulu__testu table {
	display: block;
	max-width: 100%;
	overflow-x: auto;
	border-collapse: collapse;
	font-size: .92em;
	line-height: 1.45;
}

.xal-articulu__testu th,
.xal-articulu__testu td {
	padding: var(--xal-e2) var(--xal-e3) var(--xal-e2) 0;
	text-align: left;
	vertical-align: top;
	border-bottom: 1px solid var(--xal-filete);
}

.xal-articulu__testu th {
	font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-stretch: 90%;
	font-weight: 700;
	white-space: nowrap;
}

.xal-articulu__testu code {
	font-family: ui-monospace, SFMono-Regular, 'Cascadia Mono', Menlo, monospace;
	font-size: .92em;
	word-break: break-word;
}

.xal-articulu__etiquetes {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e1);
	margin-top: var(--xal-e6);
	padding-top: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
}

.xal-chip {
	padding: var(--xal-e1) var(--xal-e2);
	border: 1px solid var(--xal-filete);
	color: var(--xal-testu2);
}

.xal-chip:hover {
	border-color: var(--xal-azul);
	color: var(--xal-azul);
}

/* ⚠ COLUMNA FLEX CON `gap`, y ye lo que fai que la regla 9 se cumpla sola.
   El güecu de publicidá ye fíu d'esta columna: si nun hai campaña nun se pinta,
   y un fíu que nun esiste NUN DEXA `gap`. Con `margin` na pieza d'arriba, en
   cambiu, l'aire quedaría (ADR-0015 § 6, regla 9; inventariu § 13.2). */
.xal-articulu__llau {
	display: flex;
	flex-direction: column;
	gap: var(--xal-e5);
	flex: 1 1 220px;
	min-width: 0;
}

/* ⚠ EL LATERAL GUARDA SU SITIO AUNQUE ESTÉ VACÍO, y es a propósito (0.11.0).
   Desde ADR-0029, «Lo más lleíu» sale con `hidden` y lo destapa el `.js`, así
   que el lateral puede quedarse sin nada visible (sin lista y sin campaña). Se
   probó a quitarlo entonces con `:has()`, y la revisión del 2026-09-11 lo
   tumbó con una cuenta: entre ~720 y ~920 px el texto ocupaba el ancho entero
   y, al llegar la lista, el lateral volvía y **el texto se estrechaba delante
   del lector** (desplazamiento de diseño). Con el sitio guardado no salta
   nunca. Lo que cuesta —blanco a la derecha sin lista, algo de aire bajo el
   texto en el móvil— es de aspecto, y lo decide una persona (plan
   2026-09-11-lo-mas-lleiu, § 7). */

.xal-lleiu__llinia {
	display: flex;
	gap: var(--xal-e2);
	padding-block: var(--xal-e2);
	border-top: 1px solid var(--xal-filete2);
	color: var(--xal-testu);
}

.xal-lleiu__cifra {
	flex: 0 0 auto;
	font-weight: 700;
	color: var(--xal-ambre);
}

.xal-lleiu__llinia:hover {
	color: var(--xal-hover);
}

.xal-rellacionao {
	padding-block: var(--xal-e6) var(--xal-e7);
}

.xal-rellacionao__rexella {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: var(--xal-e5);
}

.xal-articulu__paxines {
	display: flex;
	gap: var(--xal-e3);
	margin-top: var(--xal-e5);
	color: var(--xal-meta);
}

/* --- 14.9 Comentarios -------------------------------------------------- */
.xal-comentarios {
	max-width: var(--xal-anchu-testu);
	margin-top: var(--xal-e7);
}

.xal-comentarios__llista {
	margin-bottom: var(--xal-e5);
}

.xal-comentariu__caxa {
	display: flex;
	gap: var(--xal-e3);
	padding-block: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
}

.xal-comentariu--rempuesta {
	padding-left: var(--xal-e7);
}

.xal-comentariu--rempuesta > .xal-comentariu__caxa {
	border-top-color: var(--xal-filete2);
	border-left: 2px solid var(--xal-filete);
	padding-left: var(--xal-e3);
}

.xal-comentariu__avatar {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--xal-avatar);
	height: var(--xal-avatar);
	background-color: var(--xal-claro-marca);
	font-weight: 700;
	color: var(--xal-claro-testu);
}

.xal-comentariu--redaccion .xal-comentariu__avatar {
	background-color: var(--xal-azul-fondu);
	color: var(--xal-blancu);
}

.xal-comentariu__cuerpu {
	flex: 1 1 auto;
	min-width: 0;
}

.xal-comentariu__testera {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e1) var(--xal-e3);
	margin-bottom: var(--xal-e2);
}

.xal-comentariu__nome { font-weight: 700; color: var(--xal-testu); }
.xal-comentariu__data { color: var(--xal-apagáu); }

.xal-comentariu__insignia {
	padding: var(--xal-e1);
	border: 1px solid var(--xal-azul-fondu);
	color: var(--xal-azul-fondu);
}

.xal-comentariu__pendiente { color: var(--xal-meta); }

.xal-comentariu__aiciones {
	display: flex;
	gap: var(--xal-e3);
	margin-top: var(--xal-e2);
	color: var(--xal-meta);
}

.xal-formulariu {
	padding: var(--xal-e4);
	border: 1px solid var(--xal-filete);
}

.xal-formulariu__campu { display: block; }

.xal-formulariu__area,
.xal-formulariu input[type='text'],
.xal-formulariu input[type='email'],
.xal-formulariu input[type='url'] {
	width: 100%;
	margin-top: var(--xal-e2);
	padding: var(--xal-e2) var(--xal-e3);
	border: 1px solid var(--xal-filete);
	background-color: var(--xal-campu);
	color: var(--xal-campu-testu);
}

.xal-formulariu__unviar {
	padding: var(--xal-e2) var(--xal-e4);
	background-color: var(--xal-aicion);
	color: var(--xal-aicion-testu);
}

.xal-formulariu__unviar:hover {
	background-color: var(--xal-escuro);
	color: var(--xal-claro);
}

.xal-formulariu__avisu {
	margin-top: var(--xal-e3);
	font-size: var(--xal-pie-semeya);
	line-height: 1.45;
	color: var(--xal-meta);
}

/* --- 14.10 El pie ------------------------------------------------------ */
/* ⚠ Un correo NO va en versales. `.xal-meta` pone `uppercase` y `.14em` de
   espaciado, que es la voz del metadato, y con eso REDACCION@XIXONALDIA.COM
   medía 178 px a 1440: más ancho que el logo (109 px), y como la columna de
   la marca es `auto`, era el correo quien fijaba su ancho. La persona lo vio
   «súper grande en desktop» (2026-09-15). En minúsculas, casi sin espaciado (.02em) y un
   punto más pequeño —m1, el de los enlaces legales— se lee como lo que es:
   una dirección, no un rótulo. La especificidad es la de `.xal-meta--m2` y
   esta regla va después, así que gana sin trucos. */
.xal-pie__correu {
	display: block;
	margin-top: var(--xal-e3);
	font-size: var(--xal-m1);
	letter-spacing: .02em;
	text-transform: none;
	color: var(--xal-meta);
}

/* --- 14.11 Cortes de contenedor del tramu 2 ---------------------------- */
@container (min-width: 780px) {
	.xal-articulu__llau {
		flex: 0 0 auto;
		width: var(--xal-anchu-llau);
		position: sticky;
		top: var(--xal-pegañosu);
	}
}

/* ---------------------------------------------------------------------------
   15. TRAMU 3 — les siete pantalles d'archivu

   Como nel 14: nin una regla escribe un color. La testera, la paxinación y les
   llinies valen igual na banda escura y na clara.
   --------------------------------------------------------------------------- */

/* --- 15.1 La testera común de seición, etiqueta, data y autora --------- */
.xal-archivu {
	display: block;
}

.xal-testera {
	padding-block: var(--xal-e5) var(--xal-e4);
}

.xal-testera__caxa {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: var(--xal-e3) var(--xal-e5);
	padding-bottom: var(--xal-e4);
	border-bottom: 1px solid var(--xal-filete);
}

.xal-testera__nome {
	flex: 0 0 auto;
	min-width: 0;
}

.xal-testera__rotulu {
	display: block;
	margin-bottom: var(--xal-e2);
	color: var(--xal-ambre);
}

.xal-testera__titulu {
	color: var(--xal-testu);
}

.xal-testera__descripcion {
	flex: 1 1 260px;
	min-width: 0;
	max-width: 46ch;
}

.xal-testera__llau {
	flex: 0 0 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e2) var(--xal-e3);
	margin-left: auto;
}

.xal-testera__cuenta {
	color: var(--xal-meta);
}

/* --- 15.2 Chips ------------------------------------------------------- */
.xal-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e1);
	padding-block: var(--xal-e3);
}

.xal-chips__rotulu {
	display: block;
	padding-top: var(--xal-e3);
	color: var(--xal-meta);
}

/* El activu invierte: fondu del testu y testu del fondu (inventariu § 8). */
.xal-chip--activu {
	background-color: var(--xal-testu);
	border-color: var(--xal-testu);
	color: var(--xal-fondu);
}

.xal-chip--activu:hover {
	color: var(--xal-fondu);
}

/* --- 15.3 La paxinación (inventariu § 8) ------------------------------- */
.xal-paxinacion {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e1);
	margin-top: var(--xal-e5);
	padding-top: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
	color: var(--xal-testu2);
}

.xal-paxinacion .page-numbers {
	display: inline-block;
	padding: var(--xal-e2) var(--xal-e3);
	border: 1px solid var(--xal-borde);
	color: var(--xal-testu2);
}

.xal-paxinacion .page-numbers:hover {
	border-color: var(--xal-testu);
	color: var(--xal-testu);
}

/* La páxina na que tas: invertida, y ye un <span>, non un enllaz a onde yá tas. */
.xal-paxinacion .page-numbers.current {
	background-color: var(--xal-testu);
	border-color: var(--xal-testu);
	color: var(--xal-fondu);
}

.xal-paxinacion .page-numbers.dots {
	border-color: transparent;
	color: var(--xal-claro-puntos);
}

.xal-paxinacion__pasu {
	padding: var(--xal-e2) var(--xal-e3);
	color: var(--xal-testu2);
}

.xal-paxinacion__pasu--fuerte {
	font-weight: 600;
	color: var(--xal-testu);
}

/* Desactiváu ye un <span> apagáu, non un enllaz muertu. */
.xal-paxinacion__pasu--muertu {
	color: var(--xal-inactivu);
}

.xal-paxinacion__cuenta {
	margin-left: auto;
	color: var(--xal-meta);
}

/* --- 15.4 Les llinies anches (seición, autora, gueta) ------------------ */
.xal-llinies {
	display: flex;
	flex-direction: column;
}

.xal-tarxeta--llinia-ancha,
.xal-tarxeta--resultau,
.xal-tarxeta--llinia-data {
	display: flex;
	align-items: flex-start;
	gap: var(--xal-e4);
	padding-block: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
}

/* La columna de la manzorga: fecha enriba y hora debaxo. */
.xal-tarxeta__meta--columna {
	flex: 0 0 auto;
	flex-direction: column;
	gap: var(--xal-e1);
	width: var(--xal-miniatura);
	margin-bottom: 0;
}

.xal-tarxeta--llinia-ancha .xal-tarxeta__testu,
.xal-tarxeta--resultau .xal-tarxeta__testu,
.xal-tarxeta--llinia-data .xal-tarxeta__testu {
	flex: 1 1 auto;
	min-width: 0;
}

/* La seición, na so propia llinia enriba del titular, n'azul. */
.xal-tarxeta__seicion {
	display: block;
	margin-bottom: var(--xal-e1);
	color: var(--xal-azul);
}

/* La miniatura cuadrada de la drecha. Ye la única variante onde la imaxe nun va
   primero, y el § 7.2 del inventariu descríbela asina. */
.xal-semeya--cuadrada {
	flex: 0 0 auto;
	width: var(--xal-miniatura-media);
	height: var(--xal-miniatura-media);
	margin-bottom: 0;
}

.xal-llinies--resultaos .xal-tarxeta--resultau:first-child {
	border-top-width: 2px;
	border-top-color: var(--xal-testu);
}

.xal-tarxeta--resultau .xal-tarxeta__entradiella {
	max-width: 66ch;
	color: var(--xal-testu3);
}

/* El términu guetáu, resaltáu. Ye l'únicu usu de --xal-ambre-marca. */
.xal-marca-gueta {
	background-color: var(--xal-ambre-marca);
	color: var(--xal-claro-testu);
}

/* --- 15.5 La gueta ---------------------------------------------------- */

/* El aire de la testera de la gueta. Ye'l mesmu que'l de `.xal-testera`, que ye
   lo que lleven les otres pantalles d'archivu: la gueta nun pasa por ehí y
   quedaba ensin nada. */
.xal-gueta-testera {
	display: flex;
	flex-direction: column;
	gap: var(--xal-e4);
	padding-block: var(--xal-e5) var(--xal-e4);
}

.xal-gueta-grande {
	padding-block: var(--xal-e3);
	border-bottom: 2px solid var(--xal-azul);
}

/* El botón nun se pega al campu grande: baxa a la llinia de base del testu. */
.xal-gueta-grande .xal-gueta {
	align-items: flex-end;
	gap: var(--xal-e4);
}

.xal-gueta-grande .xal-gueta__campu {
	padding: 0;
	border: 0;
	background-color: transparent;
	color: var(--xal-testu);
	font-family: Archivo, system-ui, -apple-system, 'Segoe UI', sans-serif;
	font-size: var(--xal-t8);
	font-weight: 800;
	font-stretch: 85%;
	letter-spacing: -.045em;
	line-height: 1;
}

.xal-gueta-grande--404 .xal-gueta__campu {
	font-size: var(--xal-t6);
	font-stretch: 88%;
	letter-spacing: -.032em;
}

.xal-gueta__resume {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e2) var(--xal-e4);
	color: var(--xal-meta);
}

.xal-gueta__cuenta {
	color: var(--xal-testu);
}

.xal-gueta__separtador {
	flex: 1 1 auto;
}

.xal-gueta__orde {
	display: flex;
	gap: var(--xal-e3);
	align-items: center;
}

.xal-gueta__orde-rotulu {
	color: var(--xal-apagáu);
}

.xal-gueta__orde-enllaz {
	color: var(--xal-testu2);
	padding-bottom: 2px;
}

/* La pestaña activa lleva'l filete ámbar del inventariu § 8. */
.xal-gueta__orde-enllaz--activu {
	border-bottom: 2px solid var(--xal-ambre);
	color: var(--xal-testu);
}

/* --- 15.6 Dos columnes (seición) -------------------------------------- */
.xal-dos-columnes {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e6);
	align-items: flex-start;
}

.xal-dos-columnes__principal {
	flex: 1 1 520px;
	min-width: 0;
}

/* ⚠ COLUMNA FLEX CON `gap` dende'l 2026-09-08, y ye'l mesmu cambiu que se-y
   fizo a `.xal-articulu__llau` nel tramu 1 —§ 14.9—. Enantes l'aire ente pieces
   dábalu `.xal-bloque-llau + .xal-bloque-llau { margin-top }`, y aquello
   funcionaba mientres el güecu de publicidá fuera'l CABERU fíu: el marxe vive
   na pieza d'abaxo, asina qu'un anunciu que nun se pinta nun dexaba rastru. Col
   `gap` da igual ónde se ponga, y la regla 9 dexa de depender del orde
   (ADR-0015 § 6; inventariu § 13.2). El valor ye'l mesmu, asina que nun camuda
   nada de lo que yá había. */
.xal-dos-columnes__llau {
	display: flex;
	flex-direction: column;
	gap: var(--xal-e5);
	flex: 1 1 240px;
	min-width: 0;
	max-width: var(--xal-anchu-llau);
}

/* «Lo último de les otres estayes», enriba del archivu na estaya. Mesma
   gramática de filetes que les llinies del bloque de tema: nun ye un componente
   nuevu, ye la mesma llinia n'otru sitiu. */
.xal-bloque-llau__llinies {
	margin-top: var(--xal-e3);
}

.xal-tarxeta--llau {
	display: block;
	padding-block: var(--xal-e3);
	border-top: 1px solid var(--xal-filete2);
}

/* --- 15.7 La etiqueta y el 404: rexella de tarxetes -------------------- */
.xal-rexella-ancha {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
	gap: var(--xal-e5);
}

/* --- 15.8 La data: agrupao por día ------------------------------------ */
.xal-dia {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e3) var(--xal-e5);
	padding-top: var(--xal-e3);
	margin-bottom: var(--xal-e5);
	border-top: 2px solid var(--xal-testu);
}

.xal-dia__cifra {
	flex: 0 0 auto;
	width: var(--xal-miniatura-media);
	color: var(--xal-testu);
}

.xal-dia__selmana {
	display: block;
	margin-top: var(--xal-e1);
	color: var(--xal-meta);
}

.xal-dia__llinies {
	flex: 1 1 420px;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

.xal-tarxeta--llinia-data {
	border-top: 0;
	border-bottom: 1px solid var(--xal-filete2);
}

.xal-tarxeta--llinia-data .xal-tarxeta__meta--columna {
	width: var(--xal-miniatura);
	flex-direction: row;
}

/* La rexella de los doce meses. */
.xal-meses {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	padding-bottom: var(--xal-e3);
}

.xal-meses__mes {
	padding: var(--xal-e2) var(--xal-e1);
	border: 1px solid var(--xal-filete);
	color: var(--xal-testu2);
	text-align: center;
}

.xal-meses__mes:hover {
	border-color: var(--xal-testu);
	color: var(--xal-testu);
}

.xal-meses__mes--activu {
	background-color: var(--xal-ambre);
	border-color: var(--xal-ambre);
	color: var(--xal-escuro);
	font-weight: 600;
}

.xal-meses__mes--activu:hover {
	color: var(--xal-escuro);
}

/* Un mes ensin entraes nun ye un enllaz: ye un güecu apagáu. */
.xal-meses__mes--muertu {
	border-color: var(--xal-filete2);
	color: var(--xal-inactivu);
}

/* --- 15.9 La páxina y les migues -------------------------------------- */
.xal-migues {
	display: flex;
	flex-wrap: wrap;
	gap: var(--xal-e1) var(--xal-e2);
	margin-bottom: var(--xal-e3);
	color: var(--xal-testu2);
}

.xal-migues__separtador {
	color: var(--xal-apagáu);
}

.xal-migues__actual {
	color: var(--xal-ambre);
}

.xal-articulu__titular--paxina {
	max-width: 20ch;
}

.xal-articulu__anovao {
	margin-top: var(--xal-e5);
	padding-top: var(--xal-e3);
	border-top: 1px solid var(--xal-filete);
	color: var(--xal-meta);
}

/* --- 15.10 El 404 ------------------------------------------------------ */
.xal-404 {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e6);
	padding-block: var(--xal-e8) var(--xal-e7);
}

.xal-404__cifra {
	flex: 0 0 auto;
	color: var(--xal-escuro-banda2);
}

.xal-404__testu {
	flex: 1 1 340px;
	min-width: 0;
}

.xal-404__esplicacion {
	max-width: 52ch;
	margin-top: var(--xal-e3);
	margin-bottom: var(--xal-e4);
}

/* --- 15.11 Cortes de contenedor del tramu 3 --------------------------- */
@container (min-width: 520px) {
	.xal-meses {
		grid-template-columns: repeat(6, 1fr);
	}
}

@container (min-width: 980px) {
	.xal-meses {
		grid-template-columns: repeat(12, 1fr);
	}
}

/* El cuerpu d'un comentariu. Archivo 400, más xunto que'l del artículu porque
   son testos curtios (inventariu § 7.2). */
.xal-comentariu__testu {
	font-size: var(--xal-estractu);
	line-height: 1.55;
	color: var(--xal-testu);
}

.xal-comentariu__testu > * + * {
	margin-top: var(--xal-e2);
}

/* ---------------------------------------------------------------------------
   16. TRAMU 4 — la barra de compartir del artículu

   Del mock (inventariu § 8). Seis pieces: rótulu, el menú del preséu, trés
   enllaces de rede, copiar y imprentar. Trés d'elles salen del PHP con
   `hidden` y namás les destapa `js/xal.js` (ADR-0019, regla 2), asina que
   **esta seición nun tien qu'escondir nada**: lo que nun se ve, nun ta.

   ⚠ VA EN FILERA A TOLOS ANCHOS, y el mock diz otra cosa: a partir de 900 px
   pásala a columna pegañosa a la manzorga. Equí NON, y ye una midida y non un
   gustu: l'exe del artículu ye de 1.020 px por orde de la persona del
   2026-09-01, y una tercer columna baxa el cuerpu de 716 px (≈ 70 caráuteres)
   a 521 (≈ 50). Ta enteru nel anexu B de
   docs/planes/2026-09-02-arreglos-revision-1-tramu-4.md, y ye la primer tarea
   de la verificación humana: camudalo ye una regla.
   --------------------------------------------------------------------------- */

.xal-compartir {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--xal-e1) var(--xal-e4);
	max-width: var(--xal-anchu-articulu);
	margin-inline: auto;
	margin-bottom: var(--xal-e5);
	padding-bottom: var(--xal-e3);
	border-bottom: 1px solid var(--xal-filete);
}

.xal-compartir__rotulu {
	color: var(--xal-meta);
}

/* ⚠ UN SOLU «COMPARTIR», Y LO DECIDE'L CSS.

   El rótulu y el botón del menú del preséu dicen la mesma pallabra. Nun
   teléfonu, `js/xal.js` destapa'l botón —porque hai `navigator.share`— y
   entós el rótulu sobra: veríense dos «Compartir» seguíos. Pidió quitalo la
   persona na revisión del 2026-09-03.

   Faelo el CSS y non el JavaScript **a costa fecha**. La regla 2 d'ADR-0019
   diz que'l JavaScript AÑADE y nunca quita nin sustitúi, y sigue cumpliéndose
   al pie de la lletra: el `.js` namás quita un `hidden`. Que'l rótulu sobre
   cuando hai botón ye una regla de PRESENTACIÓN, y la presentación vive equí.

   Y degrada solo pel dos llaos: ensin JavaScript el botón queda col `hidden`,
   asina que'l `:has()` nun casa y queda'l rótulu —l'estáu que yá ta firmáu—; y
   nun navegador ensin `:has()` la regla entera cáyese y vense los dos, que ye
   feo pero nun ye nada roto. */
.xal-compartir:has([data-xal-compartir-nativu]:not([hidden])) .xal-compartir__rotulu {
	display: none;
}

/* L'enllaz y el botón tienen que ser la MESMA pieza a la vista: quien la mira
   nun tien por qué saber cuál de les seis precisa JavaScript. El botón hereda
   del reset —ensin borde, ensin fondu, `font: inherit`— y namás-y falta lo que
   `a` yá trai. */
.xal-compartir__enllaz,
.xal-compartir__aicion {
	padding: 0;
	color: var(--xal-testu2);
}

.xal-compartir__aicion {
	transition: color .12s ease;
}

.xal-compartir__enllaz:hover,
.xal-compartir__aicion:hover {
	color: var(--xal-hover);
}

/* ---------------------------------------------------------------------------
   17. «DESTACAO» — la banda d'arriba de la portada (ADR-0022)

   ⚠ NUN LLEVA CLASE DE BANDA, y ye a costa fecha. Comparte la superficie
   escura cola apertura y cola rexella de trés: **nun ye una banda nueva, ye
   la mesma**. Distínguese pol filete ámbar de 3 px de la so testera y pol
   filete que la xebra de la apertura, non por un fondu propiu.

   Asina nun crea nenguna costura nueva (ADR-0016): nun hai dos superficies del
   mesmu color que se toquen, porque nun hai dos superficies. Y el motivu de que
   nun se-y ponga fondu ta escritu nel propiu ADR-0016 — un adornu ente dos
   superficies que necesiten distinguise ye señal de que nun yeren dos.

   Y si nun hai nada marcao, esto NUN SE PINTA: nin la testera, nin el filete,
   nin el güecu. Faelo'l `if` de home.php (regla 9 d'ADR-0015 § 6).
   --------------------------------------------------------------------------- */

.xal-destacao {
	padding-block: var(--xal-e2) var(--xal-e3);
	border-top: 2px solid var(--xal-ambre);
	border-bottom: 1px solid var(--xal-filete);
}

/* El rótulu. Ámbar, como'l filete d'enriba: son la mesma señal. */
.xal-destacao__rotulu {
	display: block;
	margin-bottom: var(--xal-e2);
	font-weight: 700;
	color: var(--xal-ambre);
}

.xal-destacao__rexella {
	display: grid;
	gap: var(--xal-e2) var(--xal-e4);
}

.xal-tarxeta--destacao {
	padding-left: var(--xal-e3);
	border-left: 2px solid var(--xal-ambre);
}

/* ⚠ Y equí ye onde se vuelve FRANXA, a partir de 780 px de CONTENEDOR
   (ADR-0015 § 6, regla 4: los cortes son de contenedor, non de medios).

   El rótulu pasa a la manzorga, na MESMA filera que los titulares, y los trés
   titulares repártense lo que queda. Asina la pieza baxa de trés llinies
   -filete, rótulu solu, y les tarxetes- a UNA sola, que ye lo que la fai
   lleese como franxa y non como un bloque más de la portada.

   Embaxo de 780 px nun cabe: el rótulu queda enriba y les trés tarxetes
   apílense, que ye lo que yá facía. */
@container (min-width: 780px) {
	.xal-destacao {
		display: flex;
		align-items: center;
		gap: var(--xal-e4);
	}

	.xal-destacao__rotulu {
		flex: 0 0 auto;
		margin-bottom: 0;
	}

	.xal-destacao__rexella {
		flex: 1 1 auto;
		min-width: 0;
		grid-template-columns: repeat(3, 1fr);
	}
}

/* ---------------------------------------------------------------------------
   18. PUBLICIDÁ (ADR-0027)

   Trés reglas y nenguna ye d'adornu:

   1. **Si nun hai campaña, nun hai marcáu.** Esti bloque nun tien nada que
      esconder porque'l PHP nun escribe nin un byte cuando nun hai anunciu. Lo
      que fai falta ye que'l CONTENEDOR nun dexe aire, y d'eso s'encarga'l
      `gap` de la columna (§ 14.9). Un marcu vacíu cola pallabra «Anunciu»
      dientro ye peor que nun tener publicidá (inventariu § 13.2).

   2. **El rótulu LLÉESE.** Va en `--xal-testu`, non nel gris del mock: aquel
      gris ye'l color d'un marcador de sitiu, non el d'una etiqueta llegal
      (inventariu § 13.3). La LSSI pide que la publicidá se reconoza como tal.

   3. **Esto nun ye una tarxeta.** Una tarxeta nun tien borde y lleva
      [imaxe] → [metadatu] → [titular] (inventariu § 7.1). Equí'l rótulu va
      ENRIBA y FUERA del enllaz, nun hai titular, y el filete de 1 px marca que
      ye otra cosa.
   --------------------------------------------------------------------------- */

.xal-anunciu {
	display: flex;
	flex-direction: column;
	gap: var(--xal-e1);
}

.xal-anunciu__rotulu {
	color: var(--xal-testu);
}

/* El marcu ye lo únicu que dibuxa el güecu: un filete de 1 px, como nel mock. */
.xal-anunciu__marcu {
	display: block;
	border: 1px solid var(--xal-filete);
}

/* ⚠ EL HUECO FIJA LA PROPORCIÓN, NO SOLO EL ANCHO (ADR-0031, 2026-09-15).

   Antes era `height: auto` y el alto lo ponía el fichero: un vídeo 16:9 en el
   `970×250` se pintaba `970×546`, más del doble de alto de lo vendido, y una
   caja `300×250` con el mismo vídeo salía `300×169`. La persona: «repáralo para
   que sea lo correcto».

   Lo correcto es que el anuncio ocupe EXACTAMENTE lo que se vende:

   - `aspect-ratio` sale de `--xal-anunciu-proporcion`, que escribe
     `inc/publicida.php` con las medidas del mu-plugin. Se aplica al medio y
     no al marco, porque el marco lleva el filete de 1 px y con
     `border-box` la cuenta saldría torcida.
   - `object-fit: contain`, NO `cover`: una creatividad con otra proporción
     queda entera con franjas vacías dentro del marco. Recortarla se comería el
     logo o el texto del anunciante, que es justo lo que ha pagado. Que no
     encaje lo avisa el panel al guardarla.
   - Sin la variable vale `auto`, que es el comportamiento de antes. ⚠ No
     sirve para volver atrás cambiando el mu-plugin: el 1.0.2 ya da `anchu` y
     `altu`, y `inc/publicida.php` escribe la variable igual. Para volver al
     alto del fichero hay que revertir el TEMA. */
.xal-anunciu__marcu img,
.xal-anunciu__marcu video {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: var(--xal-anunciu-proporcion, auto);
	object-fit: contain;
}

/* El pie ye l'enllaz que lleva al anunciante cuando la creatividá ye un vídeu
   —el vídeu nun pue dir dientro d'un <a>—. Ye testu, non tarxeta. */
.xal-anunciu__pie {
	display: block;
	color: var(--xal-testu2);
}

.xal-anunciu__pie:hover {
	color: var(--xal-hover);
}

/* --- 18.2 Los dos güecos de portada (ADR-0027 § 3 ter) -----------------

   ⚠ ESTO NUN ESCUENDE NADA. El rail nun se pinta con `display: none` cuando
   nun hai campaña: `home.php` NUN ESCRIBE el marcáu. Lo qu'hai equí ye lo otro
   —qué facer cuando SÍ lu escribe—, y un únicu `display: none`, que ye pal
   casu de qu'HAYA campaña pero la pantalla seya estrecha: el `300×600`
   apaez namás dende `1180px` (inventariu § 3), y por baxo d'ehí un fíu con
   `display: none` nun ocupa nin dexa `gap`. */

.xal-portada-cuerpu {
	display: flex;
	gap: var(--xal-e6);
	align-items: flex-start;
}

.xal-portada-cuerpu__principal {
	flex: 1 1 auto;
	min-width: 0;
}

.xal-portada-cuerpu__llau {
	display: none;
}

/* ⚠ `302px`, Y LOS DOS PÍXELES SOBRAN A COSTA FECHA. Ye la única midida d'esti
   ficheru que nun sal de la escala, porque ye l'anchu de la creatividá que se
   vende: un `clamp()` equí sirviría un güecu de 260px a quien pagó por 300.

   ¿Y por qué 302 y non 300? Porque `box-sizing: border-box` ye global (§ 5) y
   `.xal-anunciu__marcu` lleva un filete de 1px per llau: con `300px`, la caxa
   de conteníu queda en 298 y la imaxe sírvese reescalada. Con 302, la
   creatividá de 300 sal a 300 clavaos. Vistolo la revisión de códigu del
   2026-09-08.

   `align-items: flex-start` enriba ye lo que fai que `position: sticky`
   funcione: ensin ello, l'elementu estírase a tola altura de la fila y nun-y
   queda sitiu p'apegase. */
@container (min-width: 1180px) {
	.xal-portada-cuerpu__llau {
		display: block;
		flex: 0 0 302px;
		position: sticky;
		top: var(--xal-pegañosu);
	}
}

/* La franxa ancha, cabera pieza de la banda clara. L'aire va NEL PROPIU anunciu
   y non na pieza d'enriba: si nun hai campaña nun hai elementu, y ensin elementu
   nun hai aire.

   ⚠ Y va en `padding`, NON en `margin`, y eso ye lo que lu fai determinista. Un
   marxe COLAPSA col `margin-bottom` del caberu bloque cuando nun hai rail, y
   NUN colapsa cuando lu hai -porque entós los bloques van dientro d'un elementu
   flex, que abre contestu de formatu propiu-. O seya que l'aire enriba d'esta
   franxa dependía de si había campaña n'OTRU güecu, que se vende aparte. El
   `padding` nun colapsa nunca, asina que les dos combinaciones queden igual.
   Vistolo la revisión de códigu del 2026-09-08. */
/* Los dos güecos de BANDA: la franxa de portada y el de les viñetes. Compartan
   regla porque son la mesma pieza n'otru sitiu —una banda ancha centrada—, y
   nun hai nengún motivu pa que se separten. */
.xal-anunciu--portada-anchu,
.xal-anunciu--vinetes {
	padding-top: var(--xal-e7);
	padding-bottom: var(--xal-e7);
	max-width: 972px;
	margin-inline: auto;
}

/* ---------------------------------------------------------------------------
   18.3 NINGÚN GÜECU SIRVE LA CREATIVIDÁ MÁS GRANDE DE LO VENDÍO

   Decisión de la persona responsable, el **2026-09-10**, mirando el sitiu con
   campañes puestes. Enantes d'esti bloque:

     - la franxa `970x250` diba a `width: 100%` del contenedor -que llega a
       1560px-, asina qu'una creatividá de 970 sirvíase a **1406px nuna ventana
       de 1500**: un 45% d'ampliación, y eso vese borroso;
     - la caxa `300x250` nun teléfonu de 390px sirvíase a **360px**, un 20% más
       grande de lo vendío, porque per baxo de 780px la columna del artículu ye
       tol anchu.

   La regla que queda: **el güecu pue ser más pequeñu que lo vendío -y ehí manda
   la columna-, pero nunca más grande.** Ampliar una creatividá ye entregar
   borrosu lo que se cobró nítido.

   Los `+2px` son el filete de `.xal-anunciu__marcu`: con `box-sizing:
   border-box` -que ye global, § 5- un `max-width` de 970 dexaría la caxa de
   conteníu en 968. Ye la mesma cuenta que'l `302px` del rail.

   ⚠ LO QUE ESTO NUN ARREGLA, y hai que dicilo: nun escritoriu normal la caxa
   del artículu sírvese MÁS PEQUEÑA de 300. La columna ye
   `--xal-anchu-llau: clamp(220px, 17cqi, 300px)`, o seya que namás llega a 300
   dende ~1765px de ventana; nun portátil de 1400 son ~238px. Eso ye la columna
   del tramu 1 -compártela con «Lo más lleíu»- y camudalo ye otra decisión.
   --------------------------------------------------------------------------- */
/* ⚠ `align-self`, NON `margin-inline: auto`, y ye una trampa que costó una
   midida: la caxa ye fía d'una columna FLEX -`.xal-articulu__llau` y
   `.xal-dos-columnes__llau`-, y un marxe automáticu nel exe cruzáu d'un
   elementu flex ANULA l'estirado. Con `margin-inline: auto` el bloque dexaba
   d'ocupar la columna y encoyía al tamañu del so conteníu: midióse en **72px**
   nun teléfonu de 390. Col `width: 100%` -que ye anchu definíu- y
   `align-self: center`, ocupa lo que pue hasta'l tope y céntrase. */
.xal-anunciu--caxa {
	width: 100%;
	max-width: 302px;
	align-self: center;
}
