/* ==========================================================================
   ZARZA Corp - el tema.
   Depende de tokens.css y zarza-brand.css, en ese orden. Aqui NO se define
   ni un color a mano: todo sale de las variables --zz-*.
   Indice:
     01 base y suelo          06 fichas de catalogo
     02 tipografia            07 directorio y filtros
     03 medida y rejilla      08 reproductor
     04 cabecera              09 comentarios y formularios
     05 contenido en ficha    10 pie
                              11 widgets, utilidades y Elementor
   ========================================================================== */

/* ============ 01 · base y suelo ========================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  min-height:100vh;
  font-family:var(--zz-mono);
  font-size:15px;
  line-height:1.75;
  background:var(--zz-rojo);
  background-image:linear-gradient(176deg,var(--zz-rojo-alto) 0%,var(--zz-rojo) 45%,#980000 100%);
  background-attachment:fixed;
  color:var(--zz-sobre-rojo);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* el grano va en un hijo fijo, nunca en el body */
.zz-grano{z-index:0}
.zz-envoltorio{position:relative;z-index:2;display:flex;flex-direction:column;min-height:100vh}
.zz-principal{flex:1 0 auto;padding:clamp(28px,4vw,56px) 0 clamp(48px,7vw,88px)}

img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%}
img{height:auto}

/* saltar al contenido: primera parada del teclado */
.zz-saltar{position:absolute;inset-inline-start:-9999px;top:0;z-index:999;
  background:var(--zz-crema);color:var(--zz-rojo);font-family:var(--zz-mono);font-size:12px;
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:12px 18px;
  border-radius:0 0 var(--zz-radio-chico) 0;text-decoration:none}
.zz-saltar:focus{inset-inline-start:0}

:focus-visible{outline:2px solid var(--zz-sobre-rojo);outline-offset:3px}
.zz-ficha :focus-visible{outline-color:var(--zz-rojo)}

::selection{background:var(--zz-tinta);color:var(--zz-crema)}
.zz-ficha ::selection{background:var(--zz-rojo);color:var(--zz-crema)}

/* solo para lectores de pantalla */
.zz-oculto{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.zz-oculto:focus{position:static!important;width:auto;height:auto;clip:auto;clip-path:none}

/* ============ 02 · tipografia =========================================== */
h1,h2,h3,h4,h5,h6{
  font-family:var(--zz-display);font-weight:800;text-transform:lowercase;
  letter-spacing:var(--zz-tracking-titular);line-height:1.06;margin:0 0 .5em;
  text-wrap:balance;
}
h1{font-size:clamp(34px,6vw,72px);letter-spacing:-.05em;line-height:.98}
h2{font-size:clamp(26px,3.4vw,42px)}
h3{font-size:clamp(21px,2.2vw,27px)}
h4{font-size:18px;letter-spacing:-.02em}
h5{font-size:15px}
h6{font-family:var(--zz-mono);font-weight:600;font-size:11px;letter-spacing:var(--zz-tracking-rotulo);
  text-transform:uppercase}

p{margin:0 0 1.15em}
p:last-child{margin-bottom:0}

a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}

/* enlaces sobre el rojo: crema; dentro de una ficha: rojo vivo */
.zz-sobre a{color:var(--zz-sobre-rojo)}
.zz-ficha a{color:var(--zz-rojo-vivo)}

small{font-size:12px}
sup,sub{font-size:.72em;line-height:0}
hr{border:0;border-top:1px solid var(--zz-linea);margin:2em 0}
.zz-sobre hr{border-top-color:var(--zz-borde-sobre-rojo)}

code,kbd,samp{font-family:var(--zz-mono);font-size:.92em}

/* la rotulacion tecnica: dice hechos, no vende nada */
.zz-rotulo{display:inline-block;font-weight:500}
.zz-sobre .zz-rotulo{color:var(--zz-sobre-rojo-3)}

.zz-bajada{font-size:clamp(15px,1.5vw,17px);line-height:1.7;color:var(--zz-sobre-rojo-2);
  max-width:62ch;margin:0}

/* ============ 03 · medida y rejilla ===================================== */
.zz-medida{width:min(100% - 44px,var(--zz-ancho));margin-inline:auto}
@media (max-width:600px){.zz-medida{width:min(100% - 28px,var(--zz-ancho))}}

.zz-rejilla{display:grid;gap:22px}
.zz-rejilla[data-cols="2"]{grid-template-columns:repeat(2,1fr)}
.zz-rejilla[data-cols="3"]{grid-template-columns:repeat(3,1fr)}
.zz-rejilla[data-cols="4"]{grid-template-columns:repeat(4,1fr)}
@media (max-width:960px){
  .zz-rejilla[data-cols="3"],.zz-rejilla[data-cols="4"]{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:620px){
  .zz-rejilla[data-cols]{grid-template-columns:1fr}
}

/* pagina con barra lateral */
.zz-con-lateral{display:grid;gap:26px;grid-template-columns:minmax(0,1fr) 320px;align-items:start}
@media (max-width:1000px){.zz-con-lateral{grid-template-columns:1fr}}

/* la cabecera de una vista, sobre el rojo */
.zz-encabezado{margin:0 0 clamp(22px,3vw,34px)}
.zz-encabezado .zz-rotulo{margin-bottom:10px}
.zz-encabezado h1{margin-bottom:.35em}

/* ============ 04 · cabecera ============================================= */
.zz-cabecera{position:relative;z-index:20;padding:18px 0;
  border-bottom:1px solid var(--zz-borde-sobre-rojo)}
.zz-cabecera.zz-pegada{position:sticky;top:0;
  background:linear-gradient(180deg,var(--zz-rojo-alto),var(--zz-rojo));
  box-shadow:0 10px 30px -18px rgba(20,0,0,.9)}
.zz-cab-fila{display:flex;align-items:center;gap:24px}

/* el logotipo: 128x46 es donde vive casi siempre. Por debajo de 76px va el simbolo */
.zz-marca{display:inline-flex;align-items:center;gap:12px;flex:none;text-decoration:none;
  line-height:0}
.zz-marca img,.zz-marca svg{width:128px;height:46px;object-fit:contain}
.zz-marca .zz-simbolo{display:none;width:38px;height:38px}
@media (max-width:420px){
  .zz-marca img,.zz-marca svg:not(.zz-simbolo){display:none}
  .zz-marca .zz-simbolo{display:block}
}

/* el menu de zonas */
.zz-menu{margin-inline-start:auto}
.zz-menu ul{display:flex;align-items:center;gap:4px;list-style:none;margin:0;padding:0}
.zz-menu li{position:relative}
.zz-menu a{display:block;font-family:var(--zz-mono);font-size:11px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:9px 12px;
  border-radius:var(--zz-radio-chico);color:var(--zz-sobre-rojo-2);transition:background .15s,color .15s}
.zz-menu a:hover,.zz-menu a:focus-visible{background:rgba(255,240,230,.12);color:var(--zz-sobre-rojo)}
.zz-menu .current-menu-item > a,.zz-menu .current_page_item > a,
.zz-menu .current-menu-ancestor > a,.zz-menu .current-menu-parent > a{
  background:var(--zz-crema);color:var(--zz-rojo)}

/* submenus */
.zz-menu .sub-menu{position:absolute;inset-inline-start:0;top:calc(100% + 8px);min-width:210px;display:block;
  flex-direction:column;gap:0;background:var(--zz-crema);border-radius:var(--zz-radio-chico);
  padding:6px;box-shadow:var(--zz-sombra-ficha);opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s,transform .15s,visibility .15s;z-index:30}
.zz-menu li:hover > .sub-menu,.zz-menu li:focus-within > .sub-menu{opacity:1;visibility:visible;transform:none}
.zz-menu .sub-menu a{color:var(--zz-tinta-2);letter-spacing:.08em}
.zz-menu .sub-menu a:hover{background:var(--zz-crema-2);color:var(--zz-rojo)}

/* 🔴 Los submenus de los ultimos elementos se abren HACIA DENTRO.
   Un submenu de 210 px anclado al borde izquierdo de su padre se sale de la
   pantalla cuando el padre esta a la derecha del todo: medido en de.zarza.com,
   el documento se iba a 1313 px con la ventana en 1280 y aparecia barra
   horizontal en TODO el sitio. Con la navegacion de prueba no se veia porque
   no tenia submenus; salio al poner el menu real, que tiene 39 elementos.
   Se alinean por el otro canto, que es lo que hace cualquier menu de sistema. */
/*   ⚠️ El `>` de primer nivel NO vale: la lista que WordPress imprime lleva la
   clase `menu`, no `zz-menu` --esta va en el <nav> de fuera-- asi que
   `.zz-menu > li` no casa con nada. Se comprobo mirando el DOM: el submenu
   que se salia colgaba de `ul.menu > li` (el 4 de 4). Sin bajar a mirar,
   la regla parecia escrita y no hacia nada. */
.zz-menu li:nth-last-child(-n+2) > .sub-menu{inset-inline-start:auto;inset-inline-end:0}
.zz-menu .sub-menu .current-menu-item > a{background:var(--zz-rojo);color:var(--zz-crema)}

/* acciones de la derecha */
.zz-cab-acciones{display:flex;align-items:center;gap:10px;flex:none}
.zz-icono-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
  border:1px solid var(--zz-borde-sobre-rojo);border-radius:var(--zz-radio-chico);background:transparent;
  color:var(--zz-sobre-rojo);cursor:pointer;padding:0;transition:background .15s}
