/* ===== Portada nacional: el mapa de España y la entrada a cada territorio =====
   Se carga DESPUÉS de styles.css (el del motor) y solo añade lo suyo: la
   cabecera, la búsqueda, los colores y tipografías son los mismos. */

.hero--portal .hero__inner{padding-bottom:44px}
/* El titular corto, grande; el nombre completo y lo que hay, debajo */
.hero--portal .hero__title{font-size:clamp(2.9rem,7.4vw,5.4rem);line-height:.98;letter-spacing:-.035em;max-width:none}
.hero--portal .hero__title span{color:var(--primary-d)}
.hero__lema{margin:18px 0 0;max-width:40ch;font-size:clamp(17px,1.75vw,21px);line-height:1.45;font-weight:500;color:var(--ink)}
.hero__lema b{font-weight:700}
.hero--portal .hero__sub{margin-top:10px}
.portal-busca{position:relative;max-width:620px}

/* Resultados de la búsqueda de municipio */
.portal-res{list-style:none;margin:8px 0 0;padding:6px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);position:absolute;left:0;right:0;z-index:5}
.portal-res a{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:10px 12px;
  border-radius:8px;text-decoration:none;color:var(--ink);font-weight:600}
.portal-res a small{font-weight:400;color:var(--muted);font-size:13px;text-align:right}
.portal-res a:hover,.portal-res a:focus-visible,.portal-res a.is-primero{background:var(--primary-tint)}
.portal-res__vacio{padding:10px 12px;color:var(--muted);font-size:14.5px}

.portal{padding-top:34px;padding-bottom:64px}
.portal section + section{margin-top:64px}

/* Las tres cifras de lo que hay en el mapa. Rectángulos con esquinas suaves,
   como el resto: nada de cápsulas. En el móvil, una debajo de otra. */
.portal-cifras{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 0 8px}
.cifra{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:22px 24px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow)}
.cifra__n{font-family:var(--display);font-weight:700;letter-spacing:-.03em;line-height:1;
  font-size:clamp(2rem,4.2vw,3rem);color:var(--primary-d);font-variant-numeric:tabular-nums}
.cifra__q{color:var(--muted);font-size:15px;line-height:1.35}
@media(max-width:860px){.portal-cifras{grid-template-columns:1fr;gap:10px}
  .cifra{flex-direction:row;align-items:baseline;gap:12px;padding:16px 18px}
  .cifra__n{font-size:2rem}}
.portal-cab{margin-bottom:22px;max-width:70ch}
.portal-cab h2{font-size:clamp(1.5rem,2.4vw,2rem)}
.portal-cab p{margin:8px 0 0;color:var(--muted)}
/* Cuando la cabecera lleva el índice A-Z, el texto sigue midiendo lo mismo pero
   las letras pueden usar todo el ancho (así caben en una fila en escritorio). */
.portal-cab--ancho{max-width:none}
.portal-cab--ancho > p{max-width:70ch}
.cab-letras{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0 0}
.cab-cuenta{margin:8px 0 0;font-size:13.5px;color:var(--muted)}
.cab-cuenta:empty{display:none}

/* ---------- El mapa ---------- */
.portal-mapa__cuerpo{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(290px,1fr);gap:32px;align-items:start}
.portal-mapa__fig{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:18px 18px 14px;box-shadow:var(--shadow)}
/* styles.css pinta todos los svg como iconos de línea: el mapa se deshace de eso */
.mapa-es{display:block;width:100%;height:auto;stroke-linecap:round;stroke-linejoin:round}
.mapa-es .prov{fill:#e4e8ec;stroke:#fff;stroke-width:.9}
.mapa-es .zona{cursor:pointer;outline:none}
.mapa-es .zona path{fill:#bfe0da;stroke:#fff;stroke-width:.9;transition:fill .15s}
.mapa-es .zona:hover path,.mapa-es .zona:focus-visible path{fill:#7fc0b5}
.mapa-es .zona:focus-visible path{stroke:var(--ink);stroke-width:1.6}
.mapa-es .zona.is-sel path{fill:var(--primary)}
.mapa-es .punto{fill:var(--primary-d);stroke:#fff;stroke-width:2}
.mapa-es .zona.is-sel .punto{fill:#fff;stroke:var(--primary-d)}
.mapa-es .recuadro{fill:none;stroke:var(--line);stroke-width:1.2}
.mapa-es .rotulo{fill:var(--faint);stroke:none;font:600 13px var(--sans);letter-spacing:.02em}

.portal-leyenda{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:10px;font-size:13px;color:var(--muted)}
.portal-leyenda span{display:inline-flex;align-items:center;gap:7px}
.ley{display:inline-block;width:14px;height:14px;border-radius:4px}
.ley--si{background:#bfe0da}
.ley--no{background:#e4e8ec}

/* ---------- El panel de la zona elegida ----------
   El panel no puede pasar de lo que mide el mapa que tiene al lado: si no, la
   sección cojea de un lado. portal.js mide la figura del mapa y escribe su
   altura en --panel-alto; si no hay JavaScript, el panel se queda en lo que
   cabe en pantalla, como antes. Dentro, tres piezas: la cabecera (título y,
   cuando las hay, las letras) se queda quieta y solo se desplaza la lista. */
.portal-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px 22px 18px;
  box-shadow:var(--shadow);max-height:var(--panel-alto,calc(100vh - 36px));
  display:flex;flex-direction:column;overflow:hidden}
.panel__cabeza{flex:none}
/* La lista, lo único que se desplaza. El sombreado de arriba y de abajo solo se
   ve cuando queda lista fuera (las capas «local» tapan las «scroll» al llegar
   al borde), así que se nota que hay más sin poner ningún adorno fijo. */
.panel__scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  margin:0 -6px;padding:0 6px;scrollbar-width:thin;scrollbar-color:var(--line) transparent;
  background:
    linear-gradient(var(--surface) 38%,rgba(255,255,255,0)) top/100% 22px no-repeat local,
    linear-gradient(rgba(255,255,255,0),var(--surface) 62%) bottom/100% 22px no-repeat local,
    linear-gradient(rgba(20,32,46,.10),rgba(20,32,46,0)) top/100% 9px no-repeat scroll,
    linear-gradient(rgba(20,32,46,0),rgba(20,32,46,.10)) bottom/100% 9px no-repeat scroll}
.panel__scroll::-webkit-scrollbar{width:8px}
.panel__scroll::-webkit-scrollbar-track{background:transparent}
.panel__scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}
.panel__scroll::-webkit-scrollbar-thumb:hover{background:var(--faint)}
.panel__scroll:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}
.panel__scroll > .panel__grupo:first-child,.panel__scroll > .panel__lista{margin-top:12px}
.panel__sup{margin:0 0 4px;font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--primary-d)}
.portal-panel h3{font-family:var(--display);font-size:1.45rem;font-weight:700;letter-spacing:-.01em}
.panel__nota{margin:8px 0 0;color:var(--muted);font-size:14.5px}
.panel__grupo{margin:18px 0 0}
.panel__grupo h4{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--muted)}
.panel__zonas{display:flex;flex-wrap:wrap;gap:8px}
.zona-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-weight:600;font-size:14px;
  padding:8px 13px;border-radius:var(--radius-sm);cursor:pointer}
