/* Tema ASODORE — componentes propios.
   Los colores, tipografías y espacios salen de theme.json; aquí solo lo que
   los bloques nativos no cubren. */

.aso-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ── Biblioteca de documentos ─────────────────────────────── */
.aso-filtros{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:1.6rem}
.aso-busca{flex:1 1 280px;min-width:0}
.aso-busca input{width:100%;padding:.62rem .9rem;border:1px solid var(--wp--preset--color--linea-fuerte);
  border-radius:8px;font:inherit;font-size:.92rem;background:var(--wp--preset--color--papel)}
.aso-busca input:focus-visible{outline:2px solid var(--wp--preset--color--azul-medio);outline-offset:1px}
.aso-chip{padding:.5rem 1rem;border:1px solid var(--wp--preset--color--linea-fuerte);border-radius:999px;
  background:var(--wp--preset--color--papel);font:inherit;font-size:.84rem;font-weight:600;
  color:var(--wp--preset--color--tinta-2);cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.aso-chip:hover{border-color:var(--wp--preset--color--azul-medio);color:var(--wp--preset--color--azul)}
.aso-chip[aria-pressed="true"]{background:var(--wp--preset--color--azul);border-color:var(--wp--preset--color--azul);
  color:var(--wp--preset--color--papel)}

.aso-docs{list-style:none;margin:0;padding:0;border:1px solid var(--wp--preset--color--linea);
  border-radius:10px;overflow:hidden;background:var(--wp--preset--color--papel)}
.aso-docs li{display:flex;gap:1rem;align-items:flex-start;padding:1.05rem 1.2rem;
  border-top:1px solid var(--wp--preset--color--linea)}
.aso-docs li:first-child{border-top:0}
.aso-pdf{flex:none;display:grid;place-items:center;width:38px;height:44px;border-radius:5px;
  background:#FDECEC;color:var(--wp--preset--color--rojo);font-size:.62rem;font-weight:800;letter-spacing:.04em}
.aso-doc-i{flex:1 1 auto;min-width:0}
.aso-doc-i h4{margin:0 0 .35rem;font-size:1rem;line-height:1.35;color:var(--wp--preset--color--azul)}
.aso-meta{display:flex;flex-wrap:wrap;gap:.3rem .9rem;font-size:.79rem;color:var(--wp--preset--color--tinta-3)}
.aso-est{font-size:.7rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  padding:.15rem .5rem;border-radius:4px;background:#E4F4EA;color:var(--wp--preset--color--verde-osc)}
.aso-doc-a{flex:none;align-self:center}
.aso-doc-a a{font-size:.84rem;font-weight:700;text-decoration:none;white-space:nowrap}
.aso-vacio{padding:2rem;text-align:center;color:var(--wp--preset--color--tinta-3);
  border:1px dashed var(--wp--preset--color--linea-fuerte);border-radius:10px}

@media (max-width:620px){
  .aso-docs li{flex-wrap:wrap}
  .aso-doc-a{flex:1 1 100%;align-self:auto;padding-left:calc(38px + 1rem)}
}

/* ── Ficha de convocatorias ───────────────────────────────── */
.aso-ficha{background:var(--wp--preset--color--papel);border:1px solid var(--wp--preset--color--linea);
  border-radius:10px;padding:1.5rem;box-shadow:var(--wp--preset--shadow--alta)}
.aso-et{display:inline-block;background:var(--wp--preset--color--verde);color:#fff;font-size:.68rem;
  font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.22rem .55rem;border-radius:4px;
  margin-bottom:.8rem}
.aso-conv-cuerpo{display:grid;transition:opacity .28s ease}
.aso-conv-cuerpo.aso-mudando{opacity:0}
/* las dos fichas ocupan la misma celda: el alto lo fija la más alta y no salta al rotar */
.aso-conv{grid-area:1/1;min-width:0}
.aso-conv[aria-hidden="true"]{visibility:hidden;pointer-events:none}
.aso-aviso{margin:.9rem 0 0;font-size:.82rem;font-weight:700;
  color:var(--wp--preset--color--rojo)}
.aso-conv h3{margin:0 0 .6rem;font-size:1.12rem;line-height:1.3}
.aso-datos{width:100%;border-collapse:collapse;font-size:.88rem}
.aso-datos th{width:32%;text-align:left;vertical-align:top;font-weight:600;
  color:var(--wp--preset--color--tinta-3);padding:.45rem .6rem .45rem 0;
  border-bottom:1px solid var(--wp--preset--color--linea)}
.aso-datos td{padding:.45rem 0;color:var(--wp--preset--color--tinta);
  border-bottom:1px solid var(--wp--preset--color--linea)}
.aso-datos tr:last-child th,.aso-datos tr:last-child td{border-bottom:0}
.aso-btn{display:flex;justify-content:center;margin-top:.9rem;padding:.72rem 1.35rem;border-radius:8px;
  background:var(--wp--preset--color--azul);color:#fff;font-weight:700;font-size:.92rem;text-decoration:none}
.aso-btn:hover{background:var(--wp--preset--color--azul-osc);color:#fff;text-decoration:none}
.aso-puntos{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}
.aso-puntos button{width:9px;height:9px;padding:0;border:0;border-radius:50%;
  background:var(--wp--preset--color--linea-fuerte);cursor:pointer;transition:background .2s,transform .2s}
.aso-puntos button[aria-selected="true"]{background:var(--wp--preset--color--azul);transform:scale(1.25)}
.aso-puntos button:focus-visible{outline:2px solid var(--wp--preset--color--azul-medio);outline-offset:3px}

/* ── Cabecera y pie ───────────────────────────────────────── */
.aso-tricolor{height:4px;display:grid;grid-template-columns:1fr 1fr 1fr}
.aso-tricolor i{display:block}
.aso-tricolor i:nth-child(1){background:var(--wp--preset--color--azul)}
.aso-tricolor i:nth-child(2){background:var(--wp--preset--color--papel)}
.aso-tricolor i:nth-child(3){background:var(--wp--preset--color--rojo)}
.aso-marca-pie{display:inline-block;background:#fff;border-radius:12px;padding:1rem 1.25rem;line-height:0}
.aso-marca-pie img{max-width:215px;height:auto}

@media (prefers-reduced-motion:reduce){
  .aso-conv-cuerpo{transition:none}
}

/* ── Ficha de detalle ─────────────────────────────────────── */
.aso-ficha-doc{border:1px solid var(--wp--preset--color--linea);border-radius:10px;
  padding:1.3rem 1.5rem;background:var(--wp--preset--color--papel-2);margin:1.2rem 0}
.aso-ficha-doc .aso-btn{margin-top:1.1rem}

/* ── Listas y tablas de contenido ─────────────────────────── */
.aso-regiones{list-style:none;margin:1rem 0;padding:0;display:grid;gap:1px;
  grid-template-columns:repeat(5,1fr);background:var(--wp--preset--color--linea);
  border:1px solid var(--wp--preset--color--linea);border-radius:10px;overflow:hidden}
.aso-regiones li{background:var(--wp--preset--color--papel);padding:1rem .9rem;
  font-weight:700;font-size:.92rem;color:var(--wp--preset--color--azul)}
@media (max-width:900px){.aso-regiones{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.aso-regiones{grid-template-columns:repeat(2,1fr)}}

.aso-tabla-datos table{border-collapse:collapse;width:100%}
.aso-tabla-datos th{width:30%;text-align:left;vertical-align:top;font-weight:600;
  color:var(--wp--preset--color--tinta-3);padding:.6rem .8rem .6rem 0;
  border-bottom:1px solid var(--wp--preset--color--linea);font-size:.88rem}
.aso-tabla-datos td{padding:.6rem 0;border-bottom:1px solid var(--wp--preset--color--linea);font-size:.92rem}
.aso-tabla-datos tr:last-child th,.aso-tabla-datos tr:last-child td{border-bottom:0}

/* ── Logo de la cabecera ──────────────────────────────────────
   El PNG se sirve a 620 px para que se vea nítido en pantallas
   de alta densidad; aquí se limita el tamaño con el que se pinta. */
.wp-block-site-logo img{max-width:255px;width:100%;height:auto}
@media (max-width:600px){ .wp-block-site-logo img{max-width:200px} }

/* ── Correcciones de contraste sobre fondos oscuros ───────────
   Los enlaces heredaban el azul institucional del ajuste global, que sobre
   el azul oscuro daba un contraste de 1,34 (el mínimo accesible es 4,5).
   Sobre fondo oscuro el enlace toma el color del texto que lo rodea. */
.aso-cabecera .has-azul-osc-background-color a,
footer.wp-block-group a{color:currentColor;text-decoration:none}
.aso-cabecera .has-azul-osc-background-color a:hover,
footer.wp-block-group a:hover{color:#fff;text-decoration:underline}

/* ── Tablas de datos sin rejilla ──────────────────────────────
   El bloque de tabla de WordPress dibuja borde en las cuatro caras con la
   misma especificidad que la regla de abajo, así que hay que superarla. */
.wp-block-table.aso-tabla-datos table{border-collapse:collapse}
.wp-block-table.aso-tabla-datos th,
.wp-block-table.aso-tabla-datos td{border:0;border-bottom:1px solid var(--wp--preset--color--linea)}
.wp-block-table.aso-tabla-datos tr:last-child th,
.wp-block-table.aso-tabla-datos tr:last-child td{border-bottom:0}

/* ── Altura de la cabecera ────────────────────────────────────
   El grupo de la cabecera es un contenedor de flujo: WordPress separa a sus
   hijos con el espacio global entre bloques. Aquí los tres van pegados. */
.aso-cabecera > *{margin-block:0}

/* ── Menú principal ───────────────────────────────────────────
   Valores tomados del sitio en vivo para que el comportamiento sea el mismo:
   cada opción es un área pulsable con fondo al pasar el ratón, y la sección
   actual queda marcada en azul claro. */
.aso-cabecera .wp-block-navigation{margin-left:auto}
.aso-cabecera .wp-block-navigation .wp-block-navigation__container{gap:.2rem}
.aso-cabecera .wp-block-navigation .wp-block-navigation-item__content{
  display:block;padding:.6rem .85rem;border-radius:7px;
  color:var(--wp--preset--color--tinta-2);text-decoration:none;
  font-weight:600;font-size:.9rem;white-space:nowrap;
  transition:background .15s,color .15s}
.aso-cabecera .wp-block-navigation .wp-block-navigation-item__content:hover,
.aso-cabecera .wp-block-navigation .wp-block-navigation-item__content:focus-visible{
  background:var(--wp--preset--color--papel-3);color:var(--wp--preset--color--azul);
  text-decoration:none}
.aso-cabecera .wp-block-navigation .current-menu-item > .wp-block-navigation-item__content,
.aso-cabecera .wp-block-navigation .current_page_item > .wp-block-navigation-item__content{
  color:var(--wp--preset--color--azul);background:var(--wp--preset--color--azul-claro)}

/* submenú desplegable */
.aso-cabecera .wp-block-navigation .wp-block-navigation-submenu__toggle{
  display:flex;align-items:center;gap:.2em}
.aso-cabecera .wp-block-navigation .wp-block-navigation__submenu-container{
  min-width:224px;background:var(--wp--preset--color--papel);
  border:1px solid var(--wp--preset--color--linea);border-radius:9px;
  box-shadow:var(--wp--preset--shadow--tarjeta);padding:.4rem;gap:0}
.aso-cabecera .wp-block-navigation .wp-block-navigation__submenu-container
  .wp-block-navigation-item__content{
  padding:.5rem .7rem;font-size:.86rem;border-radius:6px}
.aso-cabecera .wp-block-navigation .wp-block-navigation__submenu-icon{opacity:.65}

/* en móvil el menú se despliega a pantalla completa: sin fondo de tarjeta */
@media (max-width:600px){
  .aso-cabecera .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__submenu-container{border:0;box-shadow:none;padding-left:1rem}
}

/* ── Organigrama ──────────────────────────────────────────────
   Es ancho por naturaleza: en pantallas estrechas se desplaza en
   horizontal dentro de su caja en vez de encogerse hasta ser ilegible. */
.aso-organigrama{margin:1.6rem 0 0}
.aso-organigrama .aso-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.4rem}
.aso-organigrama img{display:block;width:100%;min-width:830px;height:auto}
.aso-organigrama figcaption{margin-top:.9rem;font-size:.82rem;
  color:var(--wp--preset--color--tinta-3);max-width:70ch}
.aso-pista{display:none;font-size:.78rem;color:var(--wp--preset--color--tinta-3);margin:0 0 .5rem}
@media (max-width:900px){ .aso-pista{display:block} }

/* ── Lista de fines ───────────────────────────────────────────── */
.aso-fines{counter-reset:fin;list-style:none;margin:1rem 0;padding:0}
.aso-fines li{counter-increment:fin;position:relative;padding:.55rem 0 .55rem 2.6rem;
  border-bottom:1px solid var(--wp--preset--color--linea);
  font-size:.95rem;color:var(--wp--preset--color--tinta-2)}
.aso-fines li::before{content:counter(fin,decimal-leading-zero);position:absolute;left:0;top:.55rem;
  font-weight:800;color:var(--wp--preset--color--verde);font-size:.85rem;
  font-variant-numeric:tabular-nums}

/* ── direcciones regionales ─────────────────────────────────── */
.aso-regiones{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;gap:1px;
  grid-template-columns:repeat(5,1fr);background:var(--wp--preset--color--linea);
  border:1px solid var(--wp--preset--color--linea);border-radius:10px;overflow:hidden}
.aso-regiones li{background:var(--wp--preset--color--papel);padding:1rem .9rem;margin:0;
  font-weight:700;font-size:.92rem;color:var(--wp--preset--color--azul)}
@media (max-width:900px){.aso-regiones{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.aso-regiones{grid-template-columns:repeat(2,1fr)}}

/* ── páginas: un solo borde izquierdo ───────────────────────────
   El contenido de las páginas mide 1180 para que las rejillas, el
   organigrama y las columnas quepan. El texto corrido limita su medida de
   lectura con max-width, pero se queda pegado al mismo borde izquierdo en
   lugar de centrarse, que es lo que descuadraba la alineación. */
/* El centrado de la capa de bloques viene con !important, así que hay que
   ganarle con la misma arma; si no, el texto se centra y rompe la alineación. */
/* Solo en la plantilla de página normal, donde el contenedor ya mide 1180.
   En la plantilla ancha el contenedor va a sangre y alinear a la izquierda
   sacaría el texto fuera de la columna. */
.page-template-default .entry-content > p,
.page-template-default .entry-content > ul:not([class*="aso-"]),
.page-template-default .entry-content > ol:not([class*="aso-"]){max-width:70ch}
.page-template-default .entry-content .wp-block-table{max-width:820px}
.page-template-default .entry-content > p,
.page-template-default .entry-content > ul:not([class*="aso-"]),
.page-template-default .entry-content > ol:not([class*="aso-"]),
.page-template-default .entry-content > .wp-block-buttons,
.page-template-default .entry-content .wp-block-table{margin-left:0!important;margin-right:auto!important}

/* ── tarjeta de convocatoria en el listado ──────────────────────
   Se basta sola: rótulo, titular, tabla y PDF, todo dentro del recuadro. */
.aso-conv-tarj{border-top:4px solid var(--wp--preset--color--azul);display:flex;flex-direction:column}
.aso-conv-tarj .aso-et{background:var(--wp--preset--color--azul);color:#fff;margin-bottom:.7rem}
.aso-conv-h{margin:0 0 .9rem;font-size:1.12rem;line-height:1.3;color:var(--wp--preset--color--azul)}
.aso-conv-h a{color:inherit;text-decoration:none}
.aso-conv-h a:hover{text-decoration:underline}
.aso-conv-tarj .aso-datos{margin-top:0}
.aso-conv-tarj .aso-btn{margin-top:auto}
.aso-firma{color:var(--wp--preset--color--tinta-3);font-size:.86em}

/* Las dos tarjetas del listado, a la misma altura y con los botones alineados.
   El li se limita a las convocatorias: en el listado de noticias el li apila
   foto, titular y fecha, y volverlo flexible los pondría en fila. */
.wp-block-post-template > li.type-asodore_convocatoria{display:flex}
.wp-block-post > .aso-conv-tarj{flex:1;box-sizing:border-box}

/* ── padrón de delegados ────────────────────────────────────── */
.aso-padron .aso-sel{padding:.55rem .8rem;border:1px solid var(--wp--preset--color--linea-fuerte);
  border-radius:8px;font:inherit;font-size:.86rem;font-weight:600;
  color:var(--wp--preset--color--tinta-2);background:var(--wp--preset--color--papel);max-width:230px}
.aso-padron .aso-sel:focus{outline:2px solid var(--wp--preset--color--azul);outline-offset:-1px}
.aso-conteo{font-size:.84rem;color:var(--wp--preset--color--tinta-3);margin:.9rem 0}
.aso-tabla-envoltura{overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:1px solid var(--wp--preset--color--linea);border-radius:10px}
.aso-padron-t{width:100%;border-collapse:collapse;font-size:.88rem;background:var(--wp--preset--color--papel)}
.aso-padron-t thead th{position:sticky;top:0;z-index:1;text-align:left;font-size:.74rem;
  text-transform:uppercase;letter-spacing:.05em;font-weight:800;
  color:var(--wp--preset--color--azul);background:var(--wp--preset--color--papel-2);
  padding:.7rem .9rem;border-bottom:1px solid var(--wp--preset--color--linea)}
.aso-padron-t tbody th,.aso-padron-t td{padding:.6rem .9rem;text-align:left;font-weight:400;
  border-bottom:1px solid var(--wp--preset--color--linea);color:var(--wp--preset--color--tinta-2);
  vertical-align:top}
.aso-padron-t tbody th{font-weight:600;color:var(--wp--preset--color--tinta)}
.aso-padron-t tbody tr:last-child th,.aso-padron-t tbody tr:last-child td{border-bottom:0}
.aso-padron-t tbody tr:hover th,.aso-padron-t tbody tr:hover td{background:var(--wp--preset--color--papel-2)}
.aso-col-n{width:3.5rem;color:var(--wp--preset--color--tinta-3);font-variant-numeric:tabular-nums}
.aso-fuente{font-size:.8rem;color:var(--wp--preset--color--tinta-3);margin:1rem 0 0;max-width:72ch}
.aso-padron .aso-btn{display:inline-flex;width:auto;margin-top:1rem}

/* en pantalla estrecha la tabla se rompe en fichas: cinco columnas no caben */
@media (max-width:760px){
  .aso-tabla-envoltura{border:0;overflow:visible}
  .aso-padron-t thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .aso-padron-t tbody tr{display:block;border:1px solid var(--wp--preset--color--linea);
    border-radius:10px;margin-bottom:.7rem;padding:.3rem .2rem;background:var(--wp--preset--color--papel)}
  .aso-padron-t tbody th,.aso-padron-t td{display:flex;gap:.8rem;border-bottom:0;padding:.35rem .9rem}
  .aso-padron-t tbody th::before,.aso-padron-t td::before{content:attr(data-r);flex:0 0 5.6rem;
    font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;font-weight:800;
    color:var(--wp--preset--color--tinta-3);padding-top:.15rem}
}

/* El atributo hidden lo pisa cualquier regla propia de display, y entonces el
   buscador «no hace nada»: marca las filas pero se siguen viendo. Hay que
   devolverle la última palabra. */
[hidden]{display:none!important}

/* ── Rótulo de estado de un plazo ──────────────────────────
   Rojo mientras corre, gris cuando venció. El punto a la izquierda da el
   estado sin depender del color, que no todo el mundo distingue. */
.aso-plazo{display:inline-flex;align-items:center;gap:.45em;margin:0 0 .7rem;
  font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.aso-plazo::before{content:"";flex:none;width:.5em;height:.5em;border-radius:50%;
  background:currentColor}
.aso-plazo--abierto{color:var(--wp--preset--color--rojo)}
.aso-plazo--cerrado{color:var(--wp--preset--color--tinta-3)}
.aso-plazo--cerrado::before{background:none;box-shadow:inset 0 0 0 1.5px currentColor}
.aso-plazo--proximo{color:var(--wp--preset--color--azul-medio)}