.zz-icono-btn:hover{background:rgba(255,240,230,.12)}
.zz-icono-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

/* buscador desplegable de la cabecera */
.zz-cab-buscar{display:none;padding-top:14px}
.zz-cab-buscar.zz-abierto{display:block}

/* menu movil */
.zz-hamburguesa{display:none}
.zz-menu-movil{display:none;position:relative;z-index:19;padding:0 0 18px}
.zz-menu-movil.zz-abierto{display:block}
.zz-menu-movil ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.zz-menu-movil a{display:block;font-family:var(--zz-mono);font-size:13px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;text-decoration:none;padding:12px 14px;
  border-radius:var(--zz-radio-chico);color:var(--zz-sobre-rojo-2)}
.zz-menu-movil a:hover{background:rgba(255,240,230,.12);color:var(--zz-sobre-rojo)}
.zz-menu-movil .sub-menu{padding-inline-start:16px;margin-top:2px}
.zz-menu-movil .sub-menu a{font-size:12px;opacity:.85}
@media (max-width:900px){
  .zz-menu{display:none}
  .zz-hamburguesa{display:inline-flex}
}

/* ============ 05 · el contenido, siempre dentro de una ficha ============ */
/* La regla del manual: el rojo es el suelo, la crema es la ficha.
   Ningun texto corrido toca el rojo. */
.zz-ficha-contenido{padding:clamp(26px,4vw,48px) clamp(22px,3.4vw,44px)}
.zz-ficha-contenido > *{position:relative;z-index:1}

.zz-texto{max-width:66ch}                 /* la medida del manual */
.zz-texto.zz-ancho{max-width:none}