.zona-btn:hover{border-color:var(--primary);color:var(--primary-d)}
/* Filtro por letra: botones rectangulares, en varias filas si no caben. Va en
   la cabecera del panel, que no se mueve mientras se recorre la lista. */
.panel__letras{display:flex;flex-wrap:wrap;gap:5px;margin:14px -4px 0;padding:8px 4px 10px;
  border-bottom:1px solid var(--line-2)}
.letra-btn{min-width:32px;height:32px;padding:0 6px;border:1px solid var(--line);background:var(--surface);color:var(--ink);
  font:inherit;font-size:13.5px;font-weight:600;line-height:1;border-radius:7px;cursor:pointer}
.letra-btn--todas{padding:0 11px}
.letra-btn:hover{border-color:var(--primary);color:var(--primary-d)}
.letra-btn:focus-visible{outline:2px solid var(--primary);outline-offset:1px}
.letra-btn[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:#fff}
.panel__cuenta{margin:8px 0 0;font-size:13.5px;color:var(--muted)}
.panel__cuenta:empty{display:none}
.panel__lista{list-style:none;margin:16px 0 0;padding:0;columns:2 160px;column-gap:10px}
.panel__lista li{break-inside:avoid}
.panel__lista a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:9px;
  text-decoration:none;color:var(--ink);font-weight:500;font-size:15px}
.panel__lista a:hover,.panel__lista a:focus-visible{background:var(--primary-tint);color:var(--primary-d)}
.panel__lista svg{width:15px;height:15px;flex:none;color:var(--faint)}
.panel__pie{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2)}
.panel__pie .btn-ghost{text-decoration:none}

/* ---------- Tarjetas de los territorios ---------- */
.portal-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:22px}
.tcard{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  overflow:hidden;box-shadow:var(--shadow)}
/* Sin esto, el display:flex de arriba gana al [hidden] del navegador y la
   tarjeta filtrada seguiría viéndose. */
.tcard[hidden]{display:none}
/* La foto se recorta a 16:9 aunque venga en vertical: sin el absolute, una foto
   alta estira la caja y descuadra la fila de tarjetas. */
.tcard__foto{display:block;position:relative;aspect-ratio:16/9;overflow:hidden;background:#e4e8ec}
.tcard__foto img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}
.tcard__cuerpo{padding:16px 20px 18px;display:flex;flex-direction:column;gap:6px;flex:1}
.tcard h3{font-family:var(--display);font-size:1.3rem;font-weight:700}
.tcard h3 a{text-decoration:none}
.tcard h3 a:hover{color:var(--primary-d)}
.tcard__meta{margin:0;color:var(--muted);font-size:14.5px}
.tcard__cifra{margin:4px 0 0;font-size:14.5px}
.tcard__cifra b{color:var(--primary-d)}
.tcard__credito{margin:auto 0 0;padding-top:10px;font-size:11.5px;color:var(--faint)}
.tcard__credito a{color:inherit}

.portal-nota{max-width:72ch}
.portal-nota h2{font-size:clamp(1.3rem,2vw,1.6rem)}
.portal-nota p{color:var(--muted);margin:10px 0 0}

/* En pantalla estrecha el panel va DEBAJO del mapa: ahí no se recorta a nada
   (lista entera, sin barra de desplazamiento propia) aunque portal.js haya
   medido el mapa. */
@media (max-width:860px){
  .portal-mapa__cuerpo{grid-template-columns:1fr}
  .portal-panel{max-height:none;display:block;overflow:visible}
  .panel__scroll{overflow:visible;background:none;margin:0;padding:0}
  .portal-mapa__fig{padding:10px}
}