.zz-texto > *:first-child{margin-top:0}
.zz-texto > *:last-child{margin-bottom:0}
.zz-texto h2{margin:1.5em 0 .5em;font-size:clamp(24px,2.8vw,32px);color:var(--zz-tinta)}
.zz-texto h3{margin:1.4em 0 .45em;color:var(--zz-tinta)}
.zz-texto h4,.zz-texto h5{margin:1.3em 0 .4em;color:var(--zz-tinta)}
.zz-texto h6{margin:1.5em 0 .6em;color:var(--zz-rotulo-txt,#7D6E65)}
.zz-texto p,.zz-texto li{color:var(--zz-tinta-2)}
.zz-texto strong,.zz-texto b{color:var(--zz-tinta);font-weight:600}
.zz-texto ul,.zz-texto ol{margin:0 0 1.15em;padding-inline-start:1.4em}
.zz-texto li{margin-bottom:.4em}
.zz-texto ul{list-style:none;padding-inline-start:0}
.zz-texto ul li{position:relative;padding-inline-start:22px}
.zz-texto ul li::before{content:"";position:absolute;inset-inline-start:4px;top:.72em;width:7px;height:7px;
  background:var(--zz-rojo);border-radius:1px;transform:rotate(45deg)}
.zz-texto ol{counter-reset:zz;list-style:none;padding-inline-start:0}
.zz-texto ol > li{counter-increment:zz;position:relative;padding-inline-start:30px}
.zz-texto ol > li::before{content:counter(zz,decimal-leading-zero);position:absolute;inset-inline-start:0;top:0;
  font-size:11px;font-weight:600;color:var(--zz-rojo);letter-spacing:.06em}

/* la cita: Cormorant cursiva, la unica serif del sistema */
.zz-texto blockquote{margin:1.8em 0;padding:0 0 0 22px;border-inline-start:2px solid var(--zz-rojo);
  font-family:var(--zz-serif);font-style:italic;font-size:clamp(20px,2.2vw,26px);line-height:1.4;
  color:var(--zz-tinta);max-width:34ch}
.zz-texto blockquote p{color:inherit;font-family:inherit}
.zz-texto blockquote cite{display:block;margin-top:12px;font-family:var(--zz-mono);font-style:normal;
  font-size:10.5px;letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase;color:var(--zz-rotulo-txt,#7D6E65)}

.zz-texto img,.zz-texto figure{border-radius:var(--zz-radio-chico)}
.zz-texto figure{margin:1.8em 0}
.zz-texto figcaption{margin-top:9px;font-size:10.5px;letter-spacing:var(--zz-tracking-rotulo);
  text-transform:uppercase;color:var(--zz-rotulo-txt,#7D6E65)}

.zz-texto pre{background:var(--zz-tinta);color:#E8DCD2;padding:18px 20px;
  border-radius:var(--zz-radio-chico);overflow-x:auto;font-size:12.5px;line-height:1.6}
.zz-texto :not(pre) > code{background:var(--zz-crema-2);border:1px solid var(--zz-linea);
  border-radius:3px;padding:1px 5px;color:var(--zz-rojo)}

.zz-texto table{width:100%;border-collapse:collapse;margin:1.6em 0;font-size:13px}
.zz-texto th,.zz-texto td{padding:9px 12px;border-bottom:1px solid var(--zz-linea);text-align:start}
.zz-texto th{font-size:10.5px;letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase;
  color:var(--zz-rotulo-txt,#7D6E65);font-weight:500}
.zz-texto td{color:var(--zz-tinta-2)}
.zz-tabla-scroll{overflow-x:auto}

/* imagen destacada de la entrada, dentro de la ficha */
.zz-portada{margin:0 0 clamp(20px,3vw,30px);border-radius:var(--zz-radio-chico);overflow:hidden;
  background:var(--zz-crema-2);aspect-ratio:16/9}
.zz-portada img{width:100%;height:100%;object-fit:cover}

/* pie de la entrada: etiquetas, autor, compartir */
.zz-pie-entrada{margin-top:clamp(24px,3vw,34px);padding-top:18px;border-top:1px solid var(--zz-linea);
  display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between}
.zz-etiquetas{display:flex;flex-wrap:wrap;gap:6px}
.zz-etq{text-decoration:none;transition:border-color .15s,color .15s}
a.zz-etq:hover{border-color:var(--zz-rojo);color:var(--zz-rojo)}

/* ============ 06 · fichas de catalogo =================================== */
/* Una entrada es una ficha, una emisora es una ficha, un disco es una ficha.
   Todas comparten .zz-ficha; lo que cambia es lo que se rotula en el canto. */
.zz-tarjeta{display:flex;flex-direction:column;text-decoration:none;height:100%;
  transition:transform .18s ease,box-shadow .18s ease}
.zz-tarjeta:hover{transform:translateY(-3px);
  box-shadow:0 1px 0 #fff inset,0 26px 52px -24px rgba(30,0,0,.9),0 2px 0 rgba(120,0,0,.22)}
@media (prefers-reduced-motion:reduce){.zz-tarjeta,.zz-tarjeta:hover{transform:none;transition:none}}

.zz-tarjeta .zz-t-img{margin:-26px -24px 16px;border-radius:var(--zz-radio) var(--zz-radio) 0 0;
  overflow:hidden;background:var(--zz-crema-2);aspect-ratio:16/10}
.zz-tarjeta .zz-t-img img{width:100%;height:100%;object-fit:cover}
.zz-tarjeta .zz-t-img + .zz-canto{margin-top:0}

.zz-tarjeta h3,.zz-tarjeta .zz-t-titulo{font-family:var(--zz-display);font-weight:800;
  text-transform:lowercase;letter-spacing:-.03em;line-height:1.08;font-size:21px;
  color:var(--zz-tinta);margin:0 0 8px}
.zz-tarjeta:hover .zz-t-titulo,.zz-tarjeta:hover h3{color:var(--zz-rojo)}
.zz-t-extracto{font-size:13px;line-height:1.65;color:var(--zz-tinta-2);margin:0 0 14px}
.zz-t-pie{margin-top:auto;padding-top:14px;border-top:1px solid var(--zz-linea);
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-family:var(--zz-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--zz-rotulo-txt,#7D6E65)}

/* ficha de emisora: el vinilo a la izquierda, el dato a la derecha */
.zz-emisora{display:flex;gap:16px;align-items:center}
.zz-emisora .zz-vinilo{--d:78px}
.zz-emisora-datos{min-width:0;flex:1}
.zz-emisora-nombre{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  font-family:var(--zz-display);font-weight:800;text-transform:lowercase;letter-spacing:-.03em;
  font-size:19px;line-height:1.12;color:var(--zz-tinta);overflow:hidden;overflow-wrap:break-word}
.zz-emisora-meta{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  font-size:12px;line-height:1.45;color:var(--zz-tinta-2);overflow:hidden;overflow-wrap:break-word}
.zz-emisora-oyentes{display:block;margin-top:6px;font-size:11px;color:var(--zz-rotulo-txt,#7D6E65)}

/* ficha de disco: la funda con el vinilo asomando */
.zz-funda{position:relative;aspect-ratio:1;background:var(--zz-rojo);border-radius:2px;
  display:grid;place-items:center;overflow:hidden;box-shadow:var(--zz-sombra-disco)}
.zz-funda img{width:100%;height:100%;object-fit:cover}
.zz-funda .zz-vinilo{position:absolute;inset-inline-end:-22%;top:50%;transform:translateY(-50%);
  --d:82%;z-index:-1}
.zz-funda-envoltorio{position:relative;padding-inline-end:14%}

/* linea de cortes (tracklist) */
.zz-cortes{list-style:none;margin:0;padding:0;counter-reset:corte}
.zz-cortes li{counter-increment:corte;display:flex;align-items:baseline;gap:12px;padding:8px 0;
  border-bottom:1px solid var(--zz-linea);font-size:13px;color:var(--zz-tinta-2)}
.zz-cortes li:last-child{border-bottom:0}
.zz-cortes li::before{content:counter(corte,decimal-leading-zero);font-family:var(--zz-mono);
  font-size:10.5px;letter-spacing:.1em;color:var(--zz-rotulo-txt,#7D6E65);flex:none;width:22px}
.zz-cortes .zz-dur{margin-inline-start:auto;font-size:11px;color:var(--zz-rotulo-txt,#7D6E65);font-variant-numeric:tabular-nums}

/* dato grande (cifras) */
.zz-dato{display:block}
.zz-dato-cifra{display:block;font-family:var(--zz-display);font-weight:800;letter-spacing:-.04em;
  font-size:clamp(30px,4vw,46px);line-height:1;font-variant-numeric:tabular-nums}
.zz-dato-pie{display:block;margin-top:7px;font-family:var(--zz-mono);font-size:10px;
  letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase}
.zz-ficha .zz-dato-cifra{color:var(--zz-rojo)}
.zz-ficha .zz-dato-pie{color:var(--zz-rotulo-txt,#7D6E65)}
.zz-sobre .zz-dato-cifra{color:var(--zz-sobre-rojo)}
.zz-sobre .zz-dato-pie{color:var(--zz-sobre-rojo-3)}

/* linea de tiempo: la casa lleva desde 1998 */
.zz-tiempo{list-style:none;margin:0;padding:0 0 0 26px;border-inline-start:1px solid var(--zz-linea)}
.zz-tiempo li{position:relative;padding:0 0 26px}
.zz-tiempo li:last-child{padding-bottom:0}
.zz-tiempo li::before{content:"";position:absolute;inset-inline-start:-31px;top:6px;width:9px;height:9px;
  background:var(--zz-rojo);border-radius:50%;box-shadow:0 0 0 4px var(--zz-crema)}
.zz-tiempo .zz-ano{display:block;font-family:var(--zz-mono);font-size:11px;font-weight:600;
  letter-spacing:var(--zz-tracking-rotulo);color:var(--zz-rojo);margin-bottom:4px}
.zz-tiempo h4{margin:0 0 5px;color:var(--zz-tinta)}
.zz-tiempo p{font-size:13px;color:var(--zz-tinta-2);margin:0}

/* acordeon (preguntas frecuentes) */
.zz-acordeon details{border-bottom:1px solid var(--zz-linea)}
.zz-acordeon details:last-child{border-bottom:0}
.zz-acordeon summary{cursor:pointer;list-style:none;padding:15px 30px 15px 0;position:relative;
  font-family:var(--zz-display);font-weight:800;text-transform:lowercase;letter-spacing:-.02em;
  font-size:17px;color:var(--zz-tinta)}
.zz-acordeon summary::-webkit-details-marker{display:none}
.zz-acordeon summary::after{content:"";position:absolute;inset-inline-end:6px;top:50%;width:9px;height:9px;
  border-inline-end:2px solid var(--zz-rojo);border-bottom:2px solid var(--zz-rojo);
  transform:translateY(-70%) rotate(45deg);transition:transform .18s}
.zz-acordeon details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.zz-acordeon .zz-respuesta{padding:0 0 16px;font-size:14px;line-height:1.7;color:var(--zz-tinta-2)}

/* paginacion */
.zz-paginacion{margin-top:clamp(28px,4vw,44px);display:flex;flex-wrap:wrap;gap:6px;
  align-items:center;justify-content:center}
.zz-paginacion .page-numbers{display:inline-flex;align-items:center;justify-content:center;
  min-width:38px;height:38px;padding:0 11px;border-radius:var(--zz-radio-chico);
  border:1px solid var(--zz-borde-sobre-rojo);color:var(--zz-sobre-rojo-2);text-decoration:none;
  font-family:var(--zz-mono);font-size:12px;font-variant-numeric:tabular-nums;transition:background .15s}
.zz-paginacion .page-numbers:hover{background:rgba(255,240,230,.12);color:var(--zz-sobre-rojo)}
.zz-paginacion .page-numbers.current{background:var(--zz-crema);color:var(--zz-rojo);
  border-color:var(--zz-crema);font-weight:600}
.zz-paginacion .dots{border-color:transparent}

/* mas de lo mismo: el enlazado interno que convierte una ficha en un camino */
.zz-relacionado{margin-top:clamp(30px,4vw,48px)}
.zz-relacionado > .zz-rotulo{display:block;margin-bottom:14px;color:var(--zz-sobre-rojo-3)}

/* ============ 07 · directorio y filtros ================================= */
.zz-buscador{display:flex;gap:8px;align-items:stretch}
.zz-buscador input[type="search"],.zz-buscador input[type="text"]{
  flex:1;min-width:0;font-family:var(--zz-mono);font-size:14px;padding:12px 15px;
  border:1px solid var(--zz-borde-sobre-rojo);border-radius:var(--zz-radio-chico);
  background:rgba(255,240,230,.08);color:var(--zz-sobre-rojo)}
.zz-buscador input::placeholder{color:var(--zz-sobre-rojo-3)}
.zz-buscador input:focus{outline:none;border-color:var(--zz-sobre-rojo);background:rgba(255,240,230,.14)}
.zz-ficha .zz-buscador input[type="search"],.zz-ficha .zz-buscador input[type="text"]{
  background:var(--zz-crema-2);border-color:var(--zz-linea);color:var(--zz-tinta)}
.zz-ficha .zz-buscador input::placeholder{color:var(--zz-tinta-3)}

.zz-filtros{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.zz-filtros select{font-family:var(--zz-mono);font-size:11px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;padding:10px 30px 10px 12px;border:1px solid var(--zz-linea);
  border-radius:var(--zz-radio-chico);background:var(--zz-crema-2);color:var(--zz-tinta-2);
  appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236E5C52' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;background-size:10px 6px}
.zz-filtros select:focus{outline:none;border-color:var(--zz-rojo)}

/* 🔴 La UNICA regla por direccion de todo el tema, y hace falta.
   La flecha del desplegable es una imagen de fondo, y background-position no
   tiene keywords logicas: en arabe se quedaria pegada al lado equivocado,
   encima del texto. El hueco que la deja libre si es logico
   (padding-inline-end), asi que solo hay que mover la imagen. */
[dir="rtl"] .zz-filtros select{background-position:left 11px center}

/* pastillas de filtro rapido */
.zz-pastillas{display:flex;flex-wrap:wrap;gap:6px}
.zz-pastilla{display:inline-flex;align-items:center;gap:6px;font-family:var(--zz-mono);font-size:10px;
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:6px 11px;border-radius:99px;
  border:1px solid var(--zz-borde-sobre-rojo);color:var(--zz-sobre-rojo-2);text-decoration:none;
  transition:background .15s,color .15s,border-color .15s}
.zz-pastilla:hover{background:rgba(255,240,230,.14);color:var(--zz-sobre-rojo)}
.zz-pastilla.zz-activa{background:var(--zz-crema);border-color:var(--zz-crema);color:var(--zz-rojo)}
.zz-pastilla .zz-n{font-variant-numeric:tabular-nums;opacity:.7}

/* barra de resultados */
.zz-resultados{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;
  margin:0 0 18px;font-family:var(--zz-mono);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--zz-sobre-rojo-3)}
.zz-resultados b{color:var(--zz-sobre-rojo);font-weight:600;font-variant-numeric:tabular-nums}

/* estado de carga del directorio */
.zz-cargando{opacity:.45;pointer-events:none;transition:opacity .15s}

/* nada encontrado */
.zz-vacio{text-align:center;padding:clamp(30px,5vw,54px) 24px}
.zz-vacio .zz-vinilo{margin:0 auto 20px;--d:90px}
.zz-vacio h2{color:var(--zz-tinta)}
.zz-vacio p{color:var(--zz-tinta-2);max-width:44ch;margin-inline:auto}

/* ============ 08 · el reproductor ======================================= */
/* Barra fija abajo. Solo aparece cuando algo suena de verdad. */
.zz-reproductor{position:fixed;inset-inline-start:0;inset-inline-end:0;bottom:0;z-index:900;transform:translateY(100%);
  transition:transform .28s ease;background:linear-gradient(180deg,var(--zz-rojo),var(--zz-rojo-hondo));
  border-top:1px solid var(--zz-borde-sobre-rojo);
  box-shadow:0 -14px 40px -22px rgba(20,0,0,.95);
  padding-bottom:env(safe-area-inset-bottom)}
.zz-reproductor.zz-visible{transform:none}
@media (prefers-reduced-motion:reduce){.zz-reproductor{transition:none}}
body.zz-sonando{padding-bottom:88px}

.zz-rep-fila{display:flex;align-items:center;gap:16px;padding:12px 0}
.zz-rep-disco{--d:52px;flex:none}
.zz-rep-datos{min-width:0;flex:1}
.zz-rep-nombre{display:block;font-family:var(--zz-display);font-weight:800;text-transform:lowercase;
  letter-spacing:-.03em;font-size:17px;line-height:1.15;color:var(--zz-sobre-rojo);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zz-rep-meta{display:block;font-family:var(--zz-mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--zz-sobre-rojo-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zz-rep-vu{width:74px;flex:none}
.zz-rep-vu .zz-vu i{background:var(--zz-sobre-rojo-3)}
.zz-rep-vu .zz-vu i.zz-pico{background:var(--zz-ambar)}
.zz-rep-acciones{display:flex;align-items:center;gap:8px;flex:none}

.zz-rep-play{width:46px;height:46px;border-radius:50%;border:0;cursor:pointer;flex:none;
  background:var(--zz-crema);color:var(--zz-rojo);display:grid;place-items:center;
  transition:transform .15s}
.zz-rep-play:hover{transform:scale(1.06)}
.zz-rep-play svg{width:17px;height:17px;fill:currentColor}
.zz-rep-play .zz-i-pausa{display:none}
.zz-reproductor.zz-activo .zz-rep-play .zz-i-pausa{display:block}
.zz-reproductor.zz-activo .zz-rep-play .zz-i-play{display:none}

.zz-rep-vol{width:88px;accent-color:var(--zz-crema);cursor:pointer}
.zz-rep-cerrar{background:transparent;border:0;color:var(--zz-sobre-rojo-3);cursor:pointer;
  padding:6px;line-height:0}
.zz-rep-cerrar:hover{color:var(--zz-sobre-rojo)}
.zz-rep-cerrar svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}

/* reconectando: el aire se cayo pero no mentimos diciendo que suena */
.zz-reproductor.zz-reconectando .zz-rep-meta{color:var(--zz-ambar)}
.zz-reproductor.zz-reconectando .zz-rep-disco{animation:none;filter:grayscale(1);opacity:.6}

@media (max-width:720px){
  .zz-rep-vu,.zz-rep-vol{display:none}
  .zz-rep-fila{gap:12px}
  .zz-rep-disco{--d:42px}
}

/* boton de escuchar dentro de una ficha */
.zz-escuchar{display:inline-flex;align-items:center;gap:8px}
.zz-escuchar svg{width:13px;height:13px;fill:currentColor}

/* ============ 09 · comentarios y formularios ============================ */
.zz-campo{display:block;margin-bottom:16px}
.zz-campo > label,.zz-etiqueta-campo{display:block;font-family:var(--zz-mono);font-size:10px;
  letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase;color:var(--zz-rotulo-txt,#7D6E65);
  margin-bottom:7px}
.zz-campo input,.zz-campo textarea,.zz-campo select,
.zz-ficha input[type="text"],.zz-ficha input[type="email"],.zz-ficha input[type="url"],
.zz-ficha input[type="tel"],.zz-ficha input[type="number"],.zz-ficha input[type="password"],
.zz-ficha textarea{
  width:100%;font-family:var(--zz-mono);font-size:14px;line-height:1.6;padding:11px 14px;
  border:1px solid var(--zz-linea);border-radius:var(--zz-radio-chico);background:var(--zz-crema-2);
  color:var(--zz-tinta)}
.zz-campo textarea,.zz-ficha textarea{min-height:150px;resize:vertical}
.zz-campo input:focus,.zz-campo textarea:focus,.zz-ficha input:focus,.zz-ficha textarea:focus{
  outline:none;border-color:var(--zz-rojo);background:var(--zz-crema)}
.zz-campo ::placeholder{color:var(--zz-tinta-3)}
.zz-ayuda{display:block;margin-top:6px;font-size:11px;color:var(--zz-rotulo-txt,#7D6E65)}

.zz-comentarios{margin-top:22px}
.zz-comentarios .zz-rotulo{color:var(--zz-rotulo-txt,#7D6E65)}
.zz-lista-comentarios,.zz-lista-comentarios .children{list-style:none;margin:0;padding:0}
.zz-lista-comentarios .children{margin-inline-start:clamp(14px,3vw,34px);padding-inline-start:16px;
  border-inline-start:1px solid var(--zz-linea)}
.zz-comentario{padding:16px 0;border-bottom:1px solid var(--zz-linea)}
.zz-com-cab{display:flex;align-items:center;gap:11px;margin-bottom:9px}
.zz-com-cab img{border-radius:50%;flex:none}
.zz-com-autor{font-family:var(--zz-display);font-weight:800;text-transform:lowercase;
  letter-spacing:-.02em;font-size:15px;color:var(--zz-tinta)}
.zz-com-fecha{font-family:var(--zz-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--zz-rotulo-txt,#7D6E65);margin-inline-start:auto}
.zz-comentario p{font-size:14px;color:var(--zz-tinta-2)}
.zz-com-responder a{font-family:var(--zz-mono);font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--zz-rojo);text-decoration:none}
.zz-com-espera{font-size:11px;color:var(--zz-ambar-txt);font-style:italic}
.comment-form-cookies-consent{display:flex;align-items:flex-start;gap:8px;font-size:12px;
  color:var(--zz-tinta-2)}
.comment-form-cookies-consent input{width:auto;margin-top:3px}

/* ============ 10 · el pie ============================================== */
.zz-pie{position:relative;z-index:2;flex:none;
  border-top:1px solid var(--zz-borde-sobre-rojo);
  background:linear-gradient(180deg,rgba(138,0,0,.35),rgba(138,0,0,.75));
  padding:clamp(40px,5vw,62px) 0 34px;margin-top:auto}

.zz-pie-alto{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:40px}
@media (max-width:860px){.zz-pie-alto{grid-template-columns:1fr 1fr;row-gap:32px}}
@media (max-width:520px){.zz-pie-alto{grid-template-columns:1fr}}

.zz-pie-marca .zz-marca{margin-bottom:15px}
.zz-pie-marca p{font-size:13px;line-height:1.65;max-width:38ch;color:var(--zz-sobre-rojo-3);margin:0}
.zz-pie-col h4{font-family:var(--zz-mono);font-weight:500;font-size:10.5px;
  letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase;color:var(--zz-sobre-rojo-3);
  margin:0 0 14px}
.zz-pie-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;
  font-size:13px}
.zz-pie-col a{color:var(--zz-sobre-rojo-2);text-decoration:none;transition:color .15s}
.zz-pie-col a:hover{color:var(--zz-sobre-rojo);text-decoration:underline;text-underline-offset:3px}

.zz-tarjeta-humana{display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  margin:38px 0 6px;padding:18px 24px;border:1px solid var(--zz-borde-sobre-rojo);
  border-radius:var(--zz-radio-chico);background:rgba(255,240,230,.05);text-decoration:none;
  transition:background .15s,transform .15s}
.zz-tarjeta-humana:hover{background:rgba(255,240,230,.1);transform:translateY(-1px)}
.zz-th-ico{font-size:29px;line-height:1;flex:none}
.zz-th-cuerpo{display:flex;flex-direction:column;gap:3px;flex:1;min-width:200px}
.zz-th-titulo{color:var(--zz-sobre-rojo);font-weight:600;font-size:16px}
.zz-th-sub{color:var(--zz-sobre-rojo-3);font-size:13px}
.zz-th-correo{font-family:var(--zz-mono);font-weight:600;font-size:15px;color:var(--zz-crema);
  white-space:nowrap}
@media (max-width:560px){.zz-th-correo{white-space:normal;word-break:break-all}}

.zz-idiomas{margin:26px 0 0;text-align:center;font-family:var(--zz-mono);font-size:11px;
  letter-spacing:.1em;color:var(--zz-sobre-rojo-3)}
.zz-idiomas a{color:var(--zz-sobre-rojo-3);text-decoration:none;padding:0 3px}
.zz-idiomas a:hover,.zz-idiomas .zz-idioma-actual{color:var(--zz-crema)}
.zz-idiomas .zz-sep{opacity:.45;padding:0 4px}

.zz-firma{text-align:center;border-top:1px solid var(--zz-borde-sobre-rojo);
  padding-top:28px;margin-top:24px}
.zz-firma-tag{display:inline-flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;
  font-family:var(--zz-mono);text-transform:uppercase;letter-spacing:.08em;font-weight:600;
  font-size:11.5px;color:var(--zz-sobre-rojo-3)}
.zz-firma-tag .zz-rayo{width:15px;height:15px;flex:none;fill:var(--zz-crema)}

/* el credito de Silicon Valley: dos estados en la misma celda, crossfade al pasar por encima.
   El tachado va en ambar y no en rojo: sobre el rojo de la casa un tachado rojo no se veria. */
.zz-creditos-fila{display:block;margin-top:16px;line-height:1}
.zz-creditos{position:relative;display:inline-grid;place-items:center;font-family:var(--zz-mono);
  font-size:11.5px;letter-spacing:.04em;color:var(--zz-sobre-rojo-3);cursor:default}
.zz-cred-estado{grid-area:1/1;display:inline-flex;align-items:center;justify-content:center;gap:.4em;
  white-space:nowrap;transition:opacity .28s ease}
.zz-cred-b{opacity:0}
.zz-creditos:hover .zz-cred-a,.zz-creditos:focus-within .zz-cred-a{opacity:0}
.zz-creditos:hover .zz-cred-b,.zz-creditos:focus-within .zz-cred-b{opacity:1}
.zz-cred-sv{unicode-bidi:isolate;color:var(--zz-sobre-rojo-3);text-decoration:line-through;
  text-decoration-color:var(--zz-ambar);text-decoration-thickness:2px}
.zz-cred-cr{unicode-bidi:isolate;color:var(--zz-crema);font-weight:600}
.zz-cred-emo{font-size:1.05em;line-height:1}
.zz-cred-taza{position:relative;display:inline-block}
.zz-cred-taza::before,.zz-cred-taza::after{content:"";position:absolute;bottom:100%;width:2px;height:6px;
  border-radius:2px;background:rgba(255,246,238,.65);opacity:0}
.zz-cred-taza::before{inset-inline-start:32%}
.zz-cred-taza::after{inset-inline-start:62%}
@keyframes zz-vapor{0%{opacity:0;transform:translateY(3px) scaleY(.6)}
  35%{opacity:.85}
  100%{opacity:0;transform:translateY(-7px) scaleY(1.3)}}
.zz-creditos:hover .zz-cred-taza::before,.zz-creditos:focus-within .zz-cred-taza::before{
  animation:zz-vapor 1.6s ease-out infinite}
.zz-creditos:hover .zz-cred-taza::after,.zz-creditos:focus-within .zz-cred-taza::after{
  animation:zz-vapor 1.6s ease-out .55s infinite}
.zz-cred-tip{position:absolute;bottom:calc(100% + 9px);inset-inline-start:50%;transform:translateX(-50%) translateY(3px);
  z-index:3;pointer-events:none;opacity:0;transition:opacity .2s ease,transform .2s ease;
  background:var(--zz-crema);color:var(--zz-tinta);border:1px solid var(--zz-linea);padding:5px 10px;
  border-radius:var(--zz-radio-chico);font-size:10px;font-weight:600;letter-spacing:.03em;
  line-height:1.35;max-width:min(78vw,300px);text-align:center;
  box-shadow:0 10px 26px -12px rgba(20,0,0,.8)}
.zz-creditos:hover .zz-cred-tip,.zz-creditos:focus-within .zz-cred-tip{opacity:1;
  transform:translateX(-50%) translateY(0)}

/* la cita del Exodo: el origen del nombre */
.zz-cita-pie{margin:20px auto 0;max-width:34ch;font-family:var(--zz-serif);font-style:italic;
  font-size:clamp(17px,2vw,21px);line-height:1.4;color:var(--zz-sobre-rojo-2)}
.zz-cita-pie cite{display:block;margin-top:9px;font-family:var(--zz-mono);font-style:normal;
  font-size:9.5px;letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase;
  color:var(--zz-sobre-rojo-3)}

.zz-copia{display:block;margin-top:18px;font-family:var(--zz-mono);font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--zz-sobre-rojo-3)}
.zz-copia a{color:inherit;text-decoration:none}
.zz-copia a:hover{color:var(--zz-crema)}

@media (max-width:360px){
  .zz-creditos{width:100%;max-width:100%}
  .zz-cred-estado{white-space:normal;flex-wrap:wrap;line-height:1.5}
}

/* la pila de emoji, para que el corazon y la taza salgan a color en todos los sistemas */
.zz-cred-emo{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",monospace}

/* ============ 11 · widgets, utilidades y Elementor ====================== */
.zz-lateral{display:flex;flex-direction:column;gap:18px;position:sticky;top:88px}
@media (max-width:1000px){.zz-lateral{position:static}}
.zz-widget h2,.zz-widget .widget-title{font-family:var(--zz-mono);font-weight:500;font-size:10.5px;
  letter-spacing:var(--zz-tracking-rotulo);text-transform:uppercase;color:var(--zz-rotulo-txt,#7D6E65);
  margin:0 0 14px;padding-bottom:9px;border-bottom:1px solid var(--zz-linea)}
.zz-widget ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;
  font-size:13px}
.zz-widget li{color:var(--zz-tinta-2)}
.zz-widget a{color:var(--zz-tinta-2);text-decoration:none}
.zz-widget a:hover{color:var(--zz-rojo)}
.zz-widget .children,.zz-widget .sub-menu{padding-inline-start:14px;margin-top:9px}
.zz-widget .post-date,.zz-widget .rss-date{display:block;font-family:var(--zz-mono);font-size:10px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--zz-rotulo-txt,#7D6E65)}
.zz-widget select{width:100%}
.zz-widget-nube{display:flex;flex-wrap:wrap;gap:6px}
.zz-widget-nube a{font-family:var(--zz-mono);font-size:10px!important;letter-spacing:.1em;
  text-transform:uppercase;padding:4px 9px;border:1px solid var(--zz-linea);border-radius:3px}
.zz-widget-nube a:hover{border-color:var(--zz-rojo)}

/* zonas de widgets sobre el rojo (bajo la cabecera y antes del pie) */
.zz-zona-sobre .zz-widget h2{color:var(--zz-sobre-rojo-3);border-bottom-color:var(--zz-borde-sobre-rojo)}
.zz-zona-sobre .zz-widget a,.zz-zona-sobre .zz-widget li{color:var(--zz-sobre-rojo-2)}
.zz-zona-sobre .zz-widget a:hover{color:var(--zz-crema)}

/* utilidades cortas, todas con prefijo */
.zz-centro{text-align:center}
.zz-flex{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.zz-entre{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.zz-mt0{margin-top:0}.zz-mt1{margin-top:10px}.zz-mt2{margin-top:20px}.zz-mt3{margin-top:32px}
.zz-mb0{margin-bottom:0}.zz-mb1{margin-bottom:10px}.zz-mb2{margin-bottom:20px}.zz-mb3{margin-bottom:32px}
.zz-seccion{padding:clamp(38px,6vw,80px) 0}
.zz-seccion-crema{background:var(--zz-crema);color:var(--zz-tinta)}
.zz-seccion-crema h1,.zz-seccion-crema h2,.zz-seccion-crema h3{color:var(--zz-tinta)}

/* Elementor: que la maqueta ocupe todo el ancho y que el editor vea la misma piel */
.elementor-section.elementor-section-boxed > .elementor-container,
.e-con{max-width:var(--zz-ancho)}
.elementor-widget-container > *:first-child{margin-top:0}
body.elementor-page .zz-principal{padding-top:0;padding-bottom:0}
body.elementor-editor-active .zz-grano{display:none}
/* dentro de un contenedor claro de Elementor, el texto vuelve a ser tinta */
.zz-sobre-crema{color:var(--zz-tinta)}
.zz-sobre-crema a{color:var(--zz-rojo-vivo)}

/* impresion: el rojo se va, queda el documento */
@media print{
  body{background:#fff!important;color:#000}
  .zz-grano,.zz-reproductor,.zz-cabecera,.zz-pie,.zz-lateral,.zz-paginacion{display:none!important}
  .zz-ficha{box-shadow:none;border:1px solid #ccc}
  .zz-ficha::before{display:none}
}

/* El logotipo con bajada necesita mas ancho: a 128 px la linea
   RADIOS · PODCASTS · AL AIRE queda por debajo de lo legible. */
.zz-pie-marca .zz-marca img,.zz-pie-marca .zz-marca svg:not(.zz-simbolo){width:176px;height:75px}
.zz-cabecera.zz-con-sombra{box-shadow:0 14px 34px -20px rgba(20,0,0,.95)}

/* Las migas son una linea propia: sin display:block el rotulo que va debajo se
   les pega detras y las dos cosas se leen como una sola frase. */
.zz-migas{display:block;margin:0 0 14px;color:var(--zz-sobre-rojo-3);line-height:1.6}
.zz-migas a{color:var(--zz-sobre-rojo-3);text-decoration:none}
.zz-migas a:hover{color:var(--zz-sobre-rojo);text-decoration:underline;text-underline-offset:3px}
.zz-migas span[aria-current],.zz-migas .breadcrumb_last{color:var(--zz-sobre-rojo-2)}
.zz-ficha .zz-migas{color:var(--zz-rotulo-txt,#7D6E65)}
.zz-ficha .zz-migas a{color:var(--zz-rotulo-txt,#7D6E65)}
.zz-ficha .zz-migas a:hover{color:var(--zz-rojo)}
/* El rotulo de categoria que va sobre el titular tambien es su propia linea. */
.zz-encabezado > .zz-rotulo{display:block;margin-bottom:10px}

/* 🔴 Los hijos de una rejilla (y de un flex) tienen min-width:auto de serie, o
   sea que NO bajan del ancho de su propio contenido. Con una ficha que lleva
   dentro un nombre largo, la columna se ensancha y la pagina entera se desplaza
   en horizontal. Es la causa numero uno de un movil roto y no da ningun error. */
.zz-rejilla > *{min-width:0}
.zz-canto > span:first-child{flex:none}
.zz-canto > span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zz-emisora > *{min-width:0}


/* La ficha de emisora se reordena cuando la columna es estrecha: con el boton
   al lado, el nombre se queda sin sitio y hay que cortarlo, que es justo lo que
   una ficha no puede hacer. */
.zzc-emisora-ficha .zz-emisora{flex-wrap:wrap;row-gap:14px}
.zzc-emisora-ficha .zz-emisora-datos{flex:1 1 150px}
@container (max-width:400px){
  .zzc-emisora-ficha .zz-escuchar{flex:1 1 100%;justify-content:center}
}
.zz-rejilla[data-cols="3"] .zzc-emisora-ficha .zz-escuchar,
.zz-rejilla[data-cols="4"] .zzc-emisora-ficha .zz-escuchar{flex:1 1 100%;justify-content:center}

/* El vumetro es un instrumento, no una banda decorativa: en un contenedor ancho
   sus barras se estiran y acaba pareciendo un codigo de barras. */
.zz-vu{max-width:280px;gap:3px}
.zz-vu i{max-width:9px}

/* ============ 12 · capa de accesibilidad ================================
   🔴 Dos colores del manual NO llegan a AA cuando son texto pequeno, y la
   tabla de contraste del manual no recoge esas dos combinaciones:

     tinta-3   #9C8A7E sobre crema #FAF6EF  ->  3,07 : 1   (hace falta 4,5)
     sobre-rojo-3  crema al 78% sobre rojo  ->  4,26 : 1   (hace falta 4,5)

   Los ficheros de marca NO se tocan: tokens.css es la entrega y editarlo seria
   bifurcar la marca en silencio. Se anaden aqui DOS tokens nuevos, solo para
   texto, medidos hasta pasar el umbral. Los originales siguen valiendo para lo
   que son —bordes, tornillos, adornos—, que es donde el contraste no aplica.
   ======================================================================== */
/* Los dos tokens ya viven en tokens.css desde el manual 1.1 (20-ago-2026).
   Aqui NO se redeclaran: una variable que se referencia a si misma forma un
   ciclo y CSS la deja sin valor. Si el sitio corriera con un tokens.css
   anterior, cada uso lleva su propia reserva. */

/* --- rotulos y datos menores, cuando son TEXTO --- */
.zz-canto,
.zz-emisora-oyentes,
.zz-t-pie,
.zz-widget .post-date,
.zz-widget .rss-date,
.zz-texto figcaption,
.zz-com-fecha,
.zz-cortes .zz-dur,
.zz-texto th,
.zz-widget h2,
.zz-widget .widget-title,
.zzc-calendario i{color:var(--zz-rotulo-txt,#7D6E65)}

.zz-etq{color:var(--zz-rotulo-txt,#7D6E65)}
.zz-tiempo p{color:var(--zz-tinta-2)}

/* --- sobre el rojo --- */
.zz-sobre .zz-rotulo,
.zz-migas,
.zz-migas a,
.zz-resultados,
.zz-pie-marca p,
.zz-pie-col h4,
.zz-idiomas,
.zz-idiomas a,
.zz-firma-tag,
.zz-creditos,
.zz-cred-sv,
.zz-copia,
.zz-th-sub,
.zz-cita-pie cite,
.zz-paginacion .page-numbers{color:var(--zz-sobre-rojo-rot,rgba(255,240,230,.84))}

/* 🔴 Dentro de una ficha clara, un rotulo NO puede seguir siendo crema.
   `.zz-sobre .zz-rotulo` y `.zz-ficha .zz-rotulo` tienen la misma
   especificidad, asi que gana el que va despues: este. Sin esta regla, el
   rotulo del 404 salia en crema sobre crema — 1,03:1, invisible. */
.zz-ficha .zz-rotulo,
.zz-ficha .zz-migas,
.zz-ficha .zz-migas a{color:var(--zz-rotulo-txt,#7D6E65)}

/* 🔴 `.zz-ficha a` (0,1,1) gana a `.zz-btn-rojo` (0,1,0), asi que dentro de una
   ficha TODOS los botones se pintaban de rojo-vivo: texto rojo sobre boton
   rojo, 1,41:1. Se excluyen los que llevan su propio color. */
/* 🔴 Y LAS EXCLUSIONES VAN DENTRO DE :where(). Escritas como cuatro `:not()`
   sueltos sumaban cuatro clases: la regla quedaba en 0,5,1 y se convertia en
   una bomba de especificidad --cualquier componente que quisiera un enlace no
   rojo dentro de una ficha tenia que escribir algo mas raro todavia--. Paso de
   verdad con los titulos del bloque de ultimos episodios: salian rojos y una
   regla de dos clases no podia con ellos.
   `:where()` no aporta especificidad: la exclusion sigue funcionando igual y la
   regla vuelve a valer 0,1,1, que es lo que siempre debio valer. Los botones
   siguen a salvo por sus propias reglas de 0,2,1, mas especificas que esta. */
.zz-ficha a:not(:where(.zz-btn,.zz-etq,.zz-emisora-nombre,.zz-t-titulo)){color:var(--zz-rojo-vivo)}
.zz-ficha a.zz-btn-claro{color:var(--zz-rojo)}
.zz-ficha a.zz-btn-rojo,
.zz-ficha a.zz-btn-tinta{color:var(--zz-crema)}
.zz-ficha a.zz-btn-hueco{color:var(--zz-tinta-2)}

/* La ficha de un disco se apila cuando no cabe: con la funda a 250 px fija y
   el tracklist al lado, a 390 px la pagina se desplazaba 57 px en horizontal. */
@media (max-width:640px){
  .zz-ficha-contenido .zz-flex{flex-wrap:wrap}
  .zzc-funda-envoltorio[style]{width:100%!important}
}

/* ---- la ficha clara CORTA la herencia del rojo --------------------------
   🔴 La causa raiz de casi todos los fallos de contraste de esta tanda:
   `.zz-sobre a` tiene especificidad (0,1,1) y `.zz-ficha` solo (0,1,0). Como
   una tarjeta de catalogo ES un enlace y vive dentro de `main.zz-sobre`, toda
   la tarjeta heredaba el color crema del fondo rojo... sobre fondo crema. Y
   `.zz-ficha b{color:inherit}` propagaba ese crema hacia dentro: el numero del
   dia de la agenda salia crema sobre crema, 1,13:1, invisible.

   No da ningun error y solo se ve mirando. Aqui se re-declara, con la
   especificidad suficiente, que dentro de una ficha manda la tinta. */
.zz-sobre a.zz-ficha,
.zz-sobre .zz-ficha{color:var(--zz-tinta)}
.zz-sobre a.zz-ficha .zz-t-titulo,
.zz-sobre .zz-ficha .zz-t-titulo{color:var(--zz-tinta)}
.zz-sobre a.zz-ficha:hover .zz-t-titulo{color:var(--zz-rojo)}
.zz-sobre .zz-ficha .zz-t-extracto{color:var(--zz-tinta-2)}
.zz-sobre .zz-ficha .zz-dato-cifra{color:var(--zz-rojo)}
.zz-sobre .zz-ficha .zz-dato-pie{color:var(--zz-rotulo-txt,#7D6E65)}
.zz-sobre .zz-ficha .zz-cita{color:var(--zz-tinta)}
.zz-sobre .zz-ficha .zz-titular{color:var(--zz-tinta)}
.zz-sobre .zz-ficha .zz-aire{color:#fff}
.zz-sobre .zz-ficha .zz-frio{color:var(--zz-rotulo-txt,#7D6E65)}
.zzc-calendario b{color:var(--zz-rojo)}

/* la fuente de una cita es un rotulo, no texto corrido */
.zz-texto blockquote cite,
.zz-cita cite{color:var(--zz-rotulo-txt,#7D6E65)}

/* La ventana del casete y los campos van sobre crema-2 (#F1E9DD), que es algo
   mas oscura que la crema de la ficha: el rotulo accesible se queda ahi en
   4,06:1. Sobre ese fondo manda la tinta-2. */
.zz-ventana .zz-rotulo,
.zz-ventana{color:var(--zz-tinta-2)}

/* ============ 13 · la guia de estilo ==================================== */
.zz-guia-indice{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 clamp(30px,4vw,50px);
  padding:16px 18px;border:1px solid var(--zz-borde-sobre-rojo);border-radius:var(--zz-radio)}
.zz-guia-indice a{font-family:var(--zz-mono);font-size:10.5px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;text-decoration:none;padding:6px 11px;
  border-radius:99px;border:1px solid var(--zz-borde-sobre-rojo);
  color:var(--zz-sobre-rojo-rot,rgba(255,240,230,.84));transition:background .15s,color .15s}
.zz-guia-indice a:hover{background:var(--zz-crema);color:var(--zz-rojo);border-color:var(--zz-crema)}

.zz-guia-bloque{padding:clamp(34px,5vw,64px) 0;border-top:1px solid var(--zz-borde-sobre-rojo)}
.zz-guia-bloque:first-of-type{border-top:0;padding-top:0}
.zz-guia-cab{margin:0 0 clamp(20px,3vw,32px)}
.zz-guia-cab .zz-rotulo{display:block;margin-bottom:10px}
.zz-guia-cab h2{margin:0 0 .35em}
.zz-guia-cab code{background:rgba(255,240,230,.14);border-radius:3px;padding:1px 5px;font-size:.92em}

.zz-guia-codigo{margin-top:18px}
.zz-guia-codigo .zz-rotulo{display:block;margin-bottom:8px;color:var(--zz-sobre-rojo-rot,rgba(255,240,230,.84))}
.zz-guia-codigo pre{margin:0;background:var(--zz-tinta);color:#E8DCD2;padding:16px 18px;
  border-radius:var(--zz-radio-chico);overflow-x:auto;font-family:var(--zz-mono);
  font-size:12.5px;line-height:1.65;border:1px solid rgba(255,240,230,.14)}
.zz-guia-codigo code{font-family:inherit;background:none;border:0;padding:0;color:inherit}

/* la parrilla de color */
.zz-guia-colores{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.zz-guia-color{display:flex;flex-direction:column;gap:3px;padding:16px 15px;
  border-radius:var(--zz-radio-chico);border:1px solid rgba(0,0,0,.12);min-height:104px}
.zz-guia-color b{font-family:var(--zz-display);font-weight:800;text-transform:lowercase;
  letter-spacing:-.02em;font-size:16px}
.zz-guia-color i{font-family:var(--zz-mono);font-style:normal;font-size:11px;letter-spacing:.08em}
.zz-guia-color em{font-family:var(--zz-mono);font-style:normal;font-size:9.5px;letter-spacing:.1em;
  text-transform:uppercase;opacity:.72;margin-top:auto}

.zz-guia-fila{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.zz-guia-widgets{display:flex;flex-direction:column;gap:18px}

/* la tabla de referencia de atajos */
.zz-guia-tabla{width:100%;border-collapse:collapse;font-size:13px}
.zz-guia-tabla td{padding:9px 0;border-bottom:1px solid var(--zz-linea);vertical-align:top;
  color:var(--zz-tinta-2)}
.zz-guia-tabla tr:last-child td{border-bottom:0}
.zz-guia-tabla td:first-child{width:47%;padding-inline-end:20px}
.zz-guia-tabla code{display:inline-block;background:var(--zz-crema-2);border:1px solid var(--zz-linea);
  border-radius:3px;padding:2px 7px;color:var(--zz-rojo);font-size:11.5px;line-height:1.5;
  word-break:break-word}
@media (max-width:720px){
  .zz-guia-tabla td:first-child{width:auto;display:block;padding-bottom:4px;border:0}
  .zz-guia-tabla td:last-child{display:block;padding-top:0}
}

/* Al saltar a un ancla, la cabecera pegada tapaba el titulo de la seccion. */
.zz-guia-bloque{scroll-margin-top:88px}

/* La ventana del casete a todo el ancho parece un filete, no una cinta: se
   acota al ancho de un casete de verdad. */
.zzc-casete .zz-ventana{max-width:420px}
.zz-guia-zona{display:block;margin-bottom:2px}
.zz-guia-zona b{color:var(--zz-sobre-rojo);font-weight:600}


/* 🔴 El mismo animal que la ficha, otra vez: `.zz-sobre a` tiene especificidad
   (0,1,1) y `.zz-btn-claro` solo (0,1,0). Un boton claro sobre el rojo salia con
   texto crema sobre fondo crema — 1,01:1, un boton en blanco. Vale para
   CUALQUIER boton del sitio, no solo para el de la guia. */
.zz-sobre a.zz-btn-claro{color:var(--zz-rojo)}
.zz-sobre a.zz-btn-hueco{color:var(--zz-sobre-rojo)}
.zz-sobre a.zz-btn-rojo,
.zz-sobre a.zz-btn-tinta{color:var(--zz-crema)}

/* 🔴 Tercera vez que aparece lo mismo, asi que se cierra para todas las
   rejillas del tema de golpe: los hijos de un grid tienen min-width:auto y NO
   bajan del ancho de su contenido. Aqui era la columna de contenido junto al
   lateral: 399 px dentro de una ventana de 390. */
.zz-con-lateral > *,
.zz-pie-alto > *,
.zz-guia-colores > *{min-width:0}
.zz-widget-nube a{max-width:100%;overflow-wrap:anywhere}

/* El logotipo de una emisora heredada del sitio viejo: viene como URL, no como
   imagen destacada, y suele ser cuadrado y pequeno. Se le da un marco de ficha
   en vez de estirarlo a lo ancho como si fuera una portada. */
.zz-portada-logo{max-inline-size:280px;background:var(--zz-crema-2);border:1px solid var(--zz-linea);
  border-radius:var(--zz-radio);padding:18px;margin-inline:0}
.zz-portada-logo img{inline-size:100%;block-size:auto;display:block}

/* =========================================================================
   EL SELECTOR DE IDIOMA DE LA CABECERA

   ZARZA son ocho sitios, uno por idioma, y saltar entre ellos es una accion de
   primer nivel: estaba solo en el pie, donde no la ve nadie.

   Es un <details> nativo: se abre, se cierra y se recorre con el teclado sin
   una linea de JavaScript. En una cabecera que ya lleva buscador y menu movil,
   una pieza menos que dependa de un script es una pieza menos que se rompe.
   ========================================================================= */
.zz-idiomas{position:relative}
.zz-idiomas > summary{
  display:flex;align-items:center;gap:6px;cursor:pointer;list-style:none;
  padding:7px 10px;border-radius:var(--zz-radio-chico);
  border:1px solid var(--zz-borde-sobre-rojo);color:var(--zz-sobre-rojo-2);
  font-family:var(--zz-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
}
.zz-idiomas > summary::-webkit-details-marker{display:none}
.zz-idiomas > summary:hover{background:rgba(255,240,230,.10);color:var(--zz-sobre-rojo)}
.zz-idiomas > summary:focus-visible{outline:2px solid var(--zz-crema);outline-offset:2px}
.zz-idiomas-globo{inline-size:15px;block-size:15px;fill:none;stroke:currentColor;stroke-width:1.6}

.zz-idiomas-lista{
  position:absolute;z-index:40;top:calc(100% + 8px);
  /* 🔴 Anclado por el canto FINAL: el selector va a la derecha del todo en LTR,
     asi que una lista anclada al principio se saldria de la pantalla. En arabe
     el canto final es el izquierdo y se resuelve solo. */
  inset-inline-end:0;
  min-inline-size:186px;margin:0;padding:6px;list-style:none;
  background:var(--zz-crema);border:1px solid var(--zz-linea);
  border-radius:var(--zz-radio);box-shadow:0 10px 26px rgba(36,26,21,.28);
}
.zz-idiomas-lista a{
  display:flex;align-items:baseline;gap:9px;padding:7px 9px;
  border-radius:var(--zz-radio-chico);color:var(--zz-tinta-2);text-decoration:none;
}
.zz-idiomas-lista a:hover{background:var(--zz-crema-2);color:var(--zz-rojo)}
.zz-idiomas-lista a[aria-current]{background:var(--zz-rojo);color:var(--zz-sobre-rojo)}
.zz-idiomas-cod{
  font-family:var(--zz-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  min-inline-size:20px;opacity:.75;
}
.zz-idiomas-nombre{font-size:13px}

@media (max-width:600px){
  .zz-idiomas-nombre{font-size:12px}
  .zz-idiomas > summary{padding:6px 8px}
}
