
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#F7FBF4;--sup:#FFFFFF;--ink:#15210F;--muted:#5F6E56;
  --brand:#0B7A1F;--brand2:#FFC800;--acento:#1573C4;--oscuro:#0A2A0A;
  --r:16px;--r-sm:calc(16px*.6);--borde:rgba(12,40,30,.11);
  --s1:0 1px 2px rgba(10,35,25,.06),0 2px 8px rgba(10,35,25,.05);
  --s2:0 6px 18px rgba(10,35,25,.08),0 14px 36px rgba(10,35,25,.07);
  --s3:0 16px 44px rgba(10,35,25,.11),0 34px 70px rgba(10,35,25,.09);
  --fd:'Fraunces',Georgia,serif;
  --fb:'Karla',system-ui,-apple-system,sans-serif;
  /* colores literales del logo, para acentos y degradados */
  --vivo:#22C321;--sol:#FFC800;--cielo:#2196F3;--menta:#EAFBE7;--tinta-logo:#0A2A0A;
  --ancho:1280px;--ease:cubic-bezier(.22,1,.36,1);--esc:1;
}
/* El recorte horizontal va en <html>, NUNCA en <body>: al ponerlo en body
   este se convierte en su propio contenedor de desplazamiento y el
   IntersectionObserver que revela las secciones deja de dispararse, con lo
   que todo el contenido de abajo se queda invisible. */
html{scroll-behavior:smooth;scroll-padding-top:150px;-webkit-text-size-adjust:100%;
  overflow-x:clip;max-width:100%}
body{font-family:var(--fb);background:var(--bg);color:var(--ink);line-height:1.7;
  font-size:calc(1rem*var(--esc));-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--fd);line-height:1.1;letter-spacing:-.022em;font-weight:700;text-wrap:balance}
img,svg{display:block;max-width:100%} a{color:inherit;text-decoration:none} ul,ol{list-style:none}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--cielo);outline-offset:2px;border-radius:4px}
::selection{background:var(--menta);color:var(--oscuro)}
/* cinta con los cuatro colores del logo bajo la cabecera */
.cinta-logo{height:4px;display:flex}
.cinta-logo i{flex:1}
.cinta-logo i:nth-child(1){background:var(--brand)}
.cinta-logo i:nth-child(2){background:var(--vivo)}
.cinta-logo i:nth-child(3){background:var(--sol)}
.cinta-logo i:nth-child(4){background:var(--cielo)}
.env{max-width:var(--ancho);margin-inline:auto;padding-inline:clamp(1.1rem,4vw,2.4rem)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.saltar{position:fixed;left:12px;top:-100px;z-index:9999;background:var(--ink);color:#fff;
  padding:12px 20px;border-radius:0 0 10px 10px;font-weight:700;transition:top .3s}
.saltar:focus{top:0}

/* ---- alto contraste (botón de la barra de accesibilidad) ---- */
body.contraste{--bg:#FFFFFF;--sup:#FFFFFF;--ink:#000000;--muted:#1a1a1a;
  --brand:#00532F;--acento:#00406B;--borde:#000}
body.contraste .tarj,body.contraste .caja{border-width:2px}

/* ================= BARRA DE UTILIDADES ================= */
.utilidad{background:var(--oscuro);color:#fff;font-size:var(--t-xs)}
.utilidad .env{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding-block:.42rem}
.util-izq,.util-der{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
.util-der{margin-left:auto}
.utilidad a,.utilidad button{color:rgba(255,255,255,.85);background:none;border:0;cursor:pointer;
  display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .1rem;transition:color .25s}
.utilidad a:hover,.utilidad button:hover{color:var(--brand2)}
.txt-tam{display:inline-flex;align-items:center;gap:.15rem;border-left:1px solid rgba(255,255,255,.25);
  padding-left:.9rem}
.txt-tam button{width:26px;height:26px;justify-content:center;border-radius:4px;font-weight:700}
.txt-tam button.on{background:var(--brand);color:#fff}
.txt-tam .t1{font-size:var(--t-xs)} .txt-tam .t2{font-size:var(--t-sm)} .txt-tam .t3{font-size:var(--t-base)}
.idioma{display:flex;gap:.3rem;border-left:1px solid rgba(255,255,255,.25);padding-left:.9rem}
.idioma a.on{color:var(--brand2);font-weight:700}

/* ================= CABECERA ================= */
.cab{position:sticky;top:0;z-index:500;background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%);
  border-bottom:1px solid var(--borde);transition:box-shadow .3s}
.cab.pegado{box-shadow:var(--s2)}
.cab-in{display:flex;align-items:center;gap:1.4rem;padding-block:.7rem}
.logo{flex:none;transition:transform .35s var(--ease)} .logo:hover{transform:scale(1.02)}
.nav{display:flex;align-items:center;gap:.15rem;margin-left:auto}
.nav>li>a,.nav>li>button{display:inline-flex;align-items:center;gap:.35rem;padding:.7rem .85rem;
  font-weight:600;font-size:var(--t-base);border-radius:var(--r-sm);background:none;border:0;cursor:pointer;
  transition:background .25s,color .25s}
.nav>li>a,.nav>li>button{white-space:nowrap}
.nav>li>a:hover,.nav>li>button:hover,.nav>li.activo>a{background:#0B7A1F14;color:var(--brand)}
.nav .flechita{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg) translateY(-2px);transition:transform .3s}
.nav li.abierto .flechita{transform:rotate(-135deg) translateY(-2px)}
.tiene-mega{position:relative}
.mega{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(-8px);
  min-width:290px;background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  box-shadow:var(--s3);padding:.65rem;margin-top:.5rem;opacity:0;visibility:hidden;
  transition:.3s var(--ease);z-index:600}
/* el hueco entre el botón y el panel se puentea con un ::before invisible:
   sin él, al bajar el mouse hacia el submenú se sale un instante del
   :hover del <li> y el menú se cierra antes de poder pulsar nada. */
.tiene-mega::before{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);
  width:min(290px,100vw);height:.5rem}
.tiene-mega:hover .mega,.tiene-mega.abierto .mega{opacity:1;visibility:visible;transform:translateX(-50%)}
.mega a{display:flex;align-items:center;gap:.6rem;padding:.62rem .8rem;border-radius:var(--r-sm);
  font-size:var(--t-sm);transition:background .25s}
.mega a:hover{background:#0B7A1F12;color:var(--brand)}
/* los submenús de las últimas entradas se alinean a la derecha para no
   empujar la página a lo ancho */
.nav>li:nth-last-child(-n+2)>.mega{left:auto;right:0}
.mega a::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--brand);flex:none}
.acciones{display:flex;align-items:center;gap:.55rem;flex:none}
.acciones .btn.solo-ic{padding:.6rem;min-width:46px;gap:0}
.cab .env{flex-wrap:nowrap;min-width:0} .nav{min-width:0}
.cab .marca{min-width:0;flex:0 1 auto}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-weight:700;
  font-size:var(--t-sm);padding:.78rem 1.4rem;border-radius:var(--r);border:1px solid transparent;
  background:var(--brand);color:#fff;cursor:pointer;min-height:46px;
  transition:transform .3s var(--ease),box-shadow .3s,background .25s;box-shadow:0 8px 22px #0B7A1F3D}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px #0B7A1F52}
.btn.sec{background:transparent;color:var(--ink);border-color:var(--borde);box-shadow:none}
.btn.sec:hover{border-color:var(--brand);color:var(--brand)}
.btn.claro{background:#fff;color:var(--brand);box-shadow:none}
.btn:hover{background:var(--vivo);color:var(--tinta-logo)}
.btn.sec:hover{background:var(--menta);border-color:var(--vivo);color:var(--brand)}
.hamb{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;
  padding:11px;min-width:48px;min-height:48px;align-items:center;justify-content:center}
.hamb span{width:24px;height:2.5px;background:var(--ink);border-radius:3px;transition:.3s}
.hamb.x span:nth-child(1){transform:rotate(45deg) translate(6px,6px)}
.hamb.x span:nth-child(2){opacity:0}
.hamb.x span:nth-child(3){transform:rotate(-45deg) translate(6px,-6px)}

/* ---- buscador ---- */
.buscador{position:fixed;inset:0;z-index:900;background:rgba(8,24,18,.55);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  display:grid;place-items:start center;padding-top:14vh;opacity:0;visibility:hidden;transition:.3s}
.buscador.on{opacity:1;visibility:visible}
.buscador form{width:min(680px,92vw);background:var(--sup);border-radius:var(--r);
  box-shadow:var(--s3);padding:1.2rem;display:flex;gap:.6rem}
.buscador input{flex:1;padding:.95rem 1.1rem;border:1px solid var(--borde);border-radius:var(--r-sm);
  font-size:var(--t-base)}
.buscador input:focus{border-color:var(--brand);outline:none}

/* ================= MIGAS ================= */
.migas{background:var(--sup);border-bottom:1px solid var(--borde);font-size:var(--t-sm)}
.migas .env{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding-block:.75rem;color:var(--muted)}
.migas a:hover{color:var(--brand)}
.migas span[aria-current]{color:var(--ink);font-weight:600}
.migas i{opacity:.5;font-style:normal}

/* ================= SECCIONES ================= */
main>section{padding:clamp(3.2rem,7vw,6rem) 0}
.sec-alt{background:var(--sup);box-shadow:inset 0 1px 0 var(--borde),inset 0 -1px 0 var(--borde)}
.sec-tinta{background:var(--oscuro);color:#fff}
.sec-tinta h2,.sec-tinta h3{color:#fff} .sec-tinta p{color:rgba(255,255,255,.78)}
.eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--t-xs);font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;color:var(--brand);margin-bottom:1rem}
.eyebrow::before{content:'';width:22px;height:2px;background:var(--brand)}
h1.titulo{font-size:clamp(2rem,1.4rem + 2.8vw,3.5rem)}
.bajada{color:var(--muted);font-size:clamp(1rem,.97rem + .3vw,1.14rem);max-width:66ch}
.cab-sec{margin-bottom:clamp(2rem,4vw,3.2rem);text-align:center}
.cab-sec p,.cab-sec .bajada{margin-inline:auto}
.rejilla{display:grid;gap:clamp(1rem,2vw,1.6rem);grid-template-columns:repeat(auto-fit,minmax(265px,1fr))}
.tarj{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  padding:clamp(1.4rem,2.6vw,2rem);box-shadow:var(--s1);transition:.4s var(--ease)}
.tarj:hover{transform:translateY(-5px);box-shadow:var(--s2);border-color:#0B7A1F55}
.tarj h3{margin-bottom:.5rem} .tarj p{color:var(--muted)}
.ali-cel{display:flex;align-items:center;gap:1rem}
.ali-logo{flex:none;width:104px;height:68px;border-radius:12px;display:grid;place-items:center;
  background:#fff;border:1px solid var(--borde);overflow:hidden}
.ali-logo{position:relative}
.ali-logo .ali-img,.ali-logo picture{position:absolute;inset:0;display:block}
.ali-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:6px;box-sizing:border-box}
@media(max-width:600px){.ali-logo{width:76px;height:52px}}
.ali-logo.ali-sigla{background:linear-gradient(135deg,var(--oscuro),var(--brand));border-color:transparent;
  color:#fff;font-family:var(--fd);font-weight:700;font-size:.86rem;letter-spacing:.02em}
.tarj-vacia{opacity:.55;border-style:dashed;box-shadow:none}
.tarj.tarj-vacia.ok{opacity:.55}
.tarj-vacia:hover{transform:none;box-shadow:none;border-color:var(--borde)}
.tarj-vacia h3{font-weight:400;font-style:italic;margin-bottom:0}
.chapa{width:50px;height:50px;display:grid;place-items:center;border-radius:var(--r-sm);
  background:#0B7A1F14;color:var(--brand);margin-bottom:1rem}
.pic{display:block;position:relative;overflow:hidden;width:100%;height:100%;background:#0B7A1F0D}
.pic img{width:100%;height:100%;object-fit:cover;object-position:center 32%;
  transition:transform 1s var(--ease)}
.pic.cubre{position:absolute;inset:0}

/* ================= WIDGET DE AYUDA ================= */
.ayuda{position:fixed;right:clamp(.9rem,2.4vw,1.6rem);bottom:clamp(.9rem,2.4vw,1.6rem);z-index:800;
  display:flex;flex-direction:column;align-items:flex-end;gap:.6rem}
.ayuda-panel{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  box-shadow:var(--s3);padding:.6rem;width:250px;opacity:0;visibility:hidden;
  transform:translateY(10px);transition:.3s var(--ease)}
.ayuda.on .ayuda-panel{opacity:1;visibility:visible;transform:none}
/* la caja que los envuelve mide lo que el panel abierto (250 × 360 px) aunque
   esté cerrado: sin esto tapaba lo que quedara debajo en la esquina (p. ej.
   el botón «El Crucero» del mapa) y el ratón nunca llegaba a él */
.ayuda{pointer-events:none}
.ayuda-btn,.ayuda.on .ayuda-panel{pointer-events:auto}
.ayuda-panel a{display:flex;align-items:center;gap:.65rem;padding:.7rem .8rem;border-radius:var(--r-sm);
  font-size:var(--t-sm);font-weight:600;transition:background .25s}
.ayuda-panel a:hover{background:#0B7A1F12;color:var(--brand)}
.ayuda-btn{display:inline-flex;align-items:center;gap:.55rem;background:var(--brand);color:#fff;
  border:0;border-radius:999px;padding:.85rem 1.3rem;font-weight:700;font-size:var(--t-sm);cursor:pointer;
  box-shadow:0 12px 30px #0B7A1F55;min-height:50px;transition:transform .3s var(--ease)}
.ayuda-btn:hover{transform:translateY(-3px)}

/* ================= PIE INSTITUCIONAL ================= */
footer{background:var(--oscuro);color:rgba(255,255,255,.76);padding-top:clamp(2.8rem,6vw,4.5rem);
  font-size:var(--t-sm)}
footer h4{color:#fff;font-size:var(--t-xs);letter-spacing:.14em;text-transform:uppercase;margin-bottom:1rem}
footer a{color:rgba(255,255,255,.76)} footer a:hover{color:var(--brand2)}
.pie-top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:2.2rem;
  padding-bottom:2.4rem;border-bottom:1px solid rgba(255,255,255,.14)}
.pie-top ul li{padding:.22rem 0}
.pie-legal{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1.6rem;
  padding-block:2rem;border-bottom:1px solid rgba(255,255,255,.14)}
.pie-legal b{display:block;color:#fff;font-size:var(--t-sm);margin-bottom:.3rem}
.pie-redes{display:flex;gap:.55rem;margin-top:1.1rem}
.pie-redes a{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);transition:.3s var(--ease)}
.pie-redes a:hover{background:var(--brand);transform:translateY(-3px)}
.pie-sellos{display:flex;gap:1.4rem;align-items:center;flex-wrap:wrap;padding-block:1.6rem;
  border-bottom:1px solid rgba(255,255,255,.14)}
.sello{border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:.5rem .9rem;
  font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.7)}
.pie-fin{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  padding-block:1.4rem;font-size:var(--t-sm);color:rgba(255,255,255,.55)}
@media(max-width:960px){.pie-top{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.pie-top{grid-template-columns:1fr}}

/* ================= REVELADO ================= */
.rev{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.rev.ok{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rev{opacity:1;transform:none}
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ================= MÓVIL ================= */
/* el encabezado nunca debe desbordar: primero se abrevia el botón y
   después se retira, antes de que empuje la barra hacia fuera */
/* Entre el escritorio ancho y la tableta el encabezado se queda sin sitio.
   Se reduce por pasos —logo, separaciones, texto del botón— y sólo cuando ya
   no cabe de ninguna forma se pasa al menú de hamburguesa. */
@media(max-width:1440px){ .cab .env{gap:.5rem}
  .nav>li>a,.nav>li>button{padding-inline:.55rem;font-size:var(--t-sm)}
  .cab .marco-logo{max-width:132px} .cab .marco-logo svg,.cab .marco-logo img{width:100%;height:auto} }
@media(max-width:1260px){ .cab .logo-txt{display:none} }
@media(max-width:1400px){ .acciones .btn .txt-btn{display:none}
  .acciones .btn{padding:.72rem .9rem;gap:0} }
@media(max-width:1440px){ .acciones .btn{display:none} }
@media(max-width:1150px){
  .nav{display:none} .hamb{display:inline-flex}
  .acciones .btn{display:none}
  .nav.abierta{display:flex;position:fixed;inset:0;top:0;z-index:700;flex-direction:column;
    align-items:stretch;gap:0;background:var(--bg);padding:5.5rem 1.2rem 2.5rem;overflow-y:auto;margin:0}
  .nav.abierta>li{border-bottom:1px solid var(--borde)}
  .nav.abierta>li>a,.nav.abierta>li>button{width:100%;justify-content:space-between;padding:1.05rem .4rem;
    font-size:var(--t-base)}
  .nav.abierta .mega{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;
    border:0;background:none;padding:0 0 .8rem .8rem;min-width:0;display:none}
  .nav.abierta li.abierto .mega{display:block}
}
@media(max-width:700px){
  .util-izq{display:none}
  .utilidad .env{justify-content:space-between}
  .migas{font-size:var(--t-xs)}
  .ayuda-btn span{display:none} .ayuda-btn{padding:.9rem;border-radius:50%}
}

/* ============ 1 · CABECERA QUE SE TRANSFORMA AL DESPLAZAR ============ */
.cab{transition:background .45s var(--ease),box-shadow .45s var(--ease),
     backdrop-filter .45s,padding .45s var(--ease)}
.cab::after{content:'';position:absolute;left:0;bottom:-1px;height:2px;width:var(--leido,0%);
  background:linear-gradient(90deg,var(--brand),var(--brand2));transition:width .12s linear;
  box-shadow:0 0 10px var(--brand)}
.cab.pegado{background:rgba(255,255,255,.86);
  -webkit-backdrop-filter:blur(22px) saturate(190%);backdrop-filter:blur(22px) saturate(190%);
  box-shadow:0 10px 34px rgba(10,35,25,.13)}
.cab-in{transition:padding .45s var(--ease)}
.cab.pegado .cab-in{padding-block:.35rem}
.cab.pegado .marco-logo{transform:scale(.84);box-shadow:var(--s1)}
/* la barra de utilidades se recoge al bajar, para ganar pantalla */
.utilidad{transition:max-height .5s var(--ease),opacity .35s,padding .4s}
body.bajando .utilidad{max-height:0;opacity:0;overflow:hidden;padding-block:0}

/* enlaces del menú: subrayado que barre + fondo suave */
.nav>li>a,.nav>li>button{position:relative;overflow:hidden}
.nav>li>a::after,.nav>li>button::after{content:'';position:absolute;left:14px;right:14px;bottom:6px;
  height:2px;background:var(--brand);transform:scaleX(0);transform-origin:right;
  transition:transform .42s var(--ease)}
.nav>li>a:hover::after,.nav>li>button:hover::after,
.nav>li.activo>a::after{transform:scaleX(1);transform-origin:left}
.nav .flechita{transition:transform .35s var(--ease)}
.tiene-mega:hover .flechita{transform:rotate(-135deg) translateY(-2px)}
/* mega menú: entra con desplazamiento */
.mega{transform:translateX(-50%) translateY(-14px) scale(.98)}
.tiene-mega:hover .mega,.tiene-mega.abierto .mega{transform:translateX(-50%) translateY(0) scale(1)}
.mega a{transform:translateX(-6px);opacity:0;transition:opacity .3s,transform .3s var(--ease),background .25s}
.tiene-mega:hover .mega a,.tiene-mega.abierto .mega a{opacity:1;transform:none}
.tiene-mega:hover .mega a:nth-child(2){transition-delay:.04s}
.tiene-mega:hover .mega a:nth-child(3){transition-delay:.08s}
.tiene-mega:hover .mega a:nth-child(4){transition-delay:.12s}
.tiene-mega:hover .mega a:nth-child(5){transition-delay:.16s}

/* ============ 2 · LOGO CON MARCO PROPIO ============ */
.marco-logo{position:relative;display:inline-flex;
  transition:transform .5s var(--ease)}
.marco-logo::before{content:'';position:absolute;inset:-2px;border-radius:16px;z-index:-1;
  background:linear-gradient(135deg,var(--brand),var(--brand2),var(--acento));
  opacity:0;transition:opacity .45s}
.logo:hover .marco-logo{transform:translateY(-3px) scale(1.03);box-shadow:var(--s3)}
.logo:hover .marco-logo::before{opacity:1}
.marco-logo svg,.marco-logo img{position:relative;z-index:1}
.marco-logo img{object-fit:contain;display:block}
.logo{display:inline-flex;align-items:center;gap:.8rem}
.logo-txt{display:none;line-height:1.15}
.logo-txt b{display:block;font-family:var(--fd);font-size:var(--t-base);color:var(--ink)}
.logo-txt span{font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
@media(min-width:1180px){.logo-txt{display:block}}

/* ============ 3 · CARRUSEL CON AGUA EN MOVIMIENTO ============ */
main>section.hero{padding:0}
.hero{position:relative;height:clamp(560px,86svh,860px);min-height:0;overflow:hidden;
  background:var(--oscuro);isolation:isolate;display:block}
.pista{position:absolute;inset:0}
.diapo{position:absolute;inset:0;opacity:0;visibility:hidden;display:grid;align-items:center;
  transition:opacity .7s var(--ease),visibility .7s}
.diapo.on{opacity:1;visibility:visible}
.diapo:not(.on){content-visibility:hidden}
.diapo .pic{position:absolute;inset:0;z-index:0;transform:scale(1.08);will-change:transform}
.diapo.on .pic{animation:kb 26s ease-in-out infinite}
@keyframes kb{0%{transform:scale(1.08) translate(-1.2%,1%)}
  50%{transform:scale(1.18) translate(1.4%,-1.2%)}
  100%{transform:scale(1.08) translate(-1.2%,1%)}}

/* ---- AGUA REALISTA ----------------------------------------------------
   La fotografía NUNCA se deforma: la lancha, las personas y la orilla quedan
   nítidas. Lo que se ondula es el REFLEJO, que es una copia de la escena
   volteada verticalmente y colocada sobre la franja de agua. Es lo que pasa
   en la realidad: se mueve el reflejo, no el objeto. */
.agua-defs{position:absolute;width:0;height:0;overflow:hidden}
.diapo .agua{position:absolute;left:0;right:0;bottom:0;height:34%;z-index:1;
  overflow:hidden;pointer-events:none;opacity:.42;mix-blend-mode:soft-light;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 22%,#000 78%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 22%,#000 78%,transparent 100%)}
.diapo .agua .pic{position:absolute;left:0;right:0;bottom:0;height:300%;
  transform:scaleY(-1);transform-origin:bottom}
@media(min-width:901px) and (min-height:500px){
  .diapo.on .agua{filter:url(#ondasAgua) blur(.6px)}
}
@media(max-width:900px){.diapo .agua{display:none}}

/* Destellos que se deslizan sobre la superficie: dan sensación de corriente
   sin tocar la fotografía. */
.brillo-agua{position:absolute;left:0;right:0;bottom:0;height:30%;z-index:2;pointer-events:none;
  opacity:.5;mix-blend-mode:screen;
  background:
    repeating-linear-gradient(94deg,transparent 0 34px,rgba(255,255,255,.055) 34px 36px,
      transparent 36px 82px),
    repeating-linear-gradient(86deg,transparent 0 52px,rgba(210,240,255,.05) 52px 54px,
      transparent 54px 120px);
  -webkit-mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.5) 58%,transparent 100%);
  mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.5) 58%,transparent 100%);
  animation:corriente 13s linear infinite}
@keyframes corriente{from{background-position:0 0,0 0}
  to{background-position:-82px 0,120px 0}}
@media(max-width:900px){.brillo-agua{display:none}}

.diapo .velo{position:absolute;inset:0;z-index:2;
  background:linear-gradient(96deg,rgba(8,26,18,.80) 0%,rgba(8,26,18,.50) 38%,
             rgba(8,26,18,.14) 70%,rgba(8,26,18,.04) 100%),
             linear-gradient(180deg,rgba(8,26,18,.28) 0%,transparent 32%,rgba(8,26,18,.40) 100%)}
/* destello de sol que recorre el agua */
.diapo::after{content:'';position:absolute;left:0;right:0;bottom:0;height:52%;z-index:3;
  pointer-events:none;mix-blend-mode:screen;filter:blur(14px);
  background:radial-gradient(38% 56% at 26% 54%,rgba(255,255,255,.20),transparent 62%),
             radial-gradient(26% 38% at 72% 70%,rgba(214,243,255,.13),transparent 60%);
  animation:destello 18s ease-in-out infinite alternate}
@keyframes destello{0%{transform:translateX(-14%);opacity:.45}
  50%{opacity:.85} 100%{transform:translateX(52%) scaleX(1.2);opacity:.5}}

.diapo .env{position:relative;z-index:5;width:100%}
.diapo .caja{max-width:680px;color:#fff;padding-block:clamp(3rem,7vw,5rem)}
.diapo h1,.diapo h2{color:#fff;font-size:clamp(2rem,1.3rem + 3.4vw,4rem);line-height:1.04;
  letter-spacing:-.03em}
.diapo p{color:rgba(255,255,255,.9);margin:1.1rem 0 1.9rem}
.diapo .eyebrow{color:var(--brand2)} .diapo .eyebrow::before{background:var(--brand2)}
.diapo .btns{display:flex;gap:.7rem;flex-wrap:wrap}
.diapo .btn.sec{color:#fff;border-color:rgba(255,255,255,.45)}
.diapo .btn.sec:hover{background:rgba(255,255,255,.16);color:#fff}
/* entrada escalonada del texto */
.diapo.on .eyebrow{animation:sube .85s var(--ease) backwards}
.diapo.on h1,.diapo.on h2{animation:sube .85s var(--ease) .1s backwards}
.diapo.on p{animation:sube .85s var(--ease) .22s backwards}
.diapo.on .btns{animation:sube .85s var(--ease) .34s backwards}
@keyframes sube{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}

.flecha{position:absolute;top:50%;transform:translateY(-50%);z-index:8;width:50px;height:50px;
  display:grid;place-items:center;border-radius:50%;cursor:pointer;color:#fff;
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.3);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:.32s var(--ease)}
.flecha:hover{background:var(--brand);transform:translateY(-50%) scale(1.1);border-color:var(--brand)}
.flecha.izq{left:clamp(.7rem,2.4vw,1.8rem)}
.flecha.izq .ic{transform:rotate(180deg)}
.flecha.der{right:clamp(.7rem,2.4vw,1.8rem)}
/* el carrusel no puede asomar por los lados */
.hero,.carrusel{overflow:hidden}
.puntos{position:absolute;left:0;right:0;bottom:clamp(1.3rem,3.4vw,2.2rem);z-index:8;
  display:flex;gap:.5rem;justify-content:center}
.punto{position:relative;width:36px;height:5px;border-radius:99px;border:0;padding:0;cursor:pointer;overflow:visible;
  background:rgba(255,255,255,.34);position:relative;transition:.35s var(--ease)}
/* área de toque invisible de 24 px de alto, sin cambiar el aspecto */
.punto::after{content:'';position:absolute;left:0;right:0;top:-11px;bottom:-11px}
.punto:hover{background:rgba(255,255,255,.6)}
.punto.on{width:66px;background:rgba(255,255,255,.28)}
.punto.on::after{content:'';position:absolute;inset:0;background:var(--brand2);
  transform-origin:left;animation:avanza 5.5s linear forwards}
@keyframes avanza{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.hero.pausa .punto.on::after{animation-play-state:paused}
@media(max-width:640px){.flecha{display:none}.diapo .btns .btn{flex:1;justify-content:center}}

/* ============ 4 · CIFRAS INTERACTIVAS ============ */
.sec-cifras{background:var(--sup);position:relative;z-index:6}
.cifras{display:grid;gap:clamp(.8rem,1.6vw,1.2rem);grid-template-columns:repeat(4,1fr)}
.cifra{position:relative;background:var(--bg);border:1px solid var(--borde);border-radius:var(--r);
  padding:0;overflow:hidden;text-align:center;cursor:pointer;width:100%;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .35s}
.cifra:hover{transform:translateY(-6px);box-shadow:var(--s2);border-color:var(--brand)}
.cifra.abierta{border-color:var(--brand);box-shadow:var(--s2)}
.cifra-cab{display:flex;flex-direction:column;align-items:center;gap:.5rem;
  padding:clamp(1.2rem,2.4vw,1.7rem)}
.cifra .ic{color:var(--brand);flex:none;transition:transform .45s var(--ease)}
.cifra:hover .ic{transform:scale(1.15) rotate(-6deg)}
.cifra b{display:block;font-family:var(--fd);font-size:clamp(1.8rem,1.3rem + 1.7vw,2.6rem);
  color:var(--brand);line-height:1;font-variant-numeric:tabular-nums}
.cifra .et{display:block;margin-top:.35rem;color:var(--muted);font-size:var(--t-sm);line-height:1.4}
.cifra .mas{position:absolute;top:1rem;right:1rem;width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;background:var(--brand);color:#fff;font-size:var(--t-base);line-height:1;
  opacity:.28;transition:.4s var(--ease)}
.cifra:hover .mas{opacity:1}
.cifra.abierta .mas{opacity:1;transform:rotate(45deg)}
/* barra de peso relativo */
/* <span> sin display:block: la altura se ignoraba y el degradado se
   estiraba sobre toda la tarjeta */
.barra{display:block;height:4px;background:rgba(0,0,0,.06);margin:0 clamp(1.2rem,2.4vw,1.7rem)}
.barra i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--vivo) 60%,var(--sol));
  transition:width 2.6s var(--ease)}
.cifra-mas{max-height:0;overflow:hidden;transition:max-height .55s var(--ease)}
.cifra.abierta .cifra-mas{max-height:260px}
.cifra-mas p{padding:1rem clamp(1.2rem,2.4vw,1.7rem) .4rem;color:var(--muted);}
.cifra-mas .ver{display:inline-flex;align-items:center;gap:.4rem;margin:0 clamp(1.2rem,2.4vw,1.7rem) 1.2rem;
  font-weight:700;font-size:var(--t-sm);color:var(--brand)}
.cifra-mas .ver:hover{gap:.7rem}
@media(max-width:900px){.cifras{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.cifras{grid-template-columns:1fr}}

/* ============ 5 · SECCIONES QUE SE DESTACAN ============ */
main>section{position:relative}
/* cada sección se anuncia con una línea que crece */
.cab-sec{position:relative}
.eyebrow::before{transition:width .8s var(--ease);width:0}
.rev.ok .eyebrow::before,.cab-sec.ok .eyebrow::before{width:22px}
/* La raya de los titulos vive ahora en el bloque 19 (sistema unico .tit-sec).
   Se retira aqui la variante corta que competia con la larga. */

/* revelados con dirección */
.rev{opacity:0;transform:translateY(26px)}
.rev.ok{opacity:1;transform:none}
.rev-i{opacity:0;transform:translateX(-38px)}
.rev-d{opacity:0;transform:translateX(38px)}
.rev-e{opacity:0;transform:scale(.94)}
.rev-i.ok,.rev-d.ok,.rev-e.ok{opacity:1;transform:none}
.rev,.rev-i,.rev-d,.rev-e{transition:opacity .85s var(--ease),transform .85s var(--ease)}

/* parallax suave en las fotos de bloque partido */
.partido figure .pic img{will-change:transform}

/* tarjetas: brillo que sigue al cursor */
.tarj{position:relative;overflow:hidden}
.tarj::after{content:'';position:absolute;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,var(--brand) 0%,transparent 65%);opacity:0;
  transform:translate(-50%,-50%);pointer-events:none;
  left:var(--mx,50%);top:var(--my,50%);transition:opacity .4s}
.tarj:hover::after{opacity:.07}
.tarj>*{position:relative;z-index:1}
.chapa{transition:transform .5s var(--ease),background .35s,color .35s}
.tarj:hover .chapa{transform:rotate(-8deg) scale(1.08);background:var(--brand);color:#fff}

/* accesos directos: la barra verde reacciona */
.acceso{position:relative;overflow:hidden}
.acceso::before{content:'';position:absolute;inset:0;background:var(--oscuro);
  transform:translateY(101%);transition:transform .42s var(--ease)}
.acceso:hover::before{transform:translateY(0)}
.acceso>*{position:relative;z-index:1}
.acceso .ic{transition:transform .4s var(--ease)}
.acceso:hover .ic{transform:translateX(4px) scale(1.1)}

/* botón: barrido de luz */
.btn{position:relative;overflow:hidden}
.btn::before{content:'';position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.32) 50%,transparent 68%);
  transform:translateX(-120%);transition:transform .75s var(--ease)}
.btn:hover::before{transform:translateX(120%)}

/* noticias y proyectos: la imagen se acerca y la tarjeta se levanta */
.noticia .im .pic img{transition:transform .9s var(--ease)}
.noticia:hover .im .pic img{transform:scale(1.07)}
.leer .ic{transition:transform .35s var(--ease)}
.leer:hover .ic{transform:translateX(5px)}

/* volver arriba */
.arriba{position:fixed;right:clamp(.9rem,2.4vw,1.6rem);bottom:calc(clamp(.9rem,2.4vw,1.6rem) + 66px);
  z-index:790;width:46px;height:46px;border-radius:50%;border:1px solid var(--borde);
  background:var(--sup);color:var(--brand);display:grid;place-items:center;cursor:pointer;
  box-shadow:var(--s2);opacity:0;visibility:hidden;transform:translateY(12px);transition:.4s var(--ease)}
.arriba.on{opacity:1;visibility:visible;transform:none}
.arriba:hover{background:var(--brand);color:#fff;transform:translateY(-3px)}
.arriba .ic{transform:rotate(-90deg)}

@media(prefers-reduced-motion:reduce){
  .rev,.rev-i,.rev-d,.rev-e{opacity:1;transform:none}
  .diapo.on .pic,.diapo::after{animation:none}
  .punto.on::after{animation:none;transform:scaleX(1)}
}

/* ============ 1 · ACCESOS DIRECTOS ============
   Antes era una banda verde plana con cuatro enlaces: pesada y sin jerarquía.
   Ahora son tarjetas claras que flotan sobre la portada y toman color al
   pasar el cursor. */
.env-tit{max-width:var(--max);margin-inline:auto;padding-inline:clamp(1.1rem,4vw,2.4rem);
  padding-top:clamp(1.8rem,3.5vw,2.8rem)}
.accesos .tit-bloque{margin-bottom:clamp(1rem,2vw,1.5rem)}
.accesos{background:transparent!important;margin-top:clamp(-3.5rem,-5vw,-2.5rem);
  position:relative;z-index:20;padding-bottom:clamp(1.5rem,3vw,2.5rem)}
.accesos .env{display:grid!important;grid-template-columns:repeat(4,1fr);
  gap:clamp(.6rem,1.4vw,1rem);background:transparent!important;
  padding-inline:clamp(1.1rem,4vw,2.4rem)!important}
.acceso{position:relative;display:flex!important;flex-direction:column;align-items:flex-start;
  gap:.7rem;background:var(--sup)!important;color:var(--ink)!important;
  border:1px solid var(--borde);border-radius:var(--r);
  padding:clamp(1.1rem,2.2vw,1.5rem)!important;font-weight:700;font-size:var(--t-base);
  box-shadow:var(--s2);overflow:hidden;isolation:isolate;
  transition:transform .42s var(--ease),box-shadow .42s var(--ease),color .3s}
.acceso::before{content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(135deg,var(--brand),var(--vivo) 70%,var(--cielo));
  transform:translateY(101%);transition:transform .45s var(--ease)}
.acceso:hover,.acceso:focus-visible{color:#fff!important;transform:translateY(-7px);
  box-shadow:0 22px 44px rgba(10,35,25,.22)}
.acceso:hover::before,.acceso:focus-visible::before{transform:translateY(0)}
.acceso .ic-caja{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;
  background:var(--brand);color:#fff;transition:background .3s,transform .45s var(--ease)}
.acceso:hover .ic-caja{background:rgba(255,255,255,.22);transform:rotate(-8deg) scale(1.06)}
.acceso .flecha-a{margin-top:auto;display:inline-flex;align-items:center;gap:.4rem;
  font-size:var(--t-xs);font-weight:600;opacity:.6;transition:.35s var(--ease)}
.acceso:hover .flecha-a{opacity:1;gap:.75rem}
@media(max-width:980px){.accesos .env{grid-template-columns:repeat(2,1fr)}
  .accesos{margin-top:0;padding-top:clamp(1.5rem,3vw,2rem)}}
@media(max-width:520px){.accesos .env{grid-template-columns:1fr}}

/* ============ 7 · FRUTOS DEL TERRITORIO ============ */
/* con cinco frutos, que la rejilla los reparta sola */
/* ==================================================================
   CARRUSEL DE FRUTOS
   ------------------------------------------------------------------
   Antes eran cinco fichas pequenas en una rejilla fija, todas a la
   vez y sin nada que hacer con ellas. El nombre del fruto se veia,
   pero la descripcion solo aparecia al pasar el raton: en un movil,
   donde no hay raton, ese texto no habia manera de leerlo.

   Ahora es un carrusel con anclaje de desplazamiento: las fichas son
   bastante mas grandes, se arrastran con el dedo o con el raton,
   tienen flechas y una barra que dice por donde se va. La primera
   linea de la descripcion se lee siempre, en cualquier aparato, y al
   acercarse se despliega el resto.
   ================================================================== */

.frutos-carrusel{position:relative;margin-top:clamp(1.4rem,2.6vw,2rem)}

/* el visor es lo unico que se desplaza */
.frutos-visor{
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;
  padding-block:.5rem 1.1rem;    /* sitio para la sombra al levantar */
  cursor:grab;
}
.frutos-visor::-webkit-scrollbar{display:none}
.frutos-visor:focus-visible{outline:3px solid var(--cielo);outline-offset:4px;border-radius:var(--r)}
/* mientras se arrastra, el anclaje estorba: se suelta */
.frutos-visor.arrastrando{cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none}
.frutos-visor.arrastrando .fruto{pointer-events:none}

/* la cinta de fichas */
.frutos{display:flex;gap:clamp(.9rem,1.8vw,1.35rem);width:max-content;min-width:100%}

.fruto{
  position:relative;
  flex:0 0 clamp(236px,25vw,306px);
  aspect-ratio:3/4;
  border-radius:var(--r);overflow:hidden;
  box-shadow:var(--s2);
  scroll-snap-align:start;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease);
}
.fruto:hover,.fruto:focus-within{transform:translateY(-8px);box-shadow:var(--s3)}
.fruto .pic{position:absolute;inset:0}
.fruto .pic img{transition:transform 1.1s var(--ease)}
.fruto:hover .pic img,.fruto:focus-within .pic img{transform:scale(1.07)}
.fruto::after{content:'';position:absolute;inset:0;z-index:1;
  background:linear-gradient(transparent 28%,rgba(10,28,18,.55) 56%,rgba(8,22,14,.94))}
.fruto figcaption{position:absolute;inset:auto 0 0 0;z-index:2;
  padding:clamp(1rem,2vw,1.35rem);color:#fff}
.fruto b{display:block;font-family:var(--fd);font-size:var(--t-realce);
  margin-bottom:.35rem;text-shadow:0 1px 10px rgba(0,0,0,.45)}
/* dos lineas siempre visibles; el resto se despliega al acercarse */
.fruto span{display:block;font-size:var(--t-apoyo);line-height:1.5;
  color:rgba(255,255,255,.88);
  max-height:3em;overflow:hidden;
  transition:max-height .45s var(--ease)}
.fruto:hover span,.fruto:focus-within span{max-height:9em}

/* --- las flechas ------------------------------------------------- */
.frutos-ctrl{
  position:absolute;top:calc(50% - 26px);z-index:5;
  width:46px;height:46px;border-radius:50%;
  display:grid;place-items:center;
  background:color-mix(in oklab,var(--sup) 92%,transparent);
  color:var(--oscuro);border:1px solid var(--borde);
  box-shadow:var(--s2);cursor:pointer;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .3s var(--ease),opacity .3s,background .3s,color .3s;
}
.frutos-ctrl.previo{left:clamp(-14px,-1vw,0px)}
.frutos-ctrl.siguiente{right:clamp(-14px,-1vw,0px)}
.frutos-ctrl:hover{background:var(--brand);color:#fff;transform:scale(1.09)}
.frutos-ctrl:focus-visible{outline:3px solid var(--cielo);outline-offset:3px}
.frutos-ctrl[disabled]{opacity:0;pointer-events:none}
/* en pantalla tactil sobra: se arrastra con el dedo */
@media (hover:none),(max-width:760px){.frutos-ctrl{display:none}}

/* --- la barra de avance ------------------------------------------ */
.frutos-barra{
  position:relative;height:4px;border-radius:99px;overflow:hidden;
  background:color-mix(in oklab,var(--brand) 13%,transparent);
  margin-top:.2rem;
}
.frutos-barra i{
  position:absolute;top:0;bottom:0;left:0;display:block;
  width:var(--parte,34%);
  transform:translateX(var(--avance,0%));
  border-radius:99px;
  background:linear-gradient(90deg,var(--brand),var(--vivo) 55%,var(--sol));
  transition:transform .2s linear,width .3s var(--ease);
}

/* --- la ficha se puede ampliar ------------------------------------
   Se marca con el cursor y con una lupa en la esquina, igual que en
   la galeria del territorio: el mismo gesto en los dos sitios. */
.fruto.ampliable{cursor:zoom-in}
.fruto .lupa-ic{
  position:absolute;top:.7rem;right:.7rem;z-index:3;
  width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(8,22,14,.5);color:#fff;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;scale:.8;
  transition:opacity .35s var(--ease),scale .35s var(--ease);
}
.fruto:hover .lupa-ic,.fruto:focus-visible .lupa-ic{opacity:1;scale:1}
.fruto:focus-visible{outline:3px solid var(--cielo);outline-offset:3px}
/* el navegador funde la foto de la ficha con la foto ampliada */
@supports (view-transition-name: a){
  .fruto img.saliendo{view-transition-name:foto-activa}
}

@media (prefers-reduced-motion:reduce){
  .frutos-visor{scroll-behavior:auto}
  .fruto,.fruto .pic img,.fruto span,.frutos-ctrl,.frutos-barra i{transition:none}
  .fruto:hover,.fruto:focus-within{transform:none}
  .fruto span{max-height:none}
}
@media (prefers-reduced-motion:reduce){
  .fruto .lupa-ic{transition:none;opacity:1;scale:1}
}
.frutos-lista{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1.8rem}
.frutos-lista span{padding:.5rem 1.05rem;border:1px solid var(--borde);border-radius:99px;
  font-size:var(--t-sm);background:var(--sup);transition:.32s var(--ease)}
.frutos-lista span:hover{border-color:var(--brand);color:var(--brand);
  transform:translateY(-3px);box-shadow:var(--s1)}


/* ============ 3 · ALIADOS CON LOGOS REALES ============ */
.placa{flex:none;width:210px;height:118px;background:#fff;border:1px solid var(--borde);
  border-radius:var(--r);display:grid;place-items:center;padding:1.1rem;
  transition:.4s var(--ease);overflow:hidden}
/* sin escala de grises: cada emblema lleva los colores reales de su
   entidad (ver la cinta de aliados en app/partes/portada.php) */
.placa:hover{transform:translateY(-6px) scale(1.03);
  box-shadow:var(--s2);border-color:var(--brand)}
.placa .pic{width:100%;height:100%}
.placa .pic img{object-fit:contain;object-position:center}

/* ============ 1 · NÚMEROS CON RODILLO DE DÍGITOS ============ */
.rodillo{display:inline-flex;overflow:hidden;line-height:1;vertical-align:baseline;
  font-variant-numeric:tabular-nums}
.rodillo .col{display:block;overflow:hidden;height:1em}
.rodillo .tira{display:block;transition:transform 1.5s cubic-bezier(.16,1,.3,1)}
.rodillo .tira span{display:block;height:1em}
.rodillo .fijo{display:block;height:1em}
.cifra b,.cifra b .num-g{display:inline!important;color:var(--ink)!important;
  font-family:var(--fd);font-weight:700;font-size:var(--td-cifra);
  line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.cifra b{display:block!important;margin:.15rem 0 0}
.cifra.listo b{animation:pulso .6s var(--ease)}
/* título visible de cada bloque */
.tit-bloque{text-align:center;margin-bottom:clamp(1.2rem,2.6vw,2rem)}
.tit-bloque h2{margin:0}
.tit-bloque p{color:var(--muted);margin:.5rem auto 0;max-width:56ch}
.tit-bloque .raya{display:block;width:56px;height:3px;margin:.85rem auto 0;border-radius:3px;
  background:linear-gradient(90deg,var(--brand),var(--vivo) 45%,var(--sol) 75%,var(--cielo))}
.cifra-txt{display:block}
.cifra-tit{display:block;font-family:var(--fd);font-size:var(--t-base);color:var(--ink);
  margin-bottom:.15rem;line-height:1.2}
.cifra b i{font-style:normal;font-size:.4em;color:var(--muted);margin-left:.3rem;
  font-family:var(--fb);font-weight:600}
@keyframes pulso{0%{transform:scale(1)}40%{transform:scale(1.08)}100%{transform:scale(1)}}

/* ============ 2 · VENTANA EMERGENTE DE CIFRA ============ */
.modal{position:fixed;inset:0;z-index:950;display:grid;place-items:center;
  padding:clamp(.8rem,3vw,2rem);background:rgba(10,26,18,.72);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  opacity:0;visibility:hidden;transition:opacity .35s var(--ease),visibility .35s}
.modal.on{opacity:1;visibility:visible}
.modal-caja{width:min(940px,100%);max-height:92svh;overflow:auto;background:var(--sup);
  border-radius:calc(var(--r)*1.3);box-shadow:0 40px 90px rgba(0,0,0,.45);
  display:grid;grid-template-columns:.92fr 1.08fr;
  transform:scale(.94) translateY(18px);transition:transform .45s var(--ease)}
.modal.on .modal-caja{transform:none}
.modal-fig{position:relative;min-height:280px;overflow:hidden}
.modal-fig .pic{position:absolute;inset:0}
.modal-fig::after{content:'';position:absolute;inset:0;
  background:linear-gradient(160deg,transparent 40%,rgba(8,26,18,.55))}
.modal-fig .glob{position:absolute;left:1.2rem;bottom:1.2rem;z-index:2;color:#fff;
  font-size:var(--t-sm);text-shadow:0 2px 10px rgba(0,0,0,.6)}
.modal-cu{padding:clamp(1.5rem,3.4vw,2.6rem);display:flex;flex-direction:column;gap:.7rem}
.modal-cu .ic-g{width:52px;height:52px;display:grid;place-items:center;border-radius:14px;
  background:var(--brand);color:#fff;margin-bottom:.3rem}
.modal-num{font-family:var(--fd);font-size:clamp(2.4rem,1.6rem + 3vw,4rem);color:var(--brand);
  line-height:1;font-variant-numeric:tabular-nums}
.modal-num small{font-size:.34em;color:var(--muted);margin-left:.35rem;font-family:var(--fb)}

.modal-cu p{color:var(--muted);}
.modal-datos{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:.6rem}
.modal-datos div{background:var(--bg);border:1px solid var(--borde);border-radius:var(--r-sm);
  padding:.75rem .8rem}
.modal-datos b{display:block;font-family:var(--fd);font-size:var(--t-base);color:var(--brand);line-height:1.2}
.modal-datos span{font-size:var(--t-xs);color:var(--muted);line-height:1.3;display:block;margin-top:.2rem}
.modal-pie{display:flex;gap:.6rem;align-items:center;margin-top:auto;padding-top:1.2rem;flex-wrap:wrap}
.modal-nav{display:flex;gap:.4rem;margin-left:auto}
.modal-nav button{width:40px;height:40px;border-radius:50%;border:1px solid var(--borde);
  background:var(--bg);color:var(--brand);display:grid;place-items:center;cursor:pointer;
  transition:.3s var(--ease)}
.modal-nav button:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.modal-nav .prev .ic{transform:rotate(180deg)}
.modal-x{position:absolute;top:.9rem;right:.9rem;z-index:5;width:42px;height:42px;border-radius:50%;
  border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.16);color:#fff;
  display:grid;place-items:center;cursor:pointer;font-size:var(--t-lg);line-height:1;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:.3s var(--ease)}
.modal-x:hover{background:var(--brand);transform:rotate(90deg)}
.modal-puntos{display:flex;gap:.35rem}
.modal-puntos i{width:7px;height:7px;border-radius:50%;background:var(--borde);transition:.3s}
.modal-puntos i.on{background:var(--brand);width:20px;border-radius:99px}
@media(max-width:820px){.modal-caja{grid-template-columns:1fr}
  .modal-fig{min-height:200px;aspect-ratio:16/9}
  .modal-datos{grid-template-columns:1fr 1fr}}

/* ============ 3 · BLOQUE DE LLAMADA A LA ACCIÓN ============ */
.apoyo{position:relative;padding:0!important}
.apoyo .banda{position:absolute;left:0;right:0;bottom:0;height:58%;background:var(--brand);z-index:0}
.apoyo.alt .banda{background:var(--acento);top:0;bottom:auto;height:52%}
.apoyo .env{position:relative;z-index:2;padding-block:clamp(2.6rem,6vw,4.5rem)}
.apoyo-caja{display:grid;grid-template-columns:.85fr 1.15fr;background:var(--sup);
  box-shadow:0 30px 70px rgba(10,35,25,.22);overflow:hidden;border-radius:4px}
.apoyo-fig{position:relative;min-height:300px;overflow:hidden}
.apoyo-fig .pic{position:absolute;inset:0}
.apoyo-cu{padding:clamp(1.8rem,4vw,3.2rem);display:flex;flex-direction:column;justify-content:center;gap:.9rem}
.apoyo-cu h2 em{font-style:normal;color:var(--brand)}
.apoyo-cu p{color:var(--muted);max-width:52ch}
.apoyo-cu .btn{align-self:flex-start;margin-top:.5rem}
@media(max-width:880px){.apoyo-caja{grid-template-columns:1fr}
  .apoyo-fig{min-height:0;aspect-ratio:16/10}
  .apoyo .banda{height:40%}}

/* ============ 4 · TARJETAS QUE GIRAN 180° ============ */
/* seis tarjetas: tres por fila cuadran mejor que cuatro mas dos */
.giros{display:grid;gap:clamp(.9rem,2vw,1.4rem);grid-template-columns:repeat(3,1fr)}
@media(max-width:1000px){.giros{grid-template-columns:repeat(2,1fr)}}
.giro{display:block;position:relative;perspective:1400px;aspect-ratio:4/3;cursor:pointer;background:none;border:0;
  padding:0;width:100%;border-radius:var(--r);overflow:visible}
/* .giro-in es un <span>: sin display:block se queda en línea, con altura 0, y
   las dos caras (position:absolute;inset:0) colapsan a 0x0. Las fotografías se
   cargaban pero no se veían. */
/* inset:0 en lugar de height:100%: la altura porcentual no siempre
   resuelve contra una caja definida por aspect-ratio y las dos caras
   quedaban más cortas que la tarjeta. */
.giro-in{display:block;position:absolute;inset:0;transform-style:preserve-3d;
  transition:transform 1.15s cubic-bezier(.5,0,.2,1)}
.giro.volteada .giro-in{transform:rotateY(180deg)}
.giro.suelto{aspect-ratio:4/3.4;width:100%;box-shadow:var(--s2);border-radius:var(--r)}
.giro.suelto .giro-cara{box-shadow:none}
@media(max-width:900px){.giro.suelto{aspect-ratio:4/3}}
/* una regla genérica posterior para <figure> imponía position:relative y
   aspect-ratio:4/3; se sube la especificidad para que las caras llenen la
   tarjeta completa. */
.giro .giro-cara,.giro-cara{display:block;position:absolute;inset:0;margin:0;
  aspect-ratio:auto;width:auto;height:auto;border-radius:var(--r);overflow:hidden;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:var(--s2)}
.giro-cara.tras{transform:rotateY(180deg)}
.giro-cara .pic{position:absolute;inset:0}
.giro-cara figcaption{position:absolute;inset:auto 0 0 0;z-index:2;padding:2.2rem .9rem .85rem;
  color:#fff;font-size:var(--t-sm);font-weight:600;
  background:linear-gradient(transparent,rgba(6,20,14,.85))}
.giro-marca{background:var(--sol);color:var(--tinta-logo);position:absolute;top:.7rem;right:.7rem;z-index:3;width:26px;height:26px;
  border-radius:50%;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);
  display:grid;place-items:center;color:#fff;font-size:var(--t-xs);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .35s}
.giro:hover .giro-marca{opacity:1}
@media(max-width:900px){.giros{grid-template-columns:repeat(2,1fr)}}

/* ============ 5 · FRANJA DE ALIADOS ============ */
.aliados-sec{background:var(--sup);overflow:hidden}
.aliados-tit{text-align:center;margin-bottom:2rem}
.cinta-aliados{position:relative;
  -webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.cinta-pista{display:flex;gap:clamp(1rem,2.4vw,2rem);width:max-content;
  animation:desfila 34s linear infinite}
.cinta-aliados:hover .cinta-pista{animation-play-state:paused}
@keyframes desfila{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.cinta-pista{animation:none}
  .giro-in{transition:none} .rodillo .tira{transition:none}}

/* ---- portada ---- */
.hero{position:relative;min-height:clamp(500px,74svh,720px);display:grid;align-items:center;
  background:var(--oscuro);overflow:hidden}
/* Velo medido: oscurece lo justo bajo el texto y deja ver la fotografía.
   Antes cubría casi toda la imagen y la portada parecía un fondo plano. */
.hero .velo{position:absolute;inset:0;z-index:2;
  background:linear-gradient(96deg,rgba(8,26,18,.80) 0%,rgba(8,26,18,.52) 38%,
             rgba(8,26,18,.16) 68%,rgba(8,26,18,.05) 100%),
             linear-gradient(180deg,rgba(8,26,18,.30) 0%,transparent 30%,rgba(8,26,18,.34) 100%)}
.hero .env{position:relative;z-index:4;padding-block:clamp(3rem,7vw,5rem)}
.hero .caja{max-width:660px;color:#fff}
.hero.interior .env{text-align:center}
.hero.interior .caja{max-width:760px;margin-inline:auto}
.hero.interior .eyebrow{justify-content:center}
.hero h1{color:#fff;font-size:clamp(2rem,1.4rem + 3.2vw,3.8rem);line-height:1.05}
.hero p{color:rgba(255,255,255,.88);margin:1.1rem 0 1.9rem}
.hero .eyebrow{color:var(--brand2)} .hero .eyebrow::before{background:var(--brand2)}
.hero .btns{display:flex;gap:.7rem;flex-wrap:wrap}
.hero .btn.sec{color:#fff;border-color:rgba(255,255,255,.45)}
.hero .btn.sec:hover{background:rgba(255,255,255,.14);color:#fff}
/* portada interior (más baja) */
.hero.interior{min-height:clamp(280px,38svh,400px)}

/* ---- accesos directos ---- */
.accesos{background:var(--brand);position:relative;z-index:5}
.accesos .env{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.2);
  padding-inline:0}
.acceso{display:flex;align-items:center;gap:.8rem;background:var(--brand);color:#fff;
  padding:1.15rem clamp(1rem,2vw,1.6rem);font-weight:600;font-size:var(--t-base);transition:background .25s}
.acceso:hover{background:var(--oscuro)}
.acceso .ic{flex:none;opacity:.9}
@media(max-width:900px){.accesos .env{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.accesos .env{grid-template-columns:1fr}}

/* ---- cifras ---- */
.cifras{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.cifra{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  padding:1.5rem 1.3rem;box-shadow:var(--s1)}
.cifra b{display:block;font-family:var(--fd);font-size:clamp(1.9rem,1.4rem + 1.6vw,2.7rem);
  color:var(--brand);line-height:1}
.cifra .et{display:block;margin-top:.4rem;color:var(--muted);font-size:var(--t-sm)}

/* ---- bloque partido ---- */
.partido{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,4.5vw,4rem);align-items:center}
.partido.inv>*:first-child{order:2}
.partido figure{border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;box-shadow:var(--s2);position:relative}
.partido figcaption{position:absolute;inset:auto 0 0 0;padding:2rem 1.1rem .9rem;color:#fff;
  font-size:var(--t-sm);background:linear-gradient(transparent,rgba(0,0,0,.75))}
@media(max-width:880px){.partido{grid-template-columns:1fr}.partido.inv>*:first-child{order:0}}

/* ---- listas de datos ---- */
.datos{display:flex;flex-direction:column;gap:1rem;margin-top:1.6rem}
.datos li{display:flex;gap:.9rem;align-items:flex-start}
.datos li>span{color:var(--brand);flex:none;margin-top:.2rem}
.datos b{display:block;font-family:var(--fd);font-size:var(--t-base)}
.datos p{color:var(--muted);}

/* ---- tabla institucional ---- */
.tabla{width:100%;border-collapse:collapse;background:var(--sup);border:1px solid var(--borde);
  border-radius:var(--r);overflow:hidden;font-size:var(--t-base)}
.tabla th{background:var(--oscuro);color:#fff;text-align:left;padding:.9rem 1rem;
  font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase}
.tabla td{padding:.9rem 1rem;border-top:1px solid var(--borde);vertical-align:top}
.tabla tr:hover td{background:rgba(0,0,0,.02)}
.tabla-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---- acordeón ---- */
.acor{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  margin-bottom:.6rem;overflow:hidden}
.acor[open]{border-color:var(--brand);box-shadow:var(--s1)}
.acor summary{cursor:pointer;list-style:none;padding:1.05rem 1.3rem;font-weight:700;
  display:flex;align-items:center;gap:.9rem;min-height:56px}
.acor summary::-webkit-details-marker{display:none}
.acor summary::after{content:'';margin-left:auto;width:10px;height:10px;flex:none;
  border-right:2.5px solid var(--brand);border-bottom:2.5px solid var(--brand);
  transform:rotate(45deg);transition:transform .35s}
.acor[open] summary::after{transform:rotate(-135deg)}
.acor-cuerpo{padding:0 1.3rem 1.2rem;color:var(--muted);font-size:var(--t-base)}
.etq{font-size:var(--t-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:.24rem .6rem;border-radius:99px;background:rgba(0,0,0,.06);color:var(--brand);flex:none}

/* ---- equipo ---- */
.equipo{display:grid;gap:1.1rem;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.persona{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  padding:1.5rem 1.2rem;text-align:center;box-shadow:var(--s1);transition:.4s var(--ease)}
.persona:hover{transform:translateY(-5px);box-shadow:var(--s2)}
.avatar{width:78px;height:78px;margin:0 auto .9rem;border-radius:50%;display:grid;place-items:center;
  font-family:var(--fd);font-size:var(--t-xl);font-weight:700;color:#fff;background:var(--brand)}
.persona .cargo{display:block;font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand);font-weight:700;margin-bottom:.25rem}
.persona h3{margin-bottom:.4rem}
.persona p{color:var(--muted);}

/* ---- línea de tiempo ---- */
.tiempo{position:relative;max-width:900px;padding-left:2.6rem}
.tiempo::before{content:'';position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:var(--brand);opacity:.3}
.hito{position:relative;padding-bottom:2rem}
.hito::before{content:'';position:absolute;left:-2.35rem;top:.4rem;width:18px;height:18px;
  border-radius:50%;background:var(--bg);border:3px solid var(--brand)}
.hito .anio{display:inline-block;font-family:var(--fd);font-weight:700;color:#fff;
  background:var(--brand);padding:.15rem .7rem;border-radius:99px;font-size:var(--t-sm);margin-bottom:.45rem}
.hito h3{margin-bottom:.3rem} .hito p{color:var(--muted);max-width:60ch}

/* ---- galería ---- */
.mosaico{display:grid;gap:.7rem;grid-template-columns:repeat(4,1fr);grid-auto-rows:160px}
.mos{position:relative;overflow:hidden;border-radius:var(--r-sm);box-shadow:var(--s1)}
.mos:nth-child(1){grid-column:span 2;grid-row:span 2}
.mos:nth-child(6){grid-column:span 2}
.mos:hover .pic img{transform:scale(1.07)}
.mos figcaption{position:absolute;inset:auto 0 0 0;padding:1.8rem .8rem .7rem;color:#fff;
  font-size:var(--t-sm);background:linear-gradient(transparent,rgba(0,0,0,.8))}
@media(max-width:820px){.mosaico{grid-template-columns:repeat(2,1fr);grid-auto-rows:130px}
  .mos:nth-child(6){grid-column:span 1}}

/* ---- veredas ---- */
.veredas{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(215px,1fr))}
.vereda{display:flex;gap:.7rem;align-items:flex-start;background:var(--sup);border:1px solid var(--borde);
  border-radius:var(--r-sm);padding:.9rem 1rem;transition:.35s}
.vereda:hover{border-color:var(--brand);transform:translateY(-3px)}
.vereda i{width:8px;height:8px;border-radius:50%;background:var(--brand);flex:none;margin-top:.5rem}
.vereda b{display:block;font-size:var(--t-base)} .vereda span{font-size:var(--t-xs);color:var(--muted)}

/* ---- noticias ---- */
.noticias{display:grid;gap:1.4rem;grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
.noticia{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);overflow:hidden;
  box-shadow:var(--s1);display:flex;flex-direction:column;transition:.4s var(--ease)}
.noticia:hover{transform:translateY(-5px);box-shadow:var(--s2)}
.noticia .im{aspect-ratio:16/9;overflow:hidden}
.noticia .cu{padding:1.2rem 1.3rem 1.5rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.noticia time{font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--brand);font-weight:700}
.noticia p{color:var(--muted);flex:1}
.leer{font-weight:700;font-size:var(--t-sm);color:var(--brand);display:inline-flex;align-items:center;gap:.4rem}
.leer:hover{gap:.7rem}

/* ---- formulario ---- */
.form-caja{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  padding:clamp(1.4rem,3vw,2.2rem);box-shadow:var(--s1)}
.campo{margin-bottom:1rem}
.campo label{display:block;font-size:var(--t-sm);font-weight:700;margin-bottom:.4rem}
.campo input,.campo select,.campo textarea{width:100%;padding:.85rem 1rem;border:1px solid var(--borde);
  border-radius:var(--r-sm);background:var(--bg);min-height:48px}
.campo input:focus,.campo select:focus,.campo textarea:focus{border-color:var(--brand);outline:none;
  box-shadow:0 0 0 3px rgba(0,0,0,.05)}
.campo textarea{min-height:130px;resize:vertical}
.dos{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:560px){.dos{grid-template-columns:1fr}}
.aviso{font-size:var(--t-sm);color:var(--muted);background:rgba(0,0,0,.03);border-left:3px solid var(--brand);
  padding:.8rem 1rem;border-radius:0 var(--r-sm) var(--r-sm) 0;margin-bottom:1.2rem}

.pdf-visor{border:1px solid var(--borde);border-radius:var(--r-sm);overflow:hidden;margin-bottom:1.2rem;
  background:var(--bg)}
.pdf-visor iframe{display:block;width:100%;height:min(85vh,1000px);border:0}
.datos-fila{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:1.6rem 2.4rem;margin-bottom:2.2rem}
.datos-fila li{max-width:220px}
@media(max-width:700px){.datos-fila{flex-direction:column;align-items:flex-start}}

/* ---- resultados del buscador ---- */
.res{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);padding:1.2rem 1.4rem;
  margin-bottom:.8rem;transition:.35s var(--ease);display:block}
.res:hover{border-color:var(--brand);transform:translateX(4px);box-shadow:var(--s1)}
.res .tipo{font-size:var(--t-xs);font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand)}
.res h3{margin:.3rem 0 .25rem}
.res p{color:var(--muted);}
.res mark{background:rgba(196,98,42,.22);color:inherit;padding:0 .1em;border-radius:2px}
.buscar-caja{display:flex;gap:.6rem;max-width:640px;margin-bottom:1.6rem}
.buscar-caja input{flex:1;padding:.95rem 1.1rem;border:1px solid var(--borde);
  border-radius:var(--r-sm);font-size:var(--t-base);background:var(--sup)}
.buscar-caja input:focus{border-color:var(--brand);outline:none}
.sin-res{color:var(--muted);padding:1.5rem 0}
.sugerencias{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}
.sugerencias a{font-size:var(--t-sm);border:1px solid var(--borde);border-radius:99px;
  padding:.35rem .85rem;color:var(--muted);transition:.25s}
.sugerencias a:hover{border-color:var(--brand);color:var(--brand)}

/* ---- artículo de detalle ---- */
.articulo{max-width:760px;margin-inline:auto}
.articulo .meta{display:flex;gap:1.2rem;flex-wrap:wrap;color:var(--muted);font-size:var(--t-sm);
  padding-bottom:1.2rem;margin-bottom:1.8rem;border-bottom:1px solid var(--borde)}
.articulo h1{font-size:clamp(1.8rem,1.4rem + 2.2vw,2.9rem);margin-bottom:.9rem}
.articulo .entradilla{font-size:var(--t-lg);color:var(--muted);margin-bottom:1.8rem;line-height:1.75}
.articulo figure{border-radius:var(--r);overflow:hidden;margin-bottom:1.8rem;box-shadow:var(--s2)}
.articulo p{margin-bottom:1.1rem}
.articulo h2{margin:2.4rem 0 .9rem}
.volver{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;color:var(--brand);
  margin-bottom:1.6rem}
.volver:hover{gap:.75rem}
.relacionados{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--borde)}

/* ---- 404 ---- */
.p404{text-align:center;padding-block:clamp(4rem,10vw,7rem)}
.p404 .num{font-family:var(--fd);font-size:clamp(5rem,16vw,10rem);line-height:1;color:var(--brand);
  opacity:.22}
.p404 h1{font-size:clamp(1.7rem,1.3rem + 1.8vw,2.6rem);margin:-.5rem 0 .8rem}
.p404 p{color:var(--muted);max-width:52ch;margin:0 auto 2rem}
.p404 .btns{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap}

@media print{
  .utilidad,.cab,.migas,.ayuda,.accesos,footer .pie-legal,footer .pie-sellos{display:none!important}
  body{background:#fff;color:#000} .hero{min-height:0;background:none}
  .hero .velo,.hero .pic{display:none} .hero h1{color:#000}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:.8em;color:#555}
}

/* ---- El mega menú sólo se abre con ratón. En pantalla táctil el :hover se
   queda "pegado" tras tocar y el desplegable tapaba el contenido. ---- */
@media (hover:hover) and (pointer:fine){
  .tiene-mega:hover .mega{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0) scale(1)}
  .tiene-mega:hover .mega a{opacity:1;transform:none}
}
@media (hover:none),(pointer:coarse){
  .tiene-mega:hover .mega{opacity:0;visibility:hidden}
  .tiene-mega.abierto .mega{opacity:1;visibility:visible}
  /* nada se queda en estado "hover" al tocar */
  .tarj:hover,.persona:hover,.proy:hover,.cifra:hover,.fruto:hover,
  .placa:hover,.acceso:hover,.noticia:hover{transform:none}
  .acceso:hover{color:var(--ink)!important}
  .acceso:hover::before{transform:translateY(101%)}
  .acceso:hover .ic-caja{background:var(--brand);transform:none}
  /* en táctil la descripción del fruto va siempre visible */
  .fruto span{max-height:none;opacity:1}
}

/* ---- FALLO CORREGIDO -------------------------------------------------
   La cabecera usa backdrop-filter. Un elemento con backdrop-filter se
   convierte en el "marco de referencia" de sus hijos con position:fixed:
   por eso el menú móvil, que es hijo de la cabecera, sólo ocupaba el alto
   del encabezado en vez de la pantalla completa. Mientras el menú está
   abierto se quita ese filtro de la cabecera y el panel vuelve a cubrir
   toda la pantalla. */
body.menu-abierto .cab{
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
  background:transparent!important;box-shadow:none!important;border-bottom-color:transparent!important}
body.menu-abierto .cab::after{display:none}
body.menu-abierto .utilidad{max-height:0;opacity:0;overflow:hidden;padding-block:0}

@media (max-width:1080px){
  /* el menú de escritorio no debe ocupar sitio ni asomarse */
  .nav:not(.abierta){display:none!important}
  .nav.abierta{display:flex!important;position:fixed!important;inset:0!important;
    z-index:700;background:var(--bg)!important;background-image:none;
    flex-direction:column;align-items:stretch;gap:0;margin:0;
    padding:5.2rem 1.2rem 3rem;overflow-y:auto;overscroll-behavior:contain;
    animation:menuEntra .32s var(--ease)}
  @keyframes menuEntra{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
  .nav.abierta>li{border-bottom:1px solid var(--borde)}
  .nav.abierta>li>a,.nav.abierta>li>button{width:100%;justify-content:space-between;
    padding:1.05rem .3rem;font-size:var(--t-lg);font-weight:700}
  .nav.abierta>li>a::after,.nav.abierta>li>button::after{display:none}
  /* el botón de cerrar queda por encima del panel */
  .hamb{position:relative;z-index:760}
  body.menu-abierto .hamb{position:fixed;top:.6rem;right:.9rem}
  body.menu-abierto .hamb span{background:var(--ink)}
  /* deja sitio arriba para el botón de cerrar */
  .nav.abierta{padding-top:4.6rem}
  .nav.abierta .mega{position:static;transform:none!important;opacity:1!important;
    visibility:visible!important;box-shadow:none;border:0;background:none;
    padding:0 0 .7rem 1rem;min-width:0;display:none}
  .nav.abierta li.abierto .mega{display:block}
  .nav.abierta .mega a{opacity:1!important;transform:none!important}
}

@media (max-width:900px){
  /* ---- portada más contenida ---- */
  .hero{height:clamp(460px,72svh,620px)}
  /* En móvil el texto va sobre la foto sin columna libre a la derecha:
     el velo debe ser mucho más marcado o el titular no se lee. */
  .diapo .velo{background:
    linear-gradient(180deg,rgba(6,20,14,.55) 0%,rgba(6,20,14,.40) 34%,
                    rgba(6,20,14,.72) 70%,rgba(6,20,14,.92) 100%)!important}
  .diapo h1,.diapo h2{text-shadow:0 3px 18px rgba(0,0,0,.75)}
  .diapo p{text-shadow:0 2px 12px rgba(0,0,0,.8);color:#fff}
  .diapo .caja{max-width:100%}
  /* logo más discreto en la cabecera */
  .marco-logo{padding:.3rem .34rem;border-radius:10px}
  .marco-logo svg,.marco-logo img{width:132px;height:auto}
  .cab-in{gap:.6rem}
  .diapo .caja{padding-block:2.2rem}
  .diapo h1,.diapo h2{font-size:clamp(1.55rem,6.4vw,2.3rem)}
  .diapo p{margin:.8rem 0 1.3rem}
  .diapo .btns{flex-direction:column;align-items:stretch;gap:.55rem}
  .diapo .btns .btn{width:100%;justify-content:center}
  .puntos{bottom:1rem}

  /* ---- accesos: sin margen negativo, no deben pisar la portada ---- */
  .accesos{margin-top:0!important;padding-top:1.4rem;padding-bottom:.6rem}
  .acceso{flex-direction:row!important;align-items:center;gap:.85rem;
    padding:.95rem 1.1rem!important;font-size:var(--t-base)}
  .acceso .ic-caja{width:38px;height:38px;flex:none}
  .acceso .flecha-a{display:none}

  /* ---- FRUTOS: en movil, una ficha por pantalla y se arrastra ----
     Ya no es una rejilla: es la cinta del carrusel, asi que aqui solo
     se ajusta el ancho de la ficha, no las columnas. */
  .fruto{flex-basis:min(78vw,300px)}
  .fruto figcaption{padding:.9rem}
  .frutos-lista span{font-size:var(--t-xs);padding:.42rem .85rem}

  /* ---- tarjetas que giran: más bajas ---- */
  .giros{grid-template-columns:1fr 1fr;gap:.6rem}
  .giro{aspect-ratio:1/1}
  .giro-cara figcaption{padding:1.6rem .7rem .7rem;font-size:var(--t-xs)}

  /* ---- mosaico ---- */
  .mosaico{grid-template-columns:1fr 1fr;grid-auto-rows:110px;gap:.5rem}
  .mos:nth-child(1){grid-column:span 2;grid-row:span 2}
  .mos:nth-child(6){grid-column:span 2}
  .mos figcaption{font-size:var(--t-xs);padding:1.4rem .6rem .55rem}

  /* ---- cifras ---- */
  .cifra-cab{padding:1.1rem}
  .cifra-tit{font-size:var(--t-base)}
  .cifra b{font-size:var(--t-2xl)}
  .cifra .et{font-size:var(--t-xs)}

  /* ---- bloque de apoyo ---- */
  .apoyo .banda{height:34%}
  .apoyo-cu{padding:1.4rem}
  .apoyo-fig{aspect-ratio:16/9}

  /* ---- aliados ---- */
  .placa{width:150px;height:88px;padding:.8rem;filter:none;opacity:1}

  /* ---- ventana emergente a pantalla completa ---- */
  .modal{padding:0}
  .modal-caja{width:100%;max-height:100svh;height:100svh;border-radius:0;
    grid-template-columns:1fr;align-content:start;overflow-y:auto}
  .modal-fig{aspect-ratio:16/10;min-height:0}
  .modal-cu{padding:1.3rem 1.2rem 2rem}
  .modal-datos{grid-template-columns:1fr}
  .modal-pie{flex-wrap:wrap;gap:.8rem}
  .modal-nav{margin-left:0}

  /* ---- botones flotantes que no estorben ---- */
  .arriba{width:42px;height:42px;bottom:calc(clamp(.7rem,2vw,1rem) + 58px)}
  .ayuda-btn{padding:.8rem;border-radius:50%}
  .ayuda-panel{width:min(250px,calc(100vw - 2rem))}
}

@media (max-width:560px){
  .giros{grid-template-columns:1fr}
  .giro{aspect-ratio:4/3}
  /* la ficha del carrusel mantiene su proporcion vertical: es lo que
     da presencia a la fotografia del fruto */
  .mosaico{grid-auto-rows:96px}
  .accesos .env{gap:.5rem}
  .bajada{font-size:var(--t-base)}
  main>section{padding-block:2.4rem}
  .tiempo{padding-left:2rem}
  .tabla{font-size:var(--t-sm)}
  .tabla th,.tabla td{padding:.7rem .6rem}
}

/* nada se sale del ancho de la pantalla */
@media (max-width:900px){
  html{max-width:100%;overflow-x:clip}
  body{max-width:100%;overflow-x:visible}
  .env{max-width:100%}
}

/* ==================================================================
   1 · BARRA DE PROGRESO DE LECTURA
   ================================================================== */
#progreso{position:fixed;top:0;left:0;height:3px;width:0;z-index:9998;
  background:linear-gradient(90deg,var(--brand),var(--vivo) 45%,var(--sol) 75%,var(--cielo));
  transition:width .12s linear;pointer-events:none;border-radius:0 3px 3px 0}

/* ==================================================================
   2 · RESPUESTA AL PULSAR (raton, teclado y dedo)
   ================================================================== */
.btn,.acceso,.cifra,.giro,.tarj,.res,.noticia,.fruto,.placa,.persona,.hito,
.nav>li>a,.nav>li>button,.utilidad a,.utilidad button,.leer,.volver,.chip{
  -webkit-tap-highlight-color:transparent;touch-action:manipulation}
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn:active{transform:scale(.97)}
.btn .onda{position:absolute;border-radius:50%;transform:scale(0);z-index:-1;
  background:rgba(255,255,255,.45);pointer-events:none}
.btn.sec .onda,.btn.claro .onda{background:rgba(11,122,31,.18)}
@keyframes onda{to{transform:scale(2.6);opacity:0}}

/* tarjetas: se elevan con el cursor y se hunden al pulsar */
.tarj,.res,.noticia,.persona,.hito,.fruto{
  transition:transform .38s var(--ease),box-shadow .38s var(--ease),border-color .3s}
.tarj:hover,.res:hover,.noticia:hover,.persona:hover,.hito:hover,.fruto:hover{
  transform:translateY(-6px);box-shadow:var(--s2);border-color:var(--vivo)}
.tarj:active,.res:active,.noticia:active,.persona:active,.fruto:active{
  transform:translateY(-2px) scale(.995)}

/* ==================================================================
   3 · ENLACES DE TEXTO CON SUBRAYADO QUE CRECE
   ================================================================== */
main p a:not(.btn):not(.leer):not(.volver),
.pie-legal a,.mapa-sitio a{
  color:var(--brand);font-weight:600;background-image:linear-gradient(var(--vivo),var(--vivo));
  background-size:0% 2px;background-repeat:no-repeat;background-position:0 100%;
  transition:background-size .35s var(--ease),color .25s}
main p a:not(.btn):not(.leer):not(.volver):hover,
main p a:not(.btn):not(.leer):not(.volver):focus-visible{background-size:100% 2px}

/* flecha de «Leer más» que avanza */
.leer,.volver{transition:gap .3s var(--ease),color .25s}
.leer .ic,.volver .ic{transition:transform .3s var(--ease)}
.leer:hover .ic,.volver:hover .ic{transform:translateX(5px)}
.volver:hover .ic{transform:translateX(-5px)}

/* ==================================================================
   4 · MENÚ PRINCIPAL: indicador vivo y despliegue suave
   ================================================================== */
.nav>li>a,.nav>li>button{position:relative}
.nav>li>a::after,.nav>li>button::after{content:'';position:absolute;left:50%;right:50%;
  bottom:4px;height:2.5px;border-radius:3px;background:var(--vivo);
  transition:left .32s var(--ease),right .32s var(--ease)}
.nav>li>a:hover::after,.nav>li>button:hover::after,
.nav>li>a:focus-visible::after,.nav>li.activo>a::after{left:14%;right:14%}
.mega{transform:translateY(10px) scale(.985);transition:opacity .28s var(--ease),
  transform .28s var(--ease),visibility .28s}
.nav>li:hover>.mega,.nav>li:focus-within>.mega,.nav>li.abierto>.mega{
  transform:translateY(0) scale(1)}
.mega a{transition:background .25s,color .25s,padding-left .25s}
.mega a:hover,.mega a:focus-visible{padding-left:1.15rem}

/* ==================================================================
   5 · FORMULARIOS QUE CONVERSAN CON EL USUARIO
   ================================================================== */
.campo{position:relative}
input,select,textarea{transition:border-color .25s,box-shadow .25s,background .25s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);
  box-shadow:0 0 0 4px rgba(34,195,33,.18)}
input:user-invalid,textarea:user-invalid{border-color:#C0392B;
  box-shadow:0 0 0 4px rgba(192,57,43,.12)}
input:user-valid,textarea:user-valid{border-color:var(--vivo)}
.campo .aviso{display:block;margin-top:.35rem;font-size:var(--t-sm);color:#C0392B;
  max-height:0;overflow:hidden;transition:max-height .3s var(--ease)}
.campo.mal .aviso{max-height:60px}
.contador-txt{display:block;text-align:right;font-size:var(--t-xs);color:var(--muted);margin-top:.3rem}

/* mensaje flotante de confirmación */
.brindis{position:fixed;left:50%;bottom:28px;transform:translate(-50%,140%);
  z-index:9999;background:var(--oscuro);color:#fff;padding:.9rem 1.3rem;border-radius:999px;
  box-shadow:var(--s3);font-weight:600;font-size:var(--t-sm);display:flex;align-items:center;gap:.6rem;
  transition:transform .5s var(--ease);max-width:92vw}
.brindis.ver{transform:translate(-50%,0)}
.brindis.mal .pt{background:#E74C3C;color:#fff}
.brindis .pt{width:22px;height:22px;border-radius:50%;background:var(--vivo);
  display:grid;place-items:center;color:var(--oscuro);font-size:var(--t-xs);flex:none}

/* ==================================================================
   6 · FOTOGRAFÍAS: acercamiento suave y entrada al cargar
   ================================================================== */
figure .pic img,.mos .pic img{transition:transform .9s var(--ease),filter .5s}
figure:hover .pic img,.mos:hover .pic img{transform:scale(1.05)}
.giro .pic img{transition:none}
img.cargando{opacity:0}
img.cargada{animation:aparecer .7s var(--ease) both}
@keyframes aparecer{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}

/* ==================================================================
   7 · PREGUNTAS FRECUENTES Y PLEGABLES
   ================================================================== */
details{border:1px solid var(--borde);border-radius:var(--r);background:var(--sup);
  margin-bottom:.7rem;overflow:hidden;transition:border-color .3s,box-shadow .3s}
details[open]{border-color:var(--vivo);box-shadow:var(--s1)}
summary{cursor:pointer;padding:1rem 1.15rem;font-weight:700;list-style:none;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:52px}
summary::-webkit-details-marker{display:none}
summary::after{content:'+';font-size:var(--t-xl);line-height:1;color:var(--brand);
  transition:transform .35s var(--ease);flex:none}
details[open] summary::after{transform:rotate(45deg)}
summary:hover{background:var(--menta)}
details>*:not(summary){padding:0 1.15rem 1.1rem;color:var(--muted)}

/* ==================================================================
   8 · DESPLAZAMIENTO Y DETALLES FINOS
   ================================================================== */
*{scrollbar-width:thin;scrollbar-color:var(--brand) rgba(0,0,0,.06)}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:var(--brand);border-radius:8px;
  border:3px solid var(--bg)}
*::-webkit-scrollbar-track{background:transparent}
.arriba{transition:transform .4s var(--ease),opacity .4s,background .3s}
.arriba:hover{transform:translateY(-5px) scale(1.06);background:var(--vivo);color:var(--oscuro)}
.ayuda-btn{animation:latido 3.4s ease-in-out infinite}
@keyframes latido{0%,88%,100%{transform:none}92%{transform:scale(1.06)}96%{transform:scale(1.02)}}
.ayuda-btn:hover{animation:none}

/* ------------------------------------------------------------------
   Tamaño mínimo de destino (WCAG 2.2, 24x24 px) en TODAS las pantallas,
   no sólo en las táctiles. Se consigue con relleno, sin cambiar el aspecto.
   ------------------------------------------------------------------ */
.pie-top a,.pie-legal a,.idioma a,.mapa-sitio a{
  display:inline-flex;align-items:center;min-height:24px}
.pie-top li,.pie-legal li{margin-block:.15rem}
.idioma a{min-width:26px;justify-content:center}

/* pista de que se puede pulsar */
.cifra,.giro,.fruto{cursor:pointer}
.cifra:hover .ic,.cifra:focus-visible .ic{transform:scale(1.12) rotate(-6deg)}

/* ==================================================================
   9 · PANTALLA TÁCTIL: nada depende del cursor
   ================================================================== */
@media (hover:none),(pointer:coarse){
  /* el efecto de elevación se cambia por respuesta al pulsar */
  .tarj:hover,.res:hover,.noticia:hover,.persona:hover,.hito:hover,.fruto:hover{
    transform:none;box-shadow:var(--s1)}
  .tarj:active,.res:active,.noticia:active,.fruto:active,.acceso:active,.placa:active{
    transform:scale(.97);box-shadow:var(--s2);border-color:var(--vivo)}
  figure:hover .pic img,.mos:hover .pic img{transform:none}
  /* las marcas de «pulsable» quedan siempre visibles */
  .giro-marca,.cifra .mas{opacity:1!important}
  .placa{filter:none;opacity:1}
  /* áreas de toque cómodas */
  .nav>li>a,.nav>li>button,.mega a,.utilidad a,.utilidad button,
  .pie a,.leer,.volver,summary{min-height:44px;display:flex;align-items:center}
  .txt-tam button{min-width:44px;min-height:44px}
  .idioma a{min-width:44px;min-height:44px;display:inline-flex;
    align-items:center;justify-content:center}
}

/* ==================================================================
   10 · MOVIMIENTO REDUCIDO: se respeta la preferencia del sistema
   ================================================================== */
@media (prefers-reduced-motion:reduce){
  #progreso,.btn,.tarj,.res,.noticia,.persona,.hito,.fruto,
  figure .pic img,.mega,.arriba,.ayuda-btn{transition:none!important;animation:none!important}
  .btn .onda{display:none}
  html{scroll-behavior:auto}
}

/* ==================================================================
   0 · VARIABLES ANIMABLES  (@property)
   Una variable CSS normal no se puede animar porque el navegador no
   sabe que tipo es. Al declararla con @property si se puede.
   ================================================================== */
@property --ang{syntax:'<angle>';inherits:false;initial-value:0deg}
@property --brillo{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --tinte{syntax:'<color>';inherits:false;initial-value:transparent}

/* ==================================================================
   1 · TRANSICION ENTRE PAGINAS
   El sitio deja de parpadear en blanco al cambiar de pagina: el
   navegador toma una foto del estado anterior y funde con el nuevo.
   ================================================================== */
@view-transition{navigation:auto}
::view-transition-old(root){animation:sale .28s cubic-bezier(.4,0,1,1) both}
::view-transition-new(root){animation:entra .42s cubic-bezier(0,0,.2,1) both}
@keyframes sale{to{opacity:0;transform:translateY(-8px)}}
@keyframes entra{from{opacity:0;transform:translateY(10px)}}
/* la cabecera y el logo no se funden: se mantienen fijos y dan
   sensacion de que la pagina es una sola aplicacion */
.cab{view-transition-name:cabecera}
/* El nombre de transicion debe ser UNICO en el documento. Habia dos
   .marco-logo (cabecera y pie) con el mismo nombre, y eso aborta la
   transicion con "duplicate view-transition-name". Se deja solo el
   de la cabecera, que es el que viaja de una pagina a otra. */
.cab .marco-logo{view-transition-name:logo}
footer{view-transition-name:pie}

/* ==================================================================
   2 · ANIMACIONES LIGADAS AL SCROLL (sin JavaScript)
   ================================================================== */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){

    /* 2.1 · barra de lectura movida por el propio scroll del documento.
       Corre en el compositor: no gasta hilo principal. */
    #progreso{animation:llenar linear;animation-timeline:scroll(root block);
      transition:none}
    @keyframes llenar{from{width:0}to{width:100%}}

    /* 2.2 · las fotografias entran con una cortina que se abre y un
       leve acercamiento, en funcion de lo que asoman por la pantalla */
    .mos .pic,.fruto .pic,.noticia .im .pic,.tarj .pic,
    .partido figure .pic{
      animation:cortina linear both;
      animation-timeline:view(block);
      animation-range:entry 6% cover 34%}
    @keyframes cortina{
      from{clip-path:inset(0 0 100% 0);transform:scale(1.09)}
      to  {clip-path:inset(0 0 0 0);   transform:scale(1)}}

    /* 2.3 · parallax suave dentro del carrusel: la foto se mueve mas
       despacio que la pagina */
    .diapo .pic img{animation:parallax linear both;
      animation-timeline:view(block);animation-range:cover;
      will-change:transform}
    @keyframes parallax{from{transform:translateY(-4%) scale(1.06)}
      to{transform:translateY(4%) scale(1.06)}}

    /* 2.4 · los titulos de seccion se asientan: llegan con las letras
       algo separadas y se recogen */
    .tit-sec{
      animation:asienta linear both;
      animation-timeline:view(block);animation-range:entry 10% cover 26%}
    @keyframes asienta{
      from{opacity:.35;letter-spacing:.06em;transform:translateY(16px)}
      to  {opacity:1;letter-spacing:-.022em;transform:none}}

    /* 2.5 · las placas de aliados asoman escalonadas al entrar en pantalla */
    .placa{animation:asoma linear both;
      animation-timeline:view(block);animation-range:entry 4% cover 22%}
    @keyframes asoma{from{opacity:.25;transform:translateY(18px) scale(.96)}
      to{opacity:1;transform:none}}

    /* 2.6 · la cinta de colores del logo crece a medida que se avanza */
    .cinta-logo i{animation:crece linear both;
      animation-timeline:scroll(root block);transform-origin:left}
    @keyframes crece{from{transform:scaleX(.15)}to{transform:scaleX(1)}}
  }
}

/* ==================================================================
   3 · BORDE DE DEGRADADO EN MOVIMIENTO  (@property + conic-gradient)
   El angulo es una variable animable, asi que el degradado gira de
   verdad. Antes esto obligaba a trucos con pseudoelementos y mascaras.
   ================================================================== */
.acceso,.tarj,.giro,.fruto,.cifra{position:relative;isolation:isolate}
.acceso::after,.tarj::after,.cifra::after{
  content:'';position:absolute;inset:-1px;z-index:-1;border-radius:inherit;
  padding:1.5px;opacity:0;transition:opacity .4s var(--ease);
  background:conic-gradient(from var(--ang),
    var(--brand),var(--vivo) 25%,var(--sol) 50%,var(--cielo) 75%,var(--brand));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude}
.acceso:hover::after,.acceso:focus-visible::after,
.tarj:hover::after,.cifra:hover::after,.cifra.abierta::after{
  opacity:1;animation:girar 4s linear infinite}
@keyframes girar{to{--ang:360deg}}

/* ==================================================================
   4 · FOCO QUE SIGUE AL CURSOR
   Una sola escucha de pointermove escribe dos variables; el resto es
   CSS. Da la sensacion de que la tarjeta esta iluminada por una luz.
   ================================================================== */
.tarj,.res,.noticia,.fruto,.cifra{--mx:50%;--my:50%}
/* OJO: .acceso queda FUERA. Su ::before es el relleno verde que sube al
   pasar el cursor; si se reutiliza aqui, la tarjeta se queda en blanco y
   el texto, que pasa a blanco, desaparece. */
.tarj::before,.res::before,.noticia::before{
  content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;
  opacity:0;transition:opacity .45s var(--ease);
  background:radial-gradient(240px circle at var(--mx) var(--my),
    color-mix(in oklab,var(--vivo) 22%,transparent),transparent 62%)}
.tarj:hover::before,.res:hover::before,.noticia:hover::before{opacity:1}

/* ------------------------------------------------------------------
   ACCESOS DIRECTOS · al pasar el cursor la tarjeta se llena de verde
   ------------------------------------------------------------------ */
.acceso{--mx:50%;--my:50%;transition:color .3s var(--ease),
  transform .42s var(--ease),box-shadow .42s var(--ease)}
.acceso::before{background:linear-gradient(150deg,
  var(--brand) 0%,var(--vivo) 62%,color-mix(in oklab,var(--vivo) 70%,var(--sol)) 100%)!important}
.acceso:hover,.acceso:focus-visible{
  color:#fff!important;transform:translateY(-7px);
  box-shadow:0 22px 44px color-mix(in oklab,var(--brand) 35%,transparent)}
.acceso:hover .ic-caja,.acceso:focus-visible .ic-caja{
  background:rgba(255,255,255,.24)!important;color:#fff!important}
.acceso:hover .flecha-a,.acceso:focus-visible .flecha-a{color:#fff;opacity:1}
/* el borde de degradado sobra cuando la tarjeta ya es verde entera */
.acceso:hover::after,.acceso:focus-visible::after{opacity:0;animation:none}

/* ==================================================================
   5 · EL PADRE REACCIONA AL HIJO  ( :has() )
   Al pasar el cursor por una tarjeta, las hermanas se apagan un poco.
   Enfoca la atencion sin necesidad de JavaScript.
   ================================================================== */
@media (hover:hover) and (pointer:fine){
  .accesos .env:has(.acceso:hover) .acceso:not(:hover),
  .rejilla:has(.tarj:hover) .tarj:not(:hover),
  .frutos:has(.fruto:hover) .fruto:not(:hover),
  .giros:has(.giro:hover) .giro:not(:hover),
  .cifras:has(.cifra:hover) .cifra:not(:hover){
    opacity:.55;filter:saturate(.6);transition:opacity .4s,filter .4s}
}
/* si hay una ficha de cifra abierta, el resto de la pagina se atenua */
body:has(.modal.on) main>section:not(.sec-cifras){filter:saturate(.75)}
/* si el buscador esta abierto, la cabecera se oscurece */
.cab:has(#buscador.on){background:var(--oscuro);color:#fff}

/* ==================================================================
   6 · ENTRADAS SIN JAVASCRIPT  ( @starting-style )
   ================================================================== */
@supports (transition-behavior: allow-discrete){
  .mega{transition:opacity .3s var(--ease),transform .3s var(--ease),
    display .3s allow-discrete,overlay .3s allow-discrete}
  @starting-style{
    .nav>li:hover>.mega,.nav>li.abierto>.mega{opacity:0;transform:translateY(14px)}}
  .brindis{transition:transform .5s var(--ease),display .5s allow-discrete}
  @starting-style{.brindis.ver{transform:translate(-50%,150%)}}
  .modal-caja{transition:opacity .4s var(--ease),transform .4s var(--ease)}
  @starting-style{.modal.on .modal-caja{opacity:0;transform:translateY(24px) scale(.97)}}
}

/* ==================================================================
   7 · CADA TARJETA SE ADAPTA A SU PROPIO ANCHO (consultas de contenedor)
   Antes todo dependia del ancho de la ventana; ahora una misma tarjeta
   se ve bien en una columna estrecha o en una ancha.
   ================================================================== */
/* .frutos sale de aqui: "container-type:inline-size" aplica contencion
   de tamano en el eje en linea, asi que el ancho de la cinta lo fijaba
   el contenedor y "width:max-content" se quedaba en nada. Sin ancho
   sobrante no habia nada que desplazar. */
.rejilla,.noticias,.cifras{container-type:inline-size}
@container (max-width: 420px){
  .tarj h3,.noticia .cu h3{font-size:var(--t-base);line-height:1.25}
  .tarj p,.noticia .cu p{font-size:var(--t-sm)}
  .cifra b,.cifra b .num-g{font-size:var(--t-2xl)!important}
}

/* ==================================================================
   8 · TIPOGRAFIA MEJOR COMPUESTA
   ================================================================== */
h1,h2,h3,.tit-sec{text-wrap:balance}
p,.bajada,.entradilla,.des{text-wrap:pretty}
.titulo,h1,h2{font-synthesis:none}

/* ==================================================================
   9 · DETALLES DE COLOR CALCULADOS  ( color-mix )
   Los tintes salen del propio color de marca: si cambia la marca,
   cambian solos.
   ================================================================== */
.mega a:hover,.res:hover,.leer:hover{
  background:color-mix(in oklab,var(--vivo) 12%,transparent)}
.btn:hover{background:color-mix(in oklab,var(--vivo) 88%,var(--brand))}
.utilidad a:hover,.utilidad button:hover{
  color:color-mix(in oklab,var(--sol) 70%,#fff)}
::selection{background:color-mix(in oklab,var(--vivo) 28%,transparent)}

/* ==================================================================
   10 · GALERIAS QUE SE RECORREN CON EL DEDO (scroll snap)
   ================================================================== */
@media(max-width:760px){
  /* .frutos ya no entra aqui: tiene su propio carrusel, que funciona
     igual en movil y en escritorio. Este bloque solo queda para los
     giros, que siguen siendo una galeria que se recorre con el dedo. */
  .giros{display:flex;overflow-x:auto;gap:.8rem;
    scroll-snap-type:x proximity;scroll-padding-inline:1rem;
    scrollbar-width:none;padding-bottom:.4rem}
  .giros::-webkit-scrollbar{display:none}
  .giro{flex:0 0 78%;scroll-snap-align:center}
  .giros::after{content:'';flex:0 0 .5rem}
}

/* ==================================================================
   11 · ENFOQUE VISIBLE Y ELEGANTE
   ================================================================== */
:focus-visible{outline:2px solid var(--cielo);outline-offset:3px;
  border-radius:6px}
.btn:focus-visible,.acceso:focus-visible{outline-offset:5px}


/* ==================================================================
   13 · LA FOTOGRAFIA DEL CARRUSEL CONTRASTA CON EL VERDE DE LA MARCA
   El velo anterior era verde oscuro (rgba(8,26,18)), del mismo tono que
   el resto del sitio: la foto se fundia con el diseno y nada resaltaba.
   Ahora el velo es un negro FRIO, ligeramente azulado, y la imagen se
   gradua hacia el cian. El verde de la marca queda como el unico verde
   saturado de la escena y salta a la vista.
   ================================================================== */
.diapo .velo{
  background:
    /* lateral: oscurece donde va el texto, para que el blanco se lea */
    linear-gradient(96deg,rgba(4,12,20,.88) 0%,rgba(4,12,20,.62) 36%,
      rgba(4,12,20,.20) 68%,rgba(4,12,20,.06) 100%),
    /* vertical: asienta la escena arriba y abajo */
    linear-gradient(180deg,rgba(4,12,20,.42) 0%,transparent 34%,rgba(4,12,20,.52) 100%),
    /* un punto de azul frio en la esquina opuesta al verde de los botones */
    radial-gradient(75% 90% at 88% 12%,
      color-mix(in oklab,var(--cielo) 22%,transparent),transparent 60%)!important}

/* la imagen se enfria y gana cuerpo: mas contraste, negros mas profundos
   y los verdes del monte desplazados hacia el cian */
.diapo .pic img{
  filter:contrast(1.16) saturate(1.12) brightness(.9) hue-rotate(-8deg)}

/* filete verde de marca al pie del carrusel: separa la foto del cuerpo
   de la pagina y devuelve el color institucional donde toca */
.hero::after{content:'';position:absolute;left:0;right:0;bottom:0;height:5px;z-index:9;
  background:linear-gradient(90deg,var(--brand),var(--vivo) 45%,var(--sol) 75%,var(--cielo));
  pointer-events:none}

/* los elementos verdes de la portada se refuerzan sobre el fondo frio */
.hero .btn{box-shadow:0 10px 30px color-mix(in oklab,var(--vivo) 45%,transparent)}
.hero .eyebrow{color:var(--sol);text-shadow:0 1px 12px rgba(0,0,0,.55)}
.diapo .caja h2,.diapo .caja h1{text-shadow:0 2px 24px rgba(4,12,20,.55)}
.punto.on{background:var(--vivo);box-shadow:0 0 14px color-mix(in oklab,var(--vivo) 70%,transparent)}

/* en pantalla pequena el velo aprieta mas: la foto se ve a menor tamano
   y el texto necesita mas respaldo */
@media(max-width:760px){
  .diapo .velo{background:
    linear-gradient(180deg,rgba(4,12,20,.55) 0%,rgba(4,12,20,.35) 40%,rgba(4,12,20,.80) 100%),
    radial-gradient(80% 60% at 80% 8%,
      color-mix(in oklab,var(--cielo) 18%,transparent),transparent 62%)!important}
  .diapo .pic img{filter:contrast(1.2) saturate(1.08) brightness(.84) hue-rotate(-8deg)}
}


/* ==================================================================
   14 · EL AZUL DEL LOGO ENTRA AL DISENO
   Hasta ahora el azul solo aparecia en la cinta de cuatro franjas y en
   el foco del teclado. Se le da un PAPEL, no un adorno:

       VERDE  = territorio, monte, gobierno propio
       AZUL   = agua, rio, y la atencion institucional

   Es la lectura natural para un consejo de cuenca: lo que da la tierra
   va en verde y lo que corre por el rio —y los tramites que atienden a
   la gente— va en azul.
   ================================================================== */
:root{
  --azul:#1573C4;                    /* azul del logo oscurecido a nivel AA */
  --azul-hondo:#0B3D6B;              /* para fondos */
  --azul-agua:color-mix(in oklab,var(--cielo) 14%,transparent);
}

/* 14.1 · barra superior: verde profundo que vira a azul, como el rio
   entrando al mar */
.utilidad{background:linear-gradient(100deg,var(--oscuro) 0%,
  color-mix(in oklab,var(--azul-hondo) 72%,var(--oscuro)) 100%)!important}
.utilidad a:hover,.utilidad button:hover{color:var(--sol)}

/* 14.2 · pie de pagina: el mismo viaje, al reves */
footer{background:linear-gradient(190deg,
  color-mix(in oklab,var(--azul-hondo) 60%,var(--oscuro)) 0%,
  var(--oscuro) 62%)!important}
footer h4{color:color-mix(in oklab,var(--cielo) 55%,#fff)}
.pie-legal a:hover{color:var(--cielo)}

/* 14.3 · TRAMITES Y ATENCION en azul: es el lado institucional */
.tarj .chapa{background:color-mix(in oklab,var(--cielo) 16%,transparent);
  color:var(--azul)}
.tarj:hover .chapa{background:var(--azul);color:#fff;transform:rotate(-7deg) scale(1.06)}
.tarj:hover{border-color:var(--cielo)}
.tarj::before{background:radial-gradient(240px circle at var(--mx) var(--my),
  color-mix(in oklab,var(--cielo) 20%,transparent),transparent 62%)!important}
.tramites .eyebrow,#tramites .eyebrow,.sec-tramites .eyebrow{color:var(--azul)}

/* 14.4 · la cuenca y el agua: la cuarta cifra es «La cuenca» */
.cifra:nth-child(4) .ic{color:var(--azul)}
.cifra:nth-child(4) .barra i{background:linear-gradient(90deg,
  var(--azul),var(--cielo) 70%,color-mix(in oklab,var(--cielo) 55%,#fff))!important}

/* 14.5 · sala de prensa: fecha y enlace en azul, para distinguirla del
   contenido de territorio */
.noticia time{color:var(--azul)}
.noticia:hover{border-color:var(--cielo)}
.noticia:hover .leer{color:var(--azul)}
.leer:hover{color:var(--azul)}

/* 14.6 · migas y buscador: navegacion en azul, contenido en verde */
.migas a:hover{color:var(--azul);text-decoration-color:var(--cielo)}
.buscar-caja input:focus{border-color:var(--azul);
  box-shadow:0 0 0 4px color-mix(in oklab,var(--cielo) 22%,transparent)}
.sugerencias a:hover{border-color:var(--cielo);color:var(--azul);
  background:color-mix(in oklab,var(--cielo) 8%,transparent)}
.res:hover{border-color:var(--cielo)}
.res::before{background:radial-gradient(240px circle at var(--mx) var(--my),
  color-mix(in oklab,var(--cielo) 18%,transparent),transparent 62%)!important}

/* 14.7 · boton secundario en azul: la accion alternativa deja de ser
   un verde mas apagado y pasa a ser otra familia */
.btn.sec{border-color:var(--azul);color:var(--azul)}
.btn.sec:hover{background:var(--azul);border-color:var(--azul);color:#fff}
.btn.sec .onda{background:color-mix(in oklab,var(--cielo) 30%,transparent)}

/* 14.8 · formularios: el estado de foco pasa a azul; el de acierto se
   queda en verde. Asi el usuario distingue «estoy aqui» de «esto ya
   esta bien» sin leer nada */
input:focus,select:focus,textarea:focus{border-color:var(--azul)!important;
  box-shadow:0 0 0 4px color-mix(in oklab,var(--cielo) 22%,transparent)!important}

/* 14.9 · secciones de agua y territorio con un lavado azul muy tenue */
#territorio-inicio,.sec-alt{background-image:
  radial-gradient(60% 80% at 92% 0%,var(--azul-agua),transparent 62%)}

/* 14.10 · plegables y fichas: el borde abierto en azul */
details[open]{border-color:var(--cielo)}
summary:hover{background:color-mix(in oklab,var(--cielo) 8%,transparent)}
summary::after{color:var(--azul)}

/* 14.11 · el visor de imagenes y el modal reciben el azul en los mandos */
.modal-x:hover,.modal-nav button:hover{background:var(--azul);color:#fff}

/* 14.12 · en la portada, el segundo boton pasa a azul sobre la foto */
.hero .btn.sec,.diapo .btn.sec{border-color:#fff;color:#fff;
  background:color-mix(in oklab,var(--azul) 34%,transparent);
  backdrop-filter:blur(6px)}
.hero .btn.sec:hover,.diapo .btn.sec:hover{background:var(--azul);border-color:var(--azul)}

/* ==================================================================
   15 · PORTADA DE UNA SOLA IMAGEN, A PANTALLA COMPLETA
   Sin flechas ni puntos: no hay nada entre lo que elegir. La fotografia
   ocupa el alto util de la ventana, descontando la cabecera.
   ================================================================== */
.hero.unica{min-height:100svh;height:100svh}
.hero.unica .diapo{position:absolute;inset:0;opacity:1;visibility:visible}
.hero.unica .env{padding-bottom:clamp(3.5rem,7vw,6rem)}
/* La fotografia de portada es un grupo de personas: el encuadre se
   sube un poco para que las caras no queden cortadas por abajo, y el
   velo pasa a cargar el peso ABAJO en vez de a la izquierda, para no
   oscurecer los rostros. */
.hero.unica .diapo .pic img{object-position:center 38%}
.hero.unica .diapo .velo{background:
  linear-gradient(180deg,rgba(4,12,20,.42) 0%,rgba(4,12,20,.10) 28%,
    rgba(4,12,20,.30) 55%,rgba(4,12,20,.86) 100%),
  linear-gradient(88deg,rgba(4,12,20,.46) 0%,rgba(4,12,20,.14) 46%,transparent 78%)!important}
/* el texto baja al tercio inferior, sobre la parte oscura */
.hero.unica .env{display:flex;flex-direction:column;justify-content:flex-end}
.hero.unica .caja{max-width:60ch}
/* el agua ondulada sobra: aqui no hay rio */
.hero.unica .agua{display:none}

/* la senal de «sigue bajando», que es lo que reemplaza a los puntos */
.hero.unica::before{content:'';position:absolute;left:50%;bottom:1.6rem;z-index:9;
  width:26px;height:42px;margin-left:-13px;border:2px solid rgba(255,255,255,.55);
  border-radius:14px;pointer-events:none}
.hero.unica::after{height:5px}
.hero.unica .baja{position:absolute;left:50%;bottom:2.35rem;z-index:10;
  width:4px;height:8px;margin-left:-2px;border-radius:3px;background:#fff;
  animation:bajar 2.2s var(--ease) infinite}
@keyframes bajar{0%{transform:translateY(0);opacity:0}
  30%{opacity:1} 70%{transform:translateY(12px);opacity:1}
  100%{transform:translateY(14px);opacity:0}}
@media (prefers-reduced-motion: reduce){.hero.unica .baja{animation:none}}
@media(max-width:760px){
  .hero.unica{min-height:88svh;height:88svh}
  .hero.unica::before,.hero.unica .baja{display:none}
}


/* ==================================================================
   16 · LA PAGINA SE MUEVE CUANDO EL USUARIO LA TOCA
   El sitio se sentia quieto: los botones cambiaban de color y poco mas.
   Aqui se le da cuerpo a cada accion.
   ================================================================== */

/* 16.1 · ENTRADAS CON MAS RECORRIDO ------------------------------- */
.rev{transform:translateY(34px)}
.rev-e{transform:scale(.9) translateY(24px)}
.rev-i{transform:translateX(-52px)}
.rev-d{transform:translateX(52px)}
.rev,.rev-i,.rev-d,.rev-e{
  transition:opacity .8s var(--ease),transform .95s cubic-bezier(.16,1,.3,1)}
.rev.ok,.rev-i.ok,.rev-d.ok,.rev-e.ok{transform:none}

/* 16.2 · BOTONES CON DESTELLO QUE LOS RECORRE --------------------- */
.btn,.fh-btn{position:relative;overflow:hidden;isolation:isolate;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),
             background .3s,gap .3s var(--ease),letter-spacing .3s}
.btn::after,.fh-btn::after{content:'';position:absolute;top:0;bottom:0;width:45%;
  left:-60%;z-index:1;pointer-events:none;transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.38),transparent)}
.btn:hover::after,.btn:focus-visible::after,
.fh-btn:hover::after,.fh-btn:focus-visible::after{animation:destello-btn .75s var(--ease)}
@keyframes destello-btn{to{left:120%}}
.btn:hover,.fh-btn:hover{transform:translateY(-3px) scale(1.02)}
.btn:active,.fh-btn:active{transform:translateY(0) scale(.96);transition-duration:.09s}
/* la flecha del boton sale y vuelve a entrar por el otro lado */
.btn .ic{transition:transform .4s var(--ease)}
.btn:hover .ic{animation:flecha-va .55s var(--ease)}
@keyframes flecha-va{
  0%{transform:translateX(0);opacity:1}
  45%{transform:translateX(14px);opacity:0}
  55%{transform:translateX(-14px);opacity:0}
  100%{transform:translateX(0);opacity:1}}

/* 16.3 · INCLINACION 3D SIGUIENDO AL CURSOR ----------------------- */
@media (hover:hover) and (pointer:fine){
  .acceso,.tarj,.fruto,.cifra,.giro.suelto,.mz-cifra{
    transform-style:preserve-3d;
    transition:transform .4s var(--ease),box-shadow .4s var(--ease),
               border-color .3s,color .3s}
  .acceso:hover,.tarj:hover,.fruto:hover,.cifra:hover{
    transform:perspective(900px)
      rotateX(calc(var(--ty,0) * -5deg))
      rotateY(calc(var(--tx,0) * 5deg))
      translateY(-8px) scale(1.015)}
  /* el contenido se despega un poco del fondo de la tarjeta */
  .acceso>*,.tarj>*,.fruto figcaption{transition:transform .4s var(--ease)}
  .acceso:hover>*,.tarj:hover>*{transform:translateZ(26px)}
}

/* 16.4 · ICONOS QUE COBRAN VIDA ----------------------------------- */
.chapa,.ic-caja,.mz-ic,.cifra .ic{transition:transform .5s var(--ease),background .35s,color .35s}
.tarj:hover .chapa{transform:rotate(-8deg) scale(1.12)}
.cifra:hover .ic{transform:scale(1.2) rotate(-10deg)}
.placa:hover{transform:translateY(-8px) scale(1.06) rotate(-1.5deg)}
.persona:hover .avatar{transform:scale(1.1) rotate(-6deg);
  transition:transform .45s var(--ease)}

/* 16.5 · TITULOS QUE SE SUBRAYAN SOLOS AL ENTRAR ------------------ */
/* Trasladado al bloque 19: un solo sistema de titulos, clase .tit-sec. */

/* 16.6 · MENU QUE RESPONDE ---------------------------------------- */
.nav>li>a,.nav>li>button{transition:color .28s,background .28s,transform .28s var(--ease)}
.nav>li>a:hover,.nav>li>button:hover{transform:translateY(-2px)}
.mega a{transform-origin:left}
.mega a:hover{transform:translateX(3px)}
/* la hamburguesa se convierte en aspa */
.hamb span{transition:transform .38s var(--ease),opacity .25s,width .38s var(--ease)}
.hamb[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamb[aria-expanded="true"] span:nth-child(2){opacity:0;width:0}
.hamb[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* 16.7 · EL PIE Y LOS ENLACES DE LISTA ---------------------------- */
.pie-top a,.mapa-sitio a{display:inline-block;
  transition:transform .3s var(--ease),color .25s}
.pie-top a:hover,.mapa-sitio a:hover{transform:translateX(6px);color:var(--vivo)}
.pie-redes a{transition:transform .4s var(--ease),background .3s}
.pie-redes a:hover{transform:translateY(-5px) scale(1.12) rotate(-8deg)}

/* 16.8 · LATIDO DISCRETO EN LA LLAMADA PRINCIPAL ------------------ */
@media (prefers-reduced-motion: no-preference){
  .hero .btn:first-of-type,.mz-hero .btn:first-of-type{
    animation:respira 4.5s ease-in-out infinite}
  @keyframes respira{
    0%,100%{box-shadow:0 10px 30px color-mix(in oklab,var(--vivo) 40%,transparent)}
    50%{box-shadow:0 14px 42px color-mix(in oklab,var(--vivo) 62%,transparent)}}
  .hero .btn:first-of-type:hover{animation:none}
}

/* 16.9 · LA CABECERA SE ENCOGE AL BAJAR --------------------------- */
.cab{transition:padding .4s var(--ease),background .4s,box-shadow .4s}
.cab.pegado{box-shadow:0 6px 26px rgba(10,35,25,.10)}
.cab.pegado .marco-logo{transform:scale(.88);transition:transform .4s var(--ease)}

/* 16.10 · SE APAGA TODO SI SE PIDE MENOS MOVIMIENTO --------------- */
@media (prefers-reduced-motion: reduce){
  .btn::after,.fh-btn::after{display:none}
  .btn:hover,.fh-btn:hover,.acceso:hover,.tarj:hover,.fruto:hover,.cifra:hover,
  .placa:hover,.pie-top a:hover,.pie-redes a:hover{transform:none!important}
  .tit-sec::after{transition:none;transform:scaleX(1)!important}
}

/* ==================================================================
   12 · RESPETO A QUIEN PIDE MENOS MOVIMIENTO
   ================================================================== */
@media (prefers-reduced-motion: reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){
    animation:none!important}
  .acceso::after,.tarj::after,.cifra::after{animation:none!important}
  .tarj::before,.res::before,.noticia::before{display:none}
}

/* ==================================================================
   17 · RITMO GENERAL · TODO MAS PAUSADO
   Los efectos iban demasiado rapidos y se sentian nerviosos. Este
   bloque va al final y solo cambia la DURACION: no toca ni las
   propiedades ni las curvas, asi que nada se descoloca. Como norma,
   todo se alarga entre 1,8 y 2,2 veces.
   ================================================================== */

/* 17.1 · entradas al bajar: mas lentas y con mas reposo */
.rev,.rev-i,.rev-d,.rev-e{transition-duration:1.5s,1.9s}
.tit-sec::after{
  transition-duration:2.1s;transition-delay:.45s}

/* 17.2 · botones */
.btn,.fh-btn{transition-duration:.65s}
.btn:active,.fh-btn:active{transition-duration:.16s}   /* al pulsar, inmediato */
.btn:hover::after,.btn:focus-visible::after,
.fh-btn:hover::after,.fh-btn:focus-visible::after{animation-duration:1.35s}
.btn:hover .ic{animation-duration:1.05s}
.btn .ic,.leer .ic,.volver .ic{transition-duration:.7s}

/* 17.3 · tarjetas, iconos y placas */
.acceso,.tarj,.res,.noticia,.persona,.hito,.fruto,.cifra,.giro.suelto,.mz-cifra,
.placa,.chapa,.ic-caja,.mz-ic,.cifra .ic,.persona .avatar{transition-duration:.8s}
.acceso::before,.tarj::before,.res::before,.noticia::before,
.acceso::after,.tarj::after,.cifra::after{transition-duration:.85s}
.acceso:hover::after,.tarj:hover::after,.cifra:hover::after,
.cifra.abierta::after{animation-duration:9s}          /* el borde gira despacio */

/* 17.4 · menu y cabecera */
.nav>li>a,.nav>li>button{transition-duration:.5s}
.nav>li>a::after,.nav>li>button::after{transition-duration:.6s}
.mega{transition-duration:.55s}
.mega a{transition-duration:.45s}
.hamb span{transition-duration:.6s}
.cab,.cab.pegado .marco-logo{transition-duration:.7s}

/* 17.5 · fotografias */
figure .pic img,.mos .pic img{transition-duration:1.6s}
.mz-foto .pic img{transition-duration:1.6s}
img.cargada{animation-duration:1.2s}

/* 17.6 · formularios, plegables y avisos */
input,select,textarea{transition-duration:.45s}
.campo .aviso{transition-duration:.5s}
.brindis{transition-duration:.8s}
details,summary::after{transition-duration:.6s}
.arriba{transition-duration:.65s}

/* 17.7 · lo que se mueve solo, mucho mas lento */
.fh-hoja{animation-duration:26s}
.h1{--d:28s} .h2{--d:22s} .h3{--d:31s} .h4{--d:24s}
.h5{--d:34s} .h6{--d:29s} .h7{--d:20s}
.hero .btn:first-of-type,.mz-hero .btn:first-of-type{animation-duration:7.5s}
.ayuda-btn{animation-duration:6.5s}
.hero.unica .baja{animation-duration:3.4s}
.cinta-aliados .cinta-pista{animation-duration:70s}

/* 17.8 · animaciones ligadas al scroll: se reparten en mas recorrido,
   de modo que avanzan mas despacio con la rueda */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .mos .pic,.fruto .pic,.noticia .im .pic,.tarj .pic,.partido figure .pic{
      animation-range:entry 0% cover 55%}
    .tit-sec{animation-range:entry 0% cover 45%}
    .placa{animation-range:entry 0% cover 40%}
  }
}

/* 17.9 · transicion entre paginas, mas serena */
::view-transition-old(root){animation-duration:.45s}
::view-transition-new(root){animation-duration:.7s}

/* ==================================================================
   18 · LO MAS NUEVO DEL CSS, EN PRODUCCION
   Todo dentro de @supports: si el navegador no lo trae, la pagina se
   comporta exactamente como antes. Nada depende de esto.
   ================================================================== */

/* 18.1 · ALTURAS QUE SE ANIMAN HACIA auto -------------------------
   Animar hasta height:auto era imposible y obligaba a medir con
   JavaScript o a poner un max-height inventado. interpolate-size lo
   resuelve en el motor. */
@supports (interpolate-size: allow-keywords){
  :root{interpolate-size:allow-keywords}
  .cifra-mas{max-height:none;height:0;overflow:hidden;
    transition:height .7s var(--ease)}
  .cifra.abierta .cifra-mas{height:auto}
  .campo .aviso{max-height:none;height:0;transition:height .5s var(--ease)}
  .campo.mal .aviso{height:auto}
}

/* 18.2 · LOS PLEGABLES ENTRAN CON SUAVIDAD  (::details-content) ----
   Se anima la OPACIDAD y el desplazamiento, no la altura. Animar la
   altura aqui dejaba el contenido recortado a cero: el plegable se
   abria pero la respuesta no se veia. La altura la resuelve el motor
   como siempre. */
@supports selector(::details-content){
  @media (prefers-reduced-motion: no-preference){
    details::details-content{
      opacity:0;translate:0 -6px;
      transition:opacity .55s var(--ease),translate .55s var(--ease)}
    details[open]::details-content{opacity:1;translate:0}
  }
}

/* 18.3 · CAMPOS QUE CRECEN CON EL TEXTO  (field-sizing) ------------ */
@supports (field-sizing: content){
  textarea{field-sizing:content;min-height:5lh;max-height:16lh}
  .buscar-caja input,.vf-buscar input{field-sizing:normal}
}

/* 18.4 · LA CABECERA SABE QUE ESTA PEGADA  (scroll-state) ----------
   Antes hacia falta escuchar el scroll en JavaScript y anadir una
   clase. El navegador ya puede consultarlo solo. */
@supports (container-type: scroll-state){
  .cab{container-type:scroll-state;container-name:cabecera}
  @container cabecera scroll-state(stuck: top){
    .cab .env{padding-block:.55rem}
    .marco-logo{scale:.88}
  }
}

/* 18.5 · ESCALONADO SIN JAVASCRIPT  (sibling-index) ----------------
   El retardo de cada tarjeta salia de un bucle en JavaScript. Ahora
   lo calcula el propio CSS a partir de la posicion del elemento. */
@supports (top: calc(sibling-index() * 1px)){
  .rejilla>*,.frutos>*,.giros>*,.cifras>*,.noticias>*,.accesos .env>*,
  .cp-rej>*,.gl>*{
    transition-delay:calc(sibling-index() * 70ms)}
  .placa{animation-delay:calc(sibling-index() * 90ms)}
}

/* 18.6 · CAJA TIPOGRAFICA RECORTADA  (text-box) -------------------
   Quita el espacio muerto que las fuentes dejan encima y debajo de
   las mayusculas. Los titulos se alinean con lo que se ve, no con la
   metrica de la fuente. */
@supports (text-box: trim-both cap alphabetic){
  h1,h2,h3,.tit-sec,.cifra b,.fh-jalon b,.mz-cifra b{
    text-box:trim-both cap alphabetic}
  .tit-sec{margin-bottom:.35em}
}

/* 18.7 · TRANSPARENCIA REDUCIDA -----------------------------------
   Hay quien pide al sistema menos transparencias. Se respeta. */
@media (prefers-reduced-transparency: reduce){
  .cp-tarj,.gv,.gl-item .lupa-ic,.hero .btn.sec{backdrop-filter:none}
  .cp-tarj{background:color-mix(in oklab,var(--oscuro) 62%,transparent)}
  .gv{background:#071008}
}

/* 18.8 · MENOS DATOS ----------------------------------------------
   Si el usuario navega con ahorro de datos, se apagan los adornos
   que cuestan pintado. */
@media (prefers-reduced-data: reduce){
  .fh-hojas,.diapo::after,.acceso::after,.tarj::after{display:none}
  .gl-item img,.mos .pic img{transition:none}
}

/* 18.9 · AISLAMIENTO DE LA GALERIA  (@scope) ----------------------
   Las reglas de la galeria dejan de poder escaparse a otras partes
   de la pagina, aunque coincidan los nombres de clase. */
@supports at-rule(@scope){
  @scope (.isla) to (.gv){
    figcaption{text-wrap:pretty}
    :scope img{background:color-mix(in oklab,var(--oscuro) 12%,transparent)}
  }
}

/* 18.10 · ESQUINAS CON FORMA DE SQUIRCLE  (corner-shape) ----------
   La curva de una esquina redondeada normal se nota; el squircle es
   la que usan los sistemas operativos y se ve mas fina. */
@supports (corner-shape: superellipse(2)){
  .tarj,.acceso,.cifra,.gl-item,.cp-tarj,.mz-hero,.vt,.vp{
    corner-shape:superellipse(2.4)}
  .btn,.fh-btn,.vf-chip,.gl-mas button{corner-shape:superellipse(3)}
}


/* ==================================================================
   FRANJA DE «NUESTRA HISTORIA»
   Banda clara con textura de papel y hojas flotando, al estilo de la
   referencia. Todo el fondo es CSS + SVG en linea: ni una sola imagen.
   ================================================================== */
.franja-historia{position:relative;overflow:hidden;isolation:isolate;
  padding-block:clamp(3.4rem,8vw,6.5rem);
  background:
    radial-gradient(120% 100% at 12% 0%,#FFFFFF 0%,#F4F7F1 42%,#EAF1E6 100%);
  border-block:1px solid var(--borde)}
/* la textura va encima del degradado, en modo multiplicar */
.franja-historia::before{content:'';position:absolute;inset:0;z-index:0;
  background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='0.055'/%3E%3C/svg%3E");background-size:260px 260px;
  mix-blend-mode:multiply;pointer-events:none;opacity:.9}
/* un halo verde muy suave, para que la banda no quede plana */
.franja-historia::after{content:'';position:absolute;z-index:0;pointer-events:none;
  width:70vw;height:70vw;max-width:820px;max-height:820px;right:-18vw;top:-26vw;
  border-radius:50%;
  background:radial-gradient(circle,
    color-mix(in oklab,var(--vivo) 13%,transparent),transparent 66%)}

.franja-historia .env{position:relative;z-index:2}
.fh-cuerpo{max-width:60ch}
.fh-ante{display:block;font-family:var(--fb);font-weight:500;
  font-size:clamp(1.05rem,2vw,1.5rem);color:var(--brand);
  letter-spacing:.01em;margin-bottom:-.15em;padding-left:.15em}
.franja-historia h2{color:var(--oscuro)}
.fh-bajada{margin-top:1.1rem;max-width:50ch;color:#3d4a37;
  font-size:clamp(1rem,1.35vw,1.18rem);line-height:1.6}

/* --- jalones: tres momentos, en una fila --- */
.fh-jalones{display:flex;flex-wrap:wrap;gap:clamp(1.2rem,3vw,2.8rem);
  margin-top:clamp(1.6rem,3vw,2.4rem);padding-top:1.3rem;
  border-top:1px solid color-mix(in oklab,var(--brand) 22%,transparent)}
.fh-jalon{display:flex;flex-direction:column;gap:.2rem;min-width:8rem}
.fh-jalon b{font-family:var(--fd);font-size:clamp(1.5rem,2.6vw,2.1rem);
  line-height:1;color:var(--ink);letter-spacing:-.02em}
.fh-jalon span{font-size:var(--t-sm);color:var(--muted);line-height:1.35;max-width:22ch}

/* --- boton redondeado, como el de la referencia --- */
.fh-btn{display:inline-flex;align-items:center;gap:.7rem;margin-top:clamp(1.8rem,3.4vw,2.6rem);
  padding:1.05rem 2.1rem;border-radius:999px;font-weight:700;font-size:var(--t-base);
  color:#fff;background:linear-gradient(140deg,var(--brand),var(--vivo) 140%);
  box-shadow:0 12px 30px color-mix(in oklab,var(--brand) 30%,transparent);
  position:relative;overflow:hidden;isolation:isolate;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),gap .35s var(--ease);
  min-height:52px}
.fh-btn::before{content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(140deg,var(--vivo),var(--brand) 140%);
  opacity:0;transition:opacity .4s var(--ease)}
.fh-btn:hover,.fh-btn:focus-visible{transform:translateY(-3px);gap:1.05rem;
  box-shadow:0 18px 40px color-mix(in oklab,var(--brand) 40%,transparent)}
.fh-btn:hover::before{opacity:1}
.fh-btn:active{transform:translateY(-1px) scale(.985)}
.fh-btn .ic{transition:transform .35s var(--ease)}
.fh-btn:hover .ic{transform:translateX(4px) rotate(-45deg)}

/* --- las hojas --- */
.fh-hojas{position:absolute;inset:0;z-index:1;pointer-events:none}
.fh-hoja{position:absolute;display:block;line-height:0}
.fh-hoja svg{width:100%;height:auto;display:block;
  fill:color-mix(in oklab,var(--brand) 62%,#7CB342)}
.fh-hoja .nervio{fill:none;stroke:rgba(255,255,255,.5);stroke-width:1.6}
/* cada hoja con su tamano, su sitio y su giro */
.h1{width:clamp(48px,7vw,96px);top:6%;left:3%;transform:rotate(-24deg)}
.h2{width:clamp(34px,4.6vw,62px);top:52%;left:-1%;transform:rotate(28deg);opacity:.8}
.h3{width:clamp(40px,5.6vw,78px);top:14%;right:6%;transform:rotate(152deg)}
.h4{width:clamp(30px,4vw,54px);top:62%;right:12%;transform:rotate(-160deg);opacity:.85}
.h5{width:clamp(26px,3.4vw,46px);bottom:8%;left:24%;transform:rotate(12deg);opacity:.55;
  filter:blur(1.5px)}
.h6{width:clamp(38px,5vw,70px);bottom:-4%;right:32%;transform:rotate(-70deg);opacity:.6;
  filter:blur(2px)}
.h7{width:clamp(22px,3vw,40px);top:32%;right:28%;transform:rotate(96deg);opacity:.4;
  filter:blur(1px)}

/* --------------------------------------------------------------
   El recorrido anterior era de 10 px en 28 s: 0,36 px por segundo, o
   sea invisible. Ahora cada hoja tiene su propia trayectoria, con
   desplazamiento de 40 a 90 px y giro de hasta 18 grados. Sigue siendo
   un movimiento tranquilo, pero se ve.
   -------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference){
  .fh-hoja{animation:var(--vuelo,vuelo1) var(--d,17s) ease-in-out infinite alternate;
    will-change:transform}
  .h1{--d:17s;--vuelo:vuelo1}
  .h2{--d:14s;--vuelo:vuelo2;animation-delay:-4s}
  .h3{--d:20s;--vuelo:vuelo3;animation-delay:-8s}
  .h4{--d:15s;--vuelo:vuelo4;animation-delay:-3s}
  .h5{--d:22s;--vuelo:vuelo2;animation-delay:-11s}
  .h6{--d:18s;--vuelo:vuelo3;animation-delay:-6s}
  .h7{--d:13s;--vuelo:vuelo4;animation-delay:-2s}

  /* cuatro trayectorias distintas: si todas hicieran lo mismo, el
     conjunto se leeria como un solo bloque moviendose */
  @keyframes vuelo1{
    0%  {translate:0 0;      rotate:-24deg}
    35% {translate:34px -26px;rotate:-12deg}
    70% {translate:58px 14px; rotate:-30deg}
    100%{translate:82px -18px;rotate:-16deg}}
  @keyframes vuelo2{
    0%  {translate:0 0;       rotate:28deg}
    40% {translate:-26px 30px;rotate:44deg}
    75% {translate:22px 52px; rotate:18deg}
    100%{translate:-14px 74px;rotate:36deg}}
  @keyframes vuelo3{
    0%  {translate:0 0;        rotate:152deg}
    30% {translate:-40px 20px; rotate:138deg}
    65% {translate:-18px -30px;rotate:166deg}
    100%{translate:-62px -8px; rotate:144deg}}
  @keyframes vuelo4{
    0%  {translate:0 0;        rotate:-160deg}
    50% {translate:28px 36px;  rotate:-142deg}
    100%{translate:-16px 62px; rotate:-174deg}}

  /* las hojas siguen al cursor: el conjunto se desplaza un poco en
     sentido contrario al raton, y da sensacion de profundidad */
  .fh-hojas{transform:translate3d(calc(var(--px,0) * -14px),
                                  calc(var(--py,0) * -10px),0);
    transition:transform 1.6s cubic-bezier(.22,1,.36,1)}

  /* y ademas derivan con el scroll */
  @supports (animation-timeline: view()){
    .franja-historia{--deriva:1}
    .fh-hoja.h1,.fh-hoja.h3,.fh-hoja.h6{animation-composition:add}
  }
}

/* --- movil --- */
@media(max-width:760px){
  .fh-cuerpo{max-width:none}
  .fh-jalones{gap:1rem 1.6rem}
  .fh-jalon{min-width:6.5rem}
  .fh-jalon span{font-size:var(--t-xs)}
  .fh-btn{width:100%;justify-content:center}
  .h3,.h4,.h7{display:none}
}

/* ==================================================================
   BANDA DE COMPROMISOS · fondo verde, letras blancas
   ================================================================== */
.compromiso{position:relative;overflow:hidden;isolation:isolate;
  padding-block:clamp(3.4rem,7vw,5.8rem);color:#fff;
  background:linear-gradient(155deg,var(--oscuro) 0%,var(--brand) 58%,
    color-mix(in oklab,var(--vivo) 62%,var(--brand)) 100%)}
/* dos halos muy suaves para que el verde no quede plano */
.compromiso::before{content:'';position:absolute;z-index:0;pointer-events:none;
  width:62vw;height:62vw;max-width:760px;max-height:760px;right:-16vw;top:-24vw;
  border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.14),transparent 62%)}
.compromiso::after{content:'';position:absolute;z-index:0;pointer-events:none;
  width:48vw;height:48vw;max-width:560px;max-height:560px;left:-14vw;bottom:-22vw;
  border-radius:50%;
  background:radial-gradient(circle,color-mix(in oklab,var(--cielo) 26%,transparent),transparent 66%)}
.compromiso .env{position:relative;z-index:2}

/* --- cabecera a dos columnas, como en la referencia --- */
.cp-cab{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:clamp(1.2rem,4vw,3.4rem);align-items:end;
  margin-bottom:clamp(2rem,4vw,3rem)}
.cp-ante{display:inline-block;font-family:var(--fb);font-weight:700;
  font-size:clamp(.95rem,1.5vw,1.1rem);color:var(--sol);
  padding-bottom:.5rem;margin-bottom:.9rem;border-bottom:3px solid var(--sol)}
.compromiso h2{color:#fff}
.cp-der{color:rgba(255,255,255,.9);font-size:clamp(1rem,1.3vw,1.12rem);
  line-height:1.6;max-width:44ch}

/* --- las tres tarjetas --- */
.cp-rej{display:grid;gap:clamp(.9rem,2vw,1.5rem);
  grid-template-columns:repeat(3,1fr)}
.cp-tarj{position:relative;display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:.55rem;padding:clamp(1.6rem,3vw,2.4rem) clamp(1.1rem,2.2vw,1.7rem);
  border-radius:var(--r);text-decoration:none;color:#fff;
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.24);
  backdrop-filter:blur(6px);overflow:hidden;isolation:isolate;
  transition:transform .8s var(--ease),background .8s var(--ease),
             border-color .8s var(--ease),box-shadow .8s var(--ease)}
.cp-tarj:hover,.cp-tarj:focus-visible{transform:translateY(-8px);
  background:rgba(255,255,255,.17);border-color:var(--sol);
  box-shadow:0 26px 54px rgba(4,20,8,.32)}
.cp-tarj-vacia{justify-content:center;opacity:.55;border-style:dashed}
.cp-tarj-vacia.ok{opacity:.55}
.cp-tarj-vacia:hover{transform:none;background:rgba(255,255,255,.10);
  border-color:rgba(255,255,255,.24);box-shadow:none}
.cp-tarj-vacia .cp-tit{font-weight:400;font-style:italic}
.cp-ic{display:block;width:clamp(60px,7vw,84px);color:#fff;
  transition:transform .8s var(--ease),color .5s}
.cp-ic svg{width:100%;height:auto;display:block}
.cp-tarj:hover .cp-ic{transform:scale(1.08) rotate(-4deg);color:var(--sol)}
.cp-et{font-size:var(--t-sm);color:rgba(255,255,255,.82);margin-top:.35rem}
.cp-tit{font-family:var(--fb);font-weight:700;color:#fff;
  font-size:clamp(1.05rem,1.7vw,1.32rem);line-height:1.2;max-width:20ch}
.cp-txt{font-size:var(--t-sm);line-height:1.55;color:rgba(255,255,255,.82);max-width:32ch}
.cp-ir{margin-top:auto;padding-top:.9rem;display:inline-flex;align-items:center;gap:.45rem;
  font-weight:700;font-size:var(--t-sm);color:var(--sol);
  transition:gap .6s var(--ease)}
.cp-tarj:hover .cp-ir{gap:.9rem}
/* filete inferior que se dibuja al pasar el cursor */
.cp-tarj::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;
  background:linear-gradient(90deg,var(--sol),#fff);
  transform:scaleX(0);transform-origin:left;transition:transform .9s var(--ease)}
.cp-tarj:hover::after{transform:scaleX(1)}

/* --- tableta y movil --- */
@media(max-width:980px){
  .cp-cab{grid-template-columns:1fr;align-items:start;gap:1rem}
  .cp-rej{grid-template-columns:1fr}
  .cp-tarj{flex-direction:row;text-align:left;align-items:flex-start;gap:1rem}
  .cp-ic{width:56px;flex:none}
  .cp-tit,.cp-txt{max-width:none}
  .cp-tarj>span:not(.cp-ic),.cp-tarj>b{align-self:flex-start}
  /* en fila, el texto se apila a la derecha del icono */
  .cp-tarj{display:grid;grid-template-columns:56px 1fr;
    grid-template-areas:'ic et' 'ic tit' 'ic txt' 'ic ir';column-gap:1.1rem;row-gap:.3rem}
  .cp-ic{grid-area:ic} .cp-et{grid-area:et} .cp-tit{grid-area:tit}
  .cp-txt{grid-area:txt} .cp-ir{grid-area:ir;margin-top:.4rem;padding-top:0}
}
@media(max-width:520px){
  .cp-tarj{grid-template-columns:1fr;grid-template-areas:'ic' 'et' 'tit' 'txt' 'ir';
    justify-items:start;row-gap:.45rem}
  .cp-ic{width:52px}
}
@media (prefers-reduced-motion: reduce){
  .cp-tarj:hover{transform:none}
  .cp-tarj::after{transition:none}
}

/* ==================================================================
   GALERIA Y VISOR DE FOTOGRAFIAS
   ================================================================== */
/* Rejilla limpia: tres columnas, todas las piezas del mismo tamano.
   La version anterior calculaba una altura distinta por foto y el mosaico
   quedaba desordenado. Se muestran seis y el resto llega con «Ver mas». */
.gl{display:grid;gap:clamp(.7rem,1.4vw,1.1rem);grid-template-columns:repeat(3,1fr)}
.gl-item{aspect-ratio:4/3}
@media(max-width:900px){.gl{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.gl{grid-template-columns:1fr}.gl-item{aspect-ratio:16/10}}

/* boton de «ver mas» */
.gl-mas{display:flex;justify-content:center;margin-top:clamp(1.4rem,3vw,2.2rem)}
.gl-mas button{display:inline-flex;align-items:center;gap:.7rem;
  padding:.95rem 1.9rem;border-radius:999px;border:1.5px solid var(--brand);
  background:transparent;color:var(--brand);font:inherit;font-weight:700;
  font-size:var(--t-base);cursor:pointer;min-height:52px;position:relative;overflow:hidden;
  transition:background .65s var(--ease),color .65s,transform .65s var(--ease),
             box-shadow .65s var(--ease),gap .5s var(--ease)}
.gl-mas button:hover{background:var(--brand);color:#fff;transform:translateY(-3px);gap:1.05rem;
  box-shadow:0 16px 34px color-mix(in oklab,var(--brand) 30%,transparent)}
.gl-mas button:active{transform:translateY(-1px) scale(.97)}
.gl-mas .cnt{font-variant-numeric:tabular-nums;opacity:.75;font-weight:600}
/* las que van llegando entran escalonadas */
.gl-item.nueva{animation:gl-llega .8s var(--ease) both}
@keyframes gl-llega{from{opacity:0;transform:translateY(26px) scale(.96)}to{opacity:1;transform:none}}

.gl-item{position:relative;margin:0;padding:0;border:0;cursor:zoom-in;
  border-radius:var(--r);overflow:hidden;background:var(--oscuro);
  box-shadow:var(--s1);isolation:isolate;
  transition:transform .8s var(--ease),box-shadow .8s var(--ease)}
.gl-item img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s var(--ease),filter .8s}
.gl-item:hover{transform:translateY(-6px) scale(1.012);box-shadow:var(--s3);z-index:2}
.gl-item:hover img{transform:scale(1.08)}
.gl-item figcaption{position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:2.4rem .9rem .8rem;color:#fff;font-size:var(--t-sm);font-weight:600;
  line-height:1.3;text-align:left;
  background:linear-gradient(transparent,rgba(4,12,20,.82));
  opacity:0;translate:0 12px;transition:opacity .7s var(--ease),translate .7s var(--ease)}
.gl-item:hover figcaption,.gl-item:focus-visible figcaption{opacity:1;translate:0}
.gl-item .lupa-ic{position:absolute;top:.7rem;right:.7rem;z-index:3;width:34px;height:34px;
  border-radius:50%;display:grid;place-items:center;color:#fff;
  background:rgba(4,12,20,.45);backdrop-filter:blur(4px);
  opacity:0;scale:.7;transition:opacity .6s var(--ease),scale .6s var(--ease)}
.gl-item:hover .lupa-ic{opacity:1;scale:1}
.gl-sec{position:absolute;top:.7rem;left:.7rem;z-index:3;font-size:var(--t-xs);font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;color:var(--oscuro);
  background:var(--sol);padding:.25rem .55rem;border-radius:6px;
  opacity:0;translate:-8px 0;transition:opacity .6s var(--ease),translate .6s var(--ease)}
.gl-item:hover .gl-sec{opacity:1;translate:0}

/* --- el visor --- */
/* Cuatro filas: cabecera, barra del pase, foto y pie. Antes solo se
   declaraban tres y la foto heredaba altura automatica, asi que se salia
   de la pantalla. */
.gv{position:fixed;inset:0;z-index:9999;display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  background:rgba(4,10,6,.94);backdrop-filter:blur(10px) saturate(.9);
  animation:gv-entra .5s var(--ease) both}
@keyframes gv-entra{from{opacity:0}to{opacity:1}}
.gv-cab{display:flex;align-items:center;gap:1rem;padding:.9rem clamp(.8rem,2.4vw,1.8rem);
  color:#fff;border-bottom:1px solid rgba(255,255,255,.12)}
.gv-cab .cuenta{font-variant-numeric:tabular-nums;font-weight:700;font-size:var(--t-sm);
  letter-spacing:.06em}
.gv-cab .sec{font-size:var(--t-xs);font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--oscuro);background:var(--sol);padding:.25rem .6rem;border-radius:6px}
.gv-cab .der{margin-left:auto;display:flex;gap:.4rem}
.gv-btn{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.22);
  background:rgba(255,255,255,.08);color:#fff;cursor:pointer;display:grid;place-items:center;
  font-size:var(--t-base);transition:background .5s var(--ease),transform .5s var(--ease),
  border-color .5s}
.gv-btn:hover{background:var(--brand);border-color:var(--brand);transform:scale(1.08)}
.gv-btn.on{background:var(--sol);border-color:var(--sol);color:var(--oscuro)}

.gv-marco{position:relative;display:flex;align-items:center;justify-content:center;
  overflow:hidden;min-height:0;padding:clamp(.6rem,2vw,1.6rem)}
/* La foto ocupa exactamente el hueco disponible y se ajusta dentro con
   object-fit:contain. Con max-height en porcentaje se desbordaba: el
   porcentaje no siempre resuelve contra la fila de la rejilla. La sombra
   se aplica con drop-shadow para que siga el contorno real de la imagen,
   no el de la caja. */
.gv-marco img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;
  filter:drop-shadow(0 22px 56px rgba(0,0,0,.55));
  transition:transform .9s var(--ease),opacity .5s}
.gv-marco.zoom{cursor:zoom-out}
.gv-marco.zoom img{transform:scale(2.1);cursor:zoom-out;transition:transform .9s var(--ease)}
.gv-marco:not(.zoom) img{cursor:zoom-in}
.gv-nav{position:absolute;top:50%;translate:0 -50%;width:52px;height:52px;
  border-radius:50%;border:1px solid rgba(255,255,255,.24);color:#fff;
  background:rgba(4,12,20,.5);backdrop-filter:blur(6px);cursor:pointer;
  display:grid;place-items:center;font-size:var(--t-xl);
  transition:background .5s var(--ease),transform .5s var(--ease)}
.gv-nav:hover{background:var(--brand);transform:translateY(0) scale(1.1)}
.gv-nav.izq{left:clamp(.5rem,2vw,1.6rem)}
.gv-nav.der{right:clamp(.5rem,2vw,1.6rem)}
.gv-pie{max-height:34vh;overflow:auto;padding:.9rem clamp(.8rem,2.4vw,1.8rem) 1.1rem;color:#fff;
  border-top:1px solid rgba(255,255,255,.12)}
.gv-pie p{margin-bottom:.7rem;color:rgba(255,255,255,.92)}
.gv-tira{display:flex;gap:.45rem;overflow-x:auto;padding-bottom:.35rem;
  scrollbar-width:thin;scroll-snap-type:x proximity}
.gv-tira button{flex:0 0 auto;width:74px;height:52px;border-radius:8px;overflow:hidden;
  border:2px solid transparent;padding:0;cursor:pointer;background:none;opacity:.5;
  scroll-snap-align:center;
  transition:opacity .5s var(--ease),border-color .5s,transform .5s var(--ease)}
.gv-tira button img{width:100%;height:100%;object-fit:cover;display:block}
.gv-tira button:hover{opacity:.85;transform:translateY(-3px)}
.gv-tira button.on{opacity:1;border-color:var(--sol);transform:translateY(-3px)}
/* barra del pase automatico */
.gv-auto{height:3px;background:rgba(255,255,255,.16);overflow:hidden}
.gv-auto i{display:block;height:100%;width:0;background:var(--sol)}
.gv-auto.corre i{animation:gv-pasa 6s linear forwards}
@keyframes gv-pasa{to{width:100%}}

/* el navegador funde la miniatura con la foto grande */
@supports (view-transition-name: a){
  .gl-item.saliendo img{view-transition-name:foto-activa}
  .gv-marco img{view-transition-name:foto-activa}
}
@media(max-width:700px){
  .gv-nav{width:44px;height:44px}
  .gv-tira button{width:58px;height:42px}
  .gl{grid-auto-rows:10px}
}
@media (prefers-reduced-motion: reduce){
  .gv,.gl-item,.gl-item img{animation:none!important;transition:none!important}
  .gv-auto.corre i{animation:none;width:100%}
}

/* ==================================================================
   ISLAS INTERACTIVAS
   ================================================================== */
.isla{--iso:0}
.isla[data-vue]{animation:isla-entra .9s var(--ease) both}
@keyframes isla-entra{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* --- barra de herramientas de filtrado --- */
.vf{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;
  margin-bottom:clamp(1.2rem,2.4vw,1.8rem)}
.vf-buscar{position:relative;flex:1 1 260px;min-width:0}
.vf-buscar input{width:100%;padding:.85rem 2.6rem .85rem 1rem;font:inherit;
  font-size:var(--t-base);border:1px solid var(--borde);border-radius:999px;
  background:var(--sup);color:var(--ink)}
.vf-buscar .lupa{position:absolute;right:1rem;top:50%;translate:0 -50%;
  color:var(--muted);pointer-events:none}
.vf-buscar .limpiar{position:absolute;right:.55rem;top:50%;translate:0 -50%;
  border:0;background:var(--borde);color:var(--ink);width:26px;height:26px;
  border-radius:50%;cursor:pointer;font-size:var(--t-xs);line-height:1}
.vf-chip{border:1px solid var(--borde);background:var(--sup);color:var(--muted);
  font:inherit;font-size:var(--t-sm);font-weight:600;padding:.6rem 1.05rem;border-radius:999px;
  cursor:pointer;min-height:44px;
  transition:background .5s var(--ease),color .5s,border-color .5s,transform .5s var(--ease)}
.vf-chip:hover{border-color:var(--vivo);transform:translateY(-2px)}
.vf-chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.vf-cuenta{margin-left:auto;font-size:var(--t-sm);color:var(--muted);
  font-variant-numeric:tabular-nums}
.vf-cuenta b{color:var(--brand)}

/* --- ficha de tramite manipulable --- */
.vt{border:1px solid var(--borde);border-radius:var(--r);background:var(--sup);
  overflow:hidden;box-shadow:var(--s1);margin-bottom:.8rem;
  transition:box-shadow .8s var(--ease),border-color .8s var(--ease)}
.vt.abierta{border-color:var(--vivo);box-shadow:var(--s2)}
.vt-cab{display:flex;align-items:center;gap:1rem;width:100%;text-align:left;
  padding:1.1rem 1.3rem;background:none;border:0;cursor:pointer;font:inherit;
  min-height:64px;color:inherit;transition:background .5s}
.vt-cab:hover{background:color-mix(in oklab,var(--cielo) 7%,transparent)}
.vt-cab .vt-n{flex:1;min-width:0}
.vt-cab h3{line-height:1.25;margin-bottom:.2rem}
.vt-cab .vt-dep{font-size:var(--t-apoyo);color:var(--azul);font-weight:600}
.vt-cab .vt-mas{flex:none;width:30px;height:30px;border-radius:50%;
  background:color-mix(in oklab,var(--cielo) 14%,transparent);color:var(--azul);
  display:grid;place-items:center;font-size:var(--t-lg);line-height:1;
  transition:transform .6s var(--ease),background .5s}
.vt.abierta .vt-mas{transform:rotate(45deg);background:var(--azul);color:#fff}
.vt-cuerpo{padding:0 1.3rem 1.3rem;border-top:1px solid var(--borde)}
.vt-cuerpo p{color:var(--muted);padding-top:.9rem}

/* --- lista de requisitos que el usuario va marcando --- */
.vt-req{list-style:none;margin-top:1rem;display:grid;gap:.4rem}
.vt-req li{margin:0}
.vt-req label{display:flex;align-items:flex-start;gap:.7rem;cursor:pointer;
  padding:.6rem .8rem;border-radius:10px;border:1px solid var(--borde);
  background:var(--bg);font-size:var(--t-sm);min-height:44px;
  transition:background .5s var(--ease),border-color .5s var(--ease)}
.vt-req label:hover{border-color:var(--vivo)}
.vt-req input{appearance:none;width:20px;height:20px;flex:none;margin-top:.1rem;
  border:2px solid var(--borde);border-radius:6px;background:var(--sup);
  cursor:pointer;position:relative;transition:background .4s,border-color .4s}
.vt-req input:checked{background:var(--vivo);border-color:var(--vivo)}
.vt-req input:checked::after{content:'✓';position:absolute;inset:0;
  display:grid;place-items:center;color:var(--oscuro);font-size:var(--t-xs);font-weight:900}
.vt-req label:has(input:checked){background:var(--menta);border-color:var(--vivo)}
.vt-req label:has(input:checked) span{text-decoration:line-through;color:var(--muted)}

.vt-avance{margin-top:1rem;display:flex;align-items:center;gap:.9rem}
.vt-avance .pista{flex:1;height:8px;border-radius:8px;background:var(--borde);overflow:hidden}
.vt-avance .pista i{display:block;height:100%;border-radius:8px;
  background:linear-gradient(90deg,var(--brand),var(--vivo) 60%,var(--sol));
  transition:width 1.1s var(--ease)}
.vt-avance b{font-size:var(--t-sm);color:var(--brand);font-variant-numeric:tabular-nums;
  white-space:nowrap}
.vt-listo{display:flex;align-items:center;gap:.5rem;margin-top:.9rem;
  padding:.7rem 1rem;border-radius:10px;font-size:var(--t-sm);font-weight:600;
  background:var(--menta);color:var(--brand);border:1px solid var(--vivo)}

/* --- formulario por pasos --- */
.vp{border:1px solid var(--borde);border-radius:var(--r);background:var(--sup);
  box-shadow:var(--s1);overflow:hidden}
.vp-pasos{display:flex;gap:0;border-bottom:1px solid var(--borde);background:var(--bg)}
.vp-paso{flex:1;display:flex;align-items:center;justify-content:center;gap:.55rem;
  padding:.95rem .6rem;font-size:var(--t-sm);font-weight:600;color:var(--muted);
  position:relative;transition:color .6s}
.vp-paso .n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  background:var(--borde);color:var(--muted);font-size:var(--t-xs);font-weight:800;
  transition:background .6s var(--ease),color .6s,transform .6s var(--ease)}
.vp-paso.on{color:var(--brand)}
.vp-paso.on .n{background:var(--brand);color:#fff;transform:scale(1.12)}
.vp-paso.hecho .n{background:var(--vivo);color:var(--oscuro)}
.vp-paso::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:3px;
  background:var(--brand);transform:scaleX(0);transition:transform .8s var(--ease)}
.vp-paso.on::after{transform:scaleX(1)}
.vp-cuerpo{padding:clamp(1.2rem,3vw,2rem)}
.vp-rej{display:grid;gap:.9rem;grid-template-columns:repeat(2,1fr)}
.vp-rej .ancho{grid-column:1/-1}
.vp label.et{display:block;font-size:var(--t-sm);font-weight:700;color:var(--muted);
  margin-bottom:.35rem}
.vp input,.vp select,.vp textarea{width:100%;font:inherit;font-size:var(--t-base);
  padding:.8rem .9rem;border:1px solid var(--borde);border-radius:10px;
  background:var(--bg);color:var(--ink)}
.vp .malo{border-color:#C0392B;background:#FDECEA}
.vp .aviso-c{display:block;margin-top:.3rem;font-size:var(--t-xs);color:#C0392B}
.vp-opc{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.vp-opc button{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;
  text-align:left;padding:1rem;border-radius:12px;border:1.5px solid var(--borde);
  background:var(--bg);cursor:pointer;font:inherit;min-height:76px;
  transition:border-color .6s var(--ease),background .6s var(--ease),
             transform .6s var(--ease)}
.vp-opc button:hover{transform:translateY(-3px);border-color:var(--vivo)}
.vp-opc button.on{border-color:var(--brand);background:var(--menta)}
.vp-opc b{font-size:var(--t-base);color:var(--ink)}
.vp-opc span{font-size:var(--t-sm);color:var(--muted);line-height:1.4}
.vp-res{display:grid;gap:.55rem}
.vp-res div{display:flex;gap:.8rem;padding:.6rem 0;border-bottom:1px dashed var(--borde);
  font-size:var(--t-sm)}
.vp-res div b{min-width:9rem;color:var(--muted);font-weight:600}
.vp-pie{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;
  padding:1.1rem clamp(1.2rem,3vw,2rem);border-top:1px solid var(--borde);
  background:var(--bg)}
.vp-pie .der{margin-left:auto;display:flex;gap:.7rem}
.vp-ok{text-align:center;padding:clamp(1.6rem,4vw,3rem)}
.vp-ok .marca{width:74px;height:74px;margin:0 auto 1.1rem;border-radius:50%;
  background:var(--menta);color:var(--brand);display:grid;place-items:center;
  font-size:var(--t-3xl);animation:sello .9s var(--ease) both}
@keyframes sello{from{transform:scale(.5);opacity:0}60%{transform:scale(1.12)}to{transform:none;opacity:1}}
.vp-ok .rad{display:inline-block;margin-top:.8rem;padding:.6rem 1.2rem;border-radius:999px;
  background:var(--oscuro);color:#fff;font-weight:700;letter-spacing:.06em;
  font-variant-numeric:tabular-nums}

/* --- directorio de comunidades --- */
.vv{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}
.vv-item{display:flex;gap:.9rem;align-items:flex-start;padding:1rem 1.1rem;
  border:1px solid var(--borde);border-radius:var(--r);background:var(--sup);
  transition:transform .8s var(--ease),box-shadow .8s var(--ease),border-color .6s}
.vv-item:hover{transform:translateY(-5px);box-shadow:var(--s2);border-color:var(--cielo)}
.vv-item .pin{flex:none;width:38px;height:38px;border-radius:12px;display:grid;
  place-items:center;background:color-mix(in oklab,var(--cielo) 15%,transparent);
  color:var(--azul);font-weight:800;font-size:var(--t-sm)}
.vv-item .vv-foto{flex:none;width:56px;height:56px;border-radius:12px;object-fit:cover}
.vv-item:has(.vv-foto) .pin{width:26px;height:26px;font-size:var(--t-xs)}
.vv-item b{display:block;font-size:var(--t-base);line-height:1.25}
.vv-item span{font-size:var(--t-sm);color:var(--muted);line-height:1.45}
.vv-vacio{padding:2rem;text-align:center;color:var(--muted);border:1px dashed var(--borde);
  border-radius:var(--r)}

@media(max-width:700px){
  .vp-rej{grid-template-columns:1fr}
  .vf-cuenta{margin-left:0;width:100%}
  .vp-paso span.tx{display:none}
}
@media (prefers-reduced-motion: reduce){
  .isla[data-vue]{animation:none}
  .vp-ok .marca{animation:none}
}

/* ==========================================================================
   COMUNIDADES  ·  hub de las 9 comunidades y sus fichas
   ========================================================================== */

/* -- barra de filtros -- */
.com-filtros{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center;margin:1.6rem 0 2rem}
.com-chip{font:inherit;font-size:var(--t-sm);font-weight:700;cursor:pointer;
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.6rem 1.1rem;min-height:44px;border-radius:999px;
  background:var(--sup);color:var(--ink);border:1px solid var(--borde);
  transition:.3s var(--ease)}
.com-chip:hover{border-color:var(--brand);transform:translateY(-2px)}
.com-chip .n{font-size:var(--t-xs);font-weight:700;padding:.1rem .45rem;border-radius:999px;
  background:color-mix(in oklab,var(--brand) 12%,transparent);color:var(--brand)}
.com-chip[aria-pressed="true"]{background:var(--brand);color:#fff;border-color:var(--brand);
  box-shadow:var(--s1)}
.com-chip[aria-pressed="true"] .n{background:rgba(255,255,255,.22);color:#fff}
.com-cuenta{font-size:var(--t-sm);color:var(--muted);margin-left:auto}

/* -- rejilla de tarjetas -- */
.com-rejilla{display:grid;gap:1.4rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.com-tarj{position:relative;display:flex;flex-direction:column;overflow:hidden;
  background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  box-shadow:var(--s1);transition:.45s var(--ease)}
.com-tarj:hover{transform:translateY(-6px);box-shadow:var(--s2);border-color:var(--brand)}
.com-tarj.oculta{display:none}
.com-tarj .im{aspect-ratio:16/9;overflow:hidden;background:var(--menta);position:relative}
.com-tarj .im img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.com-tarj:hover .im img{transform:scale(1.05)}
.com-tarj .cu{padding:1.2rem 1.3rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.com-tarj h3{line-height:1.25}
.com-tarj p{color:var(--muted);flex:1;margin:0}
.com-tarj a.leer::after{content:"";position:absolute;inset:0}

/* etiqueta río / carretera */
.com-et{position:absolute;top:.8rem;left:.8rem;z-index:2;
  display:inline-flex;align-items:center;gap:.38rem;
  font-size:var(--t-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  padding:.35rem .7rem;border-radius:999px;color:#fff;
  background:rgba(10,42,10,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.com-et i{width:7px;height:7px;border-radius:50%;background:var(--sol);flex:none}
.com-et.rio i{background:var(--cielo)}
.com-et.carretera i{background:var(--sol)}

/* portada decorativa para comunidades sin fotografía */
.com-portada{width:100%;height:100%;display:block;
  background:linear-gradient(145deg,var(--vivo) 0%,var(--brand) 55%,var(--oscuro) 100%)}
.com-portada .ini{font-family:var(--fd);font-size:76px;font-weight:800;
  fill:rgba(255,255,255,.9)}
.com-portada .ola{fill:var(--cielo);opacity:.55}
.com-portada .ola2{fill:var(--sol);opacity:.35}

/* -- cifras del hub -- */
.com-cifras{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  margin-top:2.4rem}
.com-cifra{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-sm);
  padding:1.3rem 1.2rem;text-align:center;box-shadow:var(--s1)}
.com-cifra b{display:block;font-family:var(--fd);font-size:clamp(1.9rem,4vw,2.5rem);
  font-weight:800;line-height:1;color:var(--brand)}
.com-cifra span{display:block;margin-top:.45rem;font-size:var(--t-sm);color:var(--muted);
  letter-spacing:.02em}

/* contador de visitas (portada) · la cifra total destaca en el verde del sitio */
.visitas-cifras{max-width:980px;margin-inline:auto}
.visitas-cifras .visitas-total{background:linear-gradient(150deg,var(--brand),#0A4A14);border-color:transparent}
.visitas-cifras .visitas-total b{color:#fff}
.visitas-cifras .visitas-total span{color:#E6F5E2}
.visitas-vivo{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:#22C321;
  margin-right:.4rem;vertical-align:.08em;box-shadow:0 0 0 0 rgba(34,195,33,.55);animation:visitas-latido 2s infinite}
@keyframes visitas-latido{70%{box-shadow:0 0 0 7px rgba(34,195,33,0)}100%{box-shadow:0 0 0 0 rgba(34,195,33,0)}}
@media (prefers-reduced-motion:reduce){.visitas-vivo{animation:none}}
.visitas-nota{margin:1.4rem auto 0;text-align:center;font-size:var(--t-sm);color:var(--muted);max-width:640px}

/* -- ficha de comunidad -- */
.com-datos{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  margin:1.8rem 0 2.2rem}
.com-dato{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-sm);
  padding:1rem 1.1rem}
.com-dato b{display:block;font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;
  color:var(--brand);margin-bottom:.3rem}
.com-dato span{font-size:var(--t-base);color:var(--ink)}

/* navegación entre comunidades */
.com-vecinas{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
  margin-top:1rem}

@media(max-width:560px){
  .com-cuenta{margin-left:0;width:100%}
  .com-filtros{gap:.45rem}
}
@media(prefers-reduced-motion:reduce){
  .com-tarj,.com-tarj .im img,.com-chip{transition:none}
  .com-tarj:hover{transform:none}
  .com-tarj:hover .im img{transform:none}
}

/* la ficha de comunidad, cuando es enlace a su propia página */
a.vv-item,a.vereda{color:inherit;text-decoration:none}
a.vv-item:hover b,a.vereda:hover b{color:var(--brand)}
a.vv-item:focus-visible,a.vereda:focus-visible{outline:3px solid var(--acento);outline-offset:3px}
.vv-item .vv-et{flex:none;align-self:center;margin-left:auto;
  font-size:var(--t-xs);font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:.24rem .55rem;border-radius:999px;color:var(--azul);
  background:color-mix(in oklab,var(--cielo) 13%,transparent)}

/* ==========================================================================
   BIENVENIDA  ·  mensaje de portada y los tres accesos temáticos
   ========================================================================== */
.bienvenida{padding:clamp(3rem,7vw,5.5rem) 0;position:relative;overflow:hidden}
.bienvenida::before{content:"";position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(60% 55% at 12% 0%, color-mix(in oklab,var(--vivo) 9%,transparent) 0%, transparent 70%),
    radial-gradient(50% 50% at 92% 100%, color-mix(in oklab,var(--cielo) 9%,transparent) 0%, transparent 70%)}
.bien-texto{max-width:60ch}
.bien-guia{font-family:var(--fd);font-size:clamp(1.15rem,2.3vw,1.5rem);font-weight:400;
  line-height:1.45;color:var(--ink);margin:.9rem 0 1rem}
.bien-texto p{color:var(--muted);line-height:1.75}

.bien-fuerza{margin:clamp(2.2rem,5vw,3.4rem) 0 0;padding:clamp(1.6rem,4vw,2.6rem);
  border-radius:var(--r);color:#fff;position:relative;overflow:hidden;
  background:linear-gradient(135deg,var(--oscuro) 0%,#0E4416 55%,var(--brand) 100%)}
.bien-fuerza::after{content:"";position:absolute;right:-60px;bottom:-80px;width:280px;height:280px;
  border-radius:50%;background:color-mix(in oklab,var(--sol) 22%,transparent);filter:blur(10px)}
.bien-fuerza h2{margin:0 0 .8rem;position:relative;z-index:1}
.bien-fuerza p{color:rgba(255,255,255,.88);max-width:62ch;position:relative;z-index:1;line-height:1.7}
.bien-lema{margin-top:.9rem;font-family:var(--fd);font-size:clamp(1.05rem,2.2vw,1.3rem);
  font-weight:600;color:var(--sol)!important}

.bien-rej{display:grid;gap:1.1rem;margin-top:1.4rem;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.bien-card{display:flex;flex-direction:column;gap:.55rem;
  padding:1.5rem 1.5rem 1.3rem;border-radius:var(--r);
  background:var(--sup);border:1px solid var(--borde);box-shadow:var(--s1);
  color:inherit;text-decoration:none;transition:.45s var(--ease)}
.bien-card:hover{transform:translateY(-6px);box-shadow:var(--s2);border-color:var(--brand)}
.bien-card:focus-visible{outline:3px solid var(--acento);outline-offset:3px}
.bien-ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;
  background:color-mix(in oklab,var(--brand) 11%,transparent);color:var(--brand);margin-bottom:.3rem}
.bien-card b{font-family:var(--fd);font-size:var(--t-lg);line-height:1.25}
.bien-d{font-size:var(--t-sm);color:var(--muted);line-height:1.6;flex:1}
.bien-ir{display:inline-flex;align-items:center;gap:.4rem;margin-top:.4rem;
  font-size:var(--t-sm);font-weight:700;color:var(--brand);transition:gap .3s var(--ease)}
.bien-card:hover .bien-ir{gap:.75rem}

@media(prefers-reduced-motion:reduce){
  .bien-card{transition:none}
  .bien-card:hover{transform:none}
}

/* ==========================================================================
   MISIÓN · VISIÓN · PRINCIPIOS
   ========================================================================== */
.mv-par{display:grid;gap:1.4rem;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  margin-top:2rem}
.mv-par.mv-solo{grid-template-columns:1fr;max-width:64rem;margin-inline:auto}
.mv-caja{position:relative;padding:clamp(1.6rem,3.4vw,2.4rem);border-radius:var(--r);
  background:var(--sup);border:1px solid var(--borde);box-shadow:var(--s1);
  transition:.45s var(--ease)}
.mv-caja:hover{box-shadow:var(--s2);transform:translateY(-4px)}
.mv-caja::before{content:"";position:absolute;left:0;top:1.6rem;bottom:1.6rem;width:4px;
  border-radius:0 4px 4px 0;background:var(--brand)}
.mv-caja p{color:var(--muted);line-height:1.75;margin:0}
.mv-et{display:inline-block;font-family:var(--fd);font-size:var(--t-xl);font-weight:800;
  color:var(--brand);margin-bottom:.9rem;letter-spacing:.01em}
.mv-et b{font-weight:800;color:var(--acento)}
.mv-vision{background:linear-gradient(150deg,color-mix(in oklab,var(--cielo) 7%,var(--sup)) 0%,var(--sup) 60%)}
.mv-vision::before{background:var(--acento)}
.mv-vision .mv-et{color:var(--azul)}

.mv-tit-principios{font-family:var(--fd);font-size:clamp(1.3rem,2.8vw,1.8rem);
  margin:clamp(2.2rem,5vw,3.2rem) 0 1.2rem}
/* Los ocho principios, en una sola fila.
   Con "auto-fit,minmax(215px,1fr)" salian cinco en la primera fila y
   tres en la segunda: la ultima quedaba coja y el bloque se leia como
   una lista cortada. Ocho columnas fijas lo presentan como lo que es,
   un conjunto cerrado de ocho. Como la celda queda estrecha, el numero
   va encima del texto y no al lado. */
.mv-principios{list-style:none;margin:0;padding:0;display:grid;gap:.7rem;
  grid-template-columns:repeat(4,1fr);align-items:stretch}
.mv-principios li{display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:.55rem;
  padding:1rem .6rem;border-radius:var(--r-sm);background:var(--sup);
  border:1px solid var(--borde);transition:.35s var(--ease)}
.mv-principios li:hover{border-color:var(--brand);transform:translateY(-3px);box-shadow:var(--s1)}
.mv-num{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;
  font-size:var(--t-etiqueta);font-weight:800;color:var(--brand);
  font-variant-numeric:tabular-nums;
  background:color-mix(in oklab,var(--brand) 11%,transparent)}
.mv-principios b{font-size:var(--t-apoyo);line-height:1.3;font-weight:600}
/* al estrecharse, siempre en un numero de columnas que divide a ocho */
@media (max-width:1100px){.mv-principios{grid-template-columns:repeat(4,1fr)}}
@media (max-width:560px){ .mv-principios{grid-template-columns:repeat(2,1fr)}}

@media(prefers-reduced-motion:reduce){
  .mv-caja,.mv-principios li{transition:none}
  .mv-caja:hover,.mv-principios li:hover{transform:none}
}

/* bloque narrativo de historia */
.hist-texto{max-width:74ch;margin-top:1.4rem}
.hist-texto p{color:var(--muted);line-height:1.8;margin-bottom:1rem}
.hist-texto .bien-guia{color:var(--ink);margin-bottom:1.2rem}

/* ==========================================================================
   MEDIOS  ·  enlaces y videos externos sobre el territorio
   ========================================================================== */
.med-rej{display:grid;gap:1.1rem;margin-top:1.6rem;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.med-card{display:flex;flex-direction:column;gap:.5rem;padding:1.4rem 1.5rem;
  border-radius:var(--r);background:var(--sup);border:1px solid var(--borde);
  box-shadow:var(--s1);color:inherit;text-decoration:none;transition:.45s var(--ease)}
.med-card:hover{transform:translateY(-5px);box-shadow:var(--s2);border-color:var(--brand)}
.med-card:focus-visible{outline:3px solid var(--acento);outline-offset:3px}
.med-tipo{display:inline-flex;align-items:center;gap:.4rem;align-self:flex-start;
  font-size:var(--t-xs);font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  padding:.3rem .65rem;border-radius:999px;color:var(--brand);
  background:color-mix(in oklab,var(--brand) 11%,transparent)}
.med-tipo.med-video{color:var(--azul);background:color-mix(in oklab,var(--cielo) 13%,transparent)}
.med-card b{font-family:var(--fd);font-size:var(--t-lg);line-height:1.3;margin-top:.2rem}
.med-d{font-size:var(--t-sm);color:var(--muted);line-height:1.6;flex:1}
.med-fuente{display:inline-flex;align-items:center;gap:.4rem;margin-top:.4rem;
  font-size:var(--t-xs);font-weight:700;color:var(--brand)}
@media(prefers-reduced-motion:reduce){
  .med-card{transition:none}
  .med-card:hover{transform:none}
}

/* ==========================================================================
   Corrección · en pantallas pequeñas los revelados laterales empujaban el
   contenido 52 px fuera del ancho y la portada se podía deslizar en horizontal.
   En móvil el mismo efecto entra desde abajo: no desborda y se sigue viendo.
   ========================================================================== */
@media (max-width:900px){
  .rev-i,.rev-d{transform:translateY(26px)}
  .rev-i.ok,.rev-d.ok{transform:none}
  body{overflow-x:clip}
}

/* ==========================================================================
   MAPA DEL TERRITORIO  ·  las nueve comunidades sobre su eje
   ========================================================================== */
.mapa{display:grid;gap:1.4rem;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);
  align-items:start}
@media(max-width:940px){ .mapa{grid-template-columns:1fr} }

/* -- lienzo -- */
.mapa-lienzo{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  padding:.9rem .9rem .3rem;box-shadow:var(--s1);overflow:hidden}
.mapa-svg{display:block;width:100%;height:auto;overflow:visible;touch-action:manipulation}
.mapa-pieza{margin:.2rem .3rem .7rem;font-size:var(--t-xs);color:var(--muted);line-height:1.5}

/* -- trazos -- */
.mapa-svg .rio-borde{fill:none;stroke:color-mix(in oklab,var(--cielo) 34%,transparent);
  stroke-width:19;stroke-linecap:round}
.mapa-svg .rio{fill:none;stroke:url(#gRio);stroke-width:9;stroke-linecap:round}
.mapa-svg .via-borde{fill:none;stroke:color-mix(in oklab,var(--sol) 32%,transparent);
  stroke-width:14;stroke-linecap:round}
.mapa-svg .via{fill:none;stroke:#B98900;stroke-width:4;stroke-linecap:round;
  stroke-dasharray:14 11}
.mapa-svg .eje-txt{font-family:var(--fb);font-size:15px;font-weight:600;
  fill:var(--muted);letter-spacing:.01em}
.mapa-svg .via-txt{fill:#8C6800}

/* -- marcas de comunidad -- */
.mapa-svg .mp{cursor:pointer}
.mapa-svg .mp:focus{outline:none}
.mapa-svg .mp:focus-visible .mp-halo{stroke:var(--acento);stroke-width:3}
.mapa-svg .mp-halo{fill:#fff;stroke:var(--cielo);stroke-width:2.5;
  transition:r .35s var(--ease),stroke .35s}
.mapa-svg .mp-nucleo{fill:var(--azul);transition:r .35s var(--ease),fill .35s}
.mapa-svg .mp.carretera .mp-halo{stroke:#B98900}
.mapa-svg .mp.carretera .mp-nucleo{fill:#B98900}
.mapa-svg .mp-txt{font-family:var(--fd);font-size:17px;font-weight:600;
  fill:var(--muted);paint-order:stroke;stroke:var(--sup);stroke-width:5;
  transition:fill .35s,font-size .35s}
.mapa-svg .mp.on .mp-txt{fill:var(--ink);font-size:19px;font-weight:800}
.mapa-svg .mp.on .mp-halo{stroke-width:3.5}
.mapa-svg .mp-pulso{fill:none;stroke:var(--cielo);stroke-width:2;opacity:0;
  animation:mp-late 2.2s var(--ease) infinite}
.mapa-svg .mp.carretera .mp-pulso{stroke:#B98900}
@keyframes mp-late{
  0%{r:12;opacity:.55} 70%{r:26;opacity:0} 100%{r:26;opacity:0}
}

/* -- ficha lateral -- */
.mapa-ficha{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  overflow:hidden;box-shadow:var(--s1);display:flex;flex-direction:column}
.mapa-foto{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--menta)}
.mapa-foto img,.mapa-foto .com-portada{width:100%;height:100%;object-fit:cover;display:block}
.mapa-cuerpo{padding:1.2rem 1.3rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.mapa-parada{margin:0;font-size:var(--t-xs);font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--brand)}
.mapa-cuerpo h3{line-height:1.2;margin:0}
.mapa-d{margin:0;color:var(--muted);font-size:var(--t-apoyo);line-height:1.6;flex:1}
.mapa-como{margin:0;display:flex;align-items:center;gap:.4rem;
  font-size:var(--t-sm);color:var(--azul);font-weight:600}
.mapa-cuerpo .btn{align-self:flex-start;margin-top:.5rem}

/* -- mando -- */
.mapa-mando{grid-column:1;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:-.2rem}
@media(max-width:940px){ .mapa-mando{grid-column:auto} }
.mapa-btn{font:inherit;font-size:var(--t-sm);font-weight:700;cursor:pointer;
  display:inline-flex;align-items:center;gap:.5rem;
  min-height:44px;padding:.55rem .9rem;border-radius:999px;
  background:var(--sup);color:var(--ink);border:1px solid var(--borde);
  transition:.3s var(--ease)}
.mapa-btn:hover{border-color:var(--brand);transform:translateY(-2px)}
.mapa-btn:focus-visible{outline:3px solid var(--acento);outline-offset:2px}
.mapa-play.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.mapa-pistas{font-size:var(--t-xs);color:var(--muted);margin-left:auto}
@media(max-width:620px){ .mapa-pistas{display:none} }

/* -- leyenda -- */
.mapa-leyenda{grid-column:1 / -1;display:grid;gap:.8rem;
  grid-template-columns:repeat(auto-fit,minmax(290px,1fr));margin-top:.4rem}
.mapa-lg{margin:0;display:flex;gap:.7rem;align-items:flex-start;
  padding:.9rem 1.1rem;border-radius:var(--r-sm);
  background:var(--sup);border:1px solid var(--borde);
  font-size:var(--t-sm);color:var(--muted);line-height:1.6}
.mapa-lg b{color:var(--ink)}
.mapa-pt{flex:none;width:12px;height:12px;border-radius:50%;margin-top:.42rem;
  background:var(--azul);box-shadow:0 0 0 3px color-mix(in oklab,var(--cielo) 25%,transparent)}
.mapa-pt.carretera{background:#B98900;
  box-shadow:0 0 0 3px color-mix(in oklab,var(--sol) 30%,transparent)}

/* respaldo sin JavaScript */
.mapa-previo .mapa-leyenda{margin-bottom:1.2rem}

@media(prefers-reduced-motion:reduce){
  .mapa-svg .mp-pulso{animation:none;opacity:0}
  .mapa-svg .mp-halo,.mapa-svg .mp-nucleo,.mapa-svg .mp-txt,.mapa-btn{transition:none}
  .mapa-btn:hover{transform:none}
}

/* rótulo de eje del mapa */
.mapa-svg .eje-rot{font-family:var(--fb);font-size:15px;font-weight:800;
  letter-spacing:.14em;fill:var(--azul)}
.mapa-svg .eje-rot.via-txt{fill:#8C6800}

/* área de toque del punto: invisible pero cómoda para el dedo */
.mapa-svg .mp-tap{fill:transparent;stroke:none}

/* en pantallas angostas el esquema no se encoge hasta hacerse ilegible:
   conserva un ancho mínimo y se recorre con el dedo */
@media(max-width:700px){
  .mapa-lienzo{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.2rem}
  .mapa-svg{min-width:600px}
  .mapa-pieza{position:sticky;left:0}
}

/* navegación al cerrar una ficha de comunidad */
.volver-pie{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:2rem;
  padding-top:1.6rem;border-top:1px solid var(--borde)}
.volver-pie .btn{display:inline-flex;align-items:center;gap:.45rem}

/* ==========================================================================
   TIRA DE COMUNIDADES  ·  la fotografía de cada una, bajo el esquema
   ========================================================================== */
.mapa-tira{grid-column:1 / -1;display:grid;gap:.6rem;
  grid-template-columns:repeat(9,minmax(0,1fr));margin-top:.2rem}
.mapa-tira-b{font:inherit;cursor:pointer;padding:0;text-align:left;
  background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-sm);
  overflow:hidden;display:flex;flex-direction:column;
  transition:.35s var(--ease)}
.mapa-tira-b:hover{transform:translateY(-3px);box-shadow:var(--s1);border-color:var(--brand)}
.mapa-tira-b:focus-visible{outline:3px solid var(--acento);outline-offset:2px}
.mapa-tira-b[aria-pressed="true"]{border-color:var(--azul);box-shadow:var(--s2);
  transform:translateY(-3px)}
.mapa-tira-b.carretera[aria-pressed="true"]{border-color:#B98900}
.mapa-tira-im{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--menta);
  position:relative}
.mapa-tira-im img,.mapa-tira-im .com-portada{width:100%;height:100%;object-fit:cover;display:block}
.mapa-tira-im .com-portada .ini{display:none}   /* en miniatura basta el color: el nombre va debajo */
.mapa-tira-b::after{content:"";display:block;height:3px;background:transparent;
  transition:background .3s}
.mapa-tira-b[aria-pressed="true"]::after{background:var(--azul)}
.mapa-tira-b.carretera[aria-pressed="true"]::after{background:#B98900}
.mapa-tira-n{display:block;padding:.5rem .55rem;font-size:var(--t-xs);font-weight:700;
  line-height:1.25;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis}
.mapa-tira-b[aria-pressed="true"] .mapa-tira-n{color:var(--ink)}

@media(max-width:1100px){
  .mapa-tira{grid-template-columns:repeat(5,minmax(0,1fr))}
}
@media(max-width:700px){
  .mapa-tira{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;
    scroll-snap-type:x proximity;padding-bottom:.4rem}
  .mapa-tira-b{flex:0 0 128px;scroll-snap-align:start}
}

/* -- version compacta (portada) ----------------------------------------
   Al pasar el cursor por la tira de comunidades hay que ver, a la vez, el
   esquema y la fotografia de la ficha. A tamano completo el conjunto medía
   unos 630 px y no cabia bajo la cabecera fija: ahora cabe en una pantalla
   de portatil (1280 x 720). */
@media(min-width:941px){
  .mapa{max-width:1000px;margin-inline:auto;gap:1rem 1.1rem;
    grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr)}
  .mapa-lienzo{padding:.6rem .7rem 0}
  .mapa-pieza{margin:.1rem .2rem .5rem}
  .mapa-foto{aspect-ratio:2/1}
  .mapa-cuerpo{padding:.8rem 1rem 1rem;gap:.3rem}
  .mapa-cuerpo h3{font-size:1.2rem}
  .mapa-d{font-size:var(--t-sm);line-height:1.5;flex:0 1 auto}
  .mapa-cuerpo .btn{margin-top:.35rem;min-height:40px;padding:.55rem 1.1rem}
  .mapa-tira{gap:.45rem}
  .mapa-tira-im{aspect-ratio:16/10}
  .mapa-tira-n{padding:.32rem .45rem;font-size:.72rem}
  .mapa-tira-b:hover,.mapa-tira-b[aria-pressed="true"]{transform:translateY(-2px)}
}
@media(prefers-reduced-motion:reduce){
  .mapa-tira-b{transition:none}
  .mapa-tira-b:hover{transform:none}
  .mapa-tira-b[aria-pressed="true"]{transform:none}
}

/* ==========================================================================
   NOVEDADES DEL TERRITORIO  ·  destacado con video y rejilla de novedades
   ========================================================================== */

/* ---------- el destacado ---------- */
.nv-destacado{display:grid;gap:0;grid-template-columns:minmax(0,1.15fr) minmax(320px,1fr);
  background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  overflow:hidden;box-shadow:var(--s2);margin-top:2rem;position:relative}
.nv-destacado::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;
  border-radius:var(--r);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
@media(max-width:880px){ .nv-destacado{grid-template-columns:1fr} }

.nv-destacado-cu{padding:clamp(1.5rem,3.4vw,2.4rem);display:flex;flex-direction:column;
  gap:.75rem;justify-content:center}
.nv-marca{align-self:flex-start;display:inline-flex;align-items:center;gap:.4rem;
  font-size:var(--t-xs);font-weight:800;letter-spacing:.13em;text-transform:uppercase;
  padding:.32rem .7rem;border-radius:999px;
  color:var(--brand);background:color-mix(in oklab,var(--brand) 12%,transparent)}
.nv-destacado-cu h3{font-family:var(--fd);font-weight:800;
  font-size:clamp(1.35rem,3vw,1.95rem);line-height:1.15;margin:0;text-wrap:balance}
.nv-destacado-cu p{color:var(--muted);line-height:1.7;margin:0;}
.nv-enlaces{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.5rem}
.nv-enlaces .btn{display:inline-flex;align-items:center;gap:.45rem}

.nv-fuente{margin:.4rem 0 0}
.nv-sello{display:inline-block;font-size:var(--t-xs);font-weight:700;letter-spacing:.02em;
  color:var(--muted);border:1px solid var(--borde);border-radius:999px;padding:.22rem .65rem}

/* ---------- la fachada de video ---------- */
.nv-video{position:relative;overflow:hidden;background:var(--oscuro);
  aspect-ratio:16/9;display:block}
.nv-video .pic,.nv-video picture{display:block;width:100%;height:100%}
.nv-video img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .9s var(--ease),filter .5s var(--ease)}
.nv-video::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(10,42,10,.05) 0%,rgba(10,42,10,.45) 100%);
  transition:opacity .5s}
.nv-video:hover img{transform:scale(1.055)}
.nv-video:hover::after{opacity:.72}

.nv-play{position:absolute;inset:0;z-index:2;width:100%;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7rem;
  background:none;border:0;cursor:pointer;font:inherit;color:#fff;padding:0}
.nv-play:focus-visible{outline:3px solid var(--sol);outline-offset:-5px}
.nv-play-ic{width:74px;height:74px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.16);color:#fff;
  border:2px solid rgba(255,255,255,.8);
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  padding-left:5px;   /* centra ópticamente el triángulo */
  transition:transform .45s var(--ease),background .45s,border-color .45s,box-shadow .45s}
.nv-play::before{content:"";position:absolute;width:74px;height:74px;border-radius:50%;
  border:2px solid rgba(255,255,255,.55);
  animation:nv-onda 2.8s var(--ease) infinite;pointer-events:none}
.nv-video.peq .nv-play-ic{width:56px;height:56px;padding-left:4px}
.nv-video.peq .nv-play::before{width:56px;height:56px}
.nv-play:hover .nv-play-ic,.nv-play:focus-visible .nv-play-ic{
  transform:scale(1.1);background:var(--brand);border-color:var(--brand);
  box-shadow:0 10px 34px rgba(10,35,25,.4)}
.nv-play-txt{font-size:var(--t-sm);font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  text-shadow:0 1px 10px rgba(0,0,0,.55)}
@keyframes nv-onda{
  0%{transform:scale(1);opacity:.6} 70%{transform:scale(1.55);opacity:0} 100%{opacity:0}
}
.nv-video.cargado{aspect-ratio:16/9}
.nv-video.cargado::after{display:none}
.nv-video iframe{width:100%;height:100%;border:0;display:block}

/* la marquita de la esquina */
.nv-dur{position:absolute;top:.8rem;left:.8rem;z-index:2;
  font-size:var(--t-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:.3rem .65rem;border-radius:999px;color:#fff;
  background:rgba(10,42,10,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}

/* ---------- la rejilla ---------- */
.nv-rejilla{display:grid;gap:1.3rem;margin-top:1.3rem;
  grid-template-columns:repeat(auto-fit,minmax(255px,1fr))}
.nv-tarj{display:flex;flex-direction:column;overflow:hidden;position:relative;
  background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  box-shadow:var(--s1);transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .4s}
.nv-tarj:hover{transform:translateY(-6px);box-shadow:var(--s2);border-color:var(--brand)}
.nv-im{display:block;position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--menta)}
.nv-im img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .9s var(--ease)}
.nv-tarj:hover .nv-im img{transform:scale(1.06)}
.nv-cu{padding:1.2rem 1.3rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;flex:1;
  position:relative;z-index:1}
.nv-cu h3{font-family:var(--fd);line-height:1.28;margin:0}
.nv-cu p{color:var(--muted);line-height:1.6;margin:0;flex:1}
.nv-cu .leer{margin-top:.3rem}
.nv-et{align-self:flex-start;font-size:var(--t-xs);font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:var(--brand)}

/* novedades todavía sin fotografía: fondo gráfico en lugar de imagen prestada */
.nv-breve{color:#fff;border-color:transparent;min-height:230px;justify-content:flex-end}
.nv-breve .nv-grafico{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:block}
.nv-breve .nv-cu{padding:1.4rem 1.4rem 1.5rem}
.nv-breve .nv-et{color:var(--sol)}
.nv-breve h3{color:#fff}
.nv-breve p{color:rgba(255,255,255,.85)}
.nv-breve:hover{border-color:var(--sol)}

@media(prefers-reduced-motion:reduce){
  .nv-play::before{animation:none;opacity:0}
  .nv-video img,.nv-tarj,.nv-im img,.nv-play-ic{transition:none}
  .nv-video:hover img,.nv-tarj:hover .nv-im img{transform:none}
  .nv-tarj:hover{transform:none}
  .nv-play:hover .nv-play-ic{transform:none}
}

/* la tarjeta de acceso, cuando además lleva una línea de contenido */
.acceso b{display:block;font-weight:800;font-size:var(--t-base);line-height:1.25}
.acceso-d{display:block;font-weight:400;font-size:var(--t-sm);line-height:1.55;opacity:.72}
.acceso:hover .acceso-d,.acceso:focus-visible .acceso-d{opacity:.92}

/* ==========================================================================
   Corrección · en pantallas medianas la tarjeta de acceso pasa a fila.
   Con los rótulos cortos de antes funcionaba; con una línea de contenido
   el título quedaba exprimido en una columna de 62 px. Ahora el icono va
   al lado y el texto ocupa su propio renglón completo.
   ========================================================================== */
@media(max-width:980px){
  .acceso{flex-wrap:wrap;align-items:center!important}
  .acceso .ic-caja{flex:none}
  .acceso b{flex:1 1 0;min-width:0;font-size:var(--t-base)}
  .acceso .acceso-d{flex:1 0 100%;margin-top:-.2rem}
  .acceso .flecha-a{display:inline-flex!important;flex:1 0 100%;margin-top:.15rem;font-size:var(--t-xs)}
}
@media(max-width:520px){
  .acceso .acceso-d{font-size:var(--t-sm)}
}

/* ==========================================================================
   NOVEDADES DEL TERRITORIO · tres tarjetas iguales sobre una pista deslizable
   ========================================================================== */
.nv2{margin-top:2rem}

/* -- el visor y las flechas -- */
.nv2-visor{position:relative}
.nv2-pista{
  display:grid;grid-auto-flow:column;
  grid-auto-columns:calc((100% - 2*20px)/3);
  gap:20px;
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
  scroll-padding-left:0;
  padding:.4rem .3rem 1.1rem;margin:-.4rem -.3rem 0;
  scrollbar-width:none;-ms-overflow-style:none;
  -webkit-overflow-scrolling:touch}
.nv2-pista::-webkit-scrollbar{display:none}
.nv2-pista:focus-visible{outline:3px solid var(--acento);outline-offset:4px;border-radius:var(--r)}
.nv2-card{scroll-snap-align:start}

@media(max-width:1000px){ .nv2-pista{grid-auto-columns:calc((100% - 20px)/2)} }
@media(max-width:660px){  .nv2-pista{grid-auto-columns:86%} }

.nv2-flecha{
  position:absolute;top:calc(50% - 46px);z-index:4;
  width:48px;height:48px;border-radius:50%;display:grid;place-items:center;
  cursor:pointer;color:var(--ink);
  background:var(--sup);border:1px solid var(--borde);
  box-shadow:var(--s2);
  transition:transform .35s var(--ease),background .35s,color .35s,opacity .35s}
.nv2-flecha.izq{left:-16px}
.nv2-flecha.der{right:-16px}
.nv2-flecha:hover{background:var(--brand);color:#fff;border-color:var(--brand);transform:scale(1.09)}
.nv2-flecha:focus-visible{outline:3px solid var(--acento);outline-offset:2px}
.nv2-flecha.apagada{opacity:0;pointer-events:none;transform:scale(.85)}
@media(max-width:1180px){ .nv2-flecha.izq{left:2px} .nv2-flecha.der{right:2px} }
@media(max-width:660px){ .nv2-flecha{display:none} }

/* -- la tarjeta -- */
.nv2-card{
  position:relative;display:flex;flex-direction:column;overflow:hidden;
  background:var(--sup);border:1px solid var(--borde);border-radius:var(--r);
  box-shadow:var(--s1);
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .4s}
.nv2-card::after{
  content:"";position:absolute;inset:0;z-index:3;pointer-events:none;
  border-radius:var(--r);opacity:0;transition:opacity .45s;
  background:linear-gradient(135deg,color-mix(in oklab,var(--vivo) 55%,transparent),transparent 45%);
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;-webkit-mask-composite:xor;padding:1.5px}
.nv2-card:hover{transform:translateY(-7px);box-shadow:var(--s3);border-color:transparent}
.nv2-card:hover::after{opacity:1}

.nv2-media{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;
  background:var(--oscuro);flex:none}
.nv2-media img,.nv2-grafico{width:100%;height:100%;object-fit:cover;display:block}
.nv2-media img{transition:transform .95s var(--ease)}
.nv2-card:hover .nv2-media img{transform:scale(1.07)}
.nv2-media::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(10,42,10,0) 40%,rgba(10,42,10,.5) 100%)}
.nv2-media.cargado{aspect-ratio:16/9}
.nv2-media.cargado::before{display:none}
.nv2-media iframe{width:100%;height:100%;border:0;display:block}

/* etiqueta */
.nv2-et{position:absolute;top:.75rem;left:.75rem;z-index:2;
  font-size:var(--t-xs);font-weight:800;letter-spacing:.11em;text-transform:uppercase;
  padding:.3rem .62rem;border-radius:999px;color:#fff;
  background:rgba(10,42,10,.74);
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.nv2-et.video{background:rgba(21,115,196,.86)}
.nv2-et.proyecto{background:rgba(11,122,31,.86)}
.nv2-et.territorio{background:rgba(140,104,0,.86)}

/* boton de reproducir */
.nv2-play{position:absolute;inset:0;z-index:2;width:100%;height:100%;
  display:grid;place-items:center;background:none;border:0;cursor:pointer;padding:0;color:#fff}
.nv2-play:focus-visible{outline:3px solid var(--sol);outline-offset:-5px}
.nv2-play-ic{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;
  padding-left:4px;
  background:rgba(255,255,255,.18);border:2px solid rgba(255,255,255,.85);
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  transition:transform .45s var(--ease),background .45s,border-color .45s,box-shadow .45s}
.nv2-play::before{content:"";position:absolute;width:58px;height:58px;border-radius:50%;
  border:2px solid rgba(255,255,255,.5);animation:nv2-onda 2.9s var(--ease) infinite}
.nv2-play:hover .nv2-play-ic,.nv2-play:focus-visible .nv2-play-ic{
  transform:scale(1.12);background:var(--brand);border-color:var(--brand);
  box-shadow:0 12px 32px rgba(10,35,25,.45)}
@keyframes nv2-onda{0%{transform:scale(1);opacity:.55}70%{transform:scale(1.6);opacity:0}100%{opacity:0}}

/* cuerpo */
.nv2-cu{padding:1.15rem 1.25rem 1.3rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.nv2-cu h3{font-family:var(--fd);line-height:1.3;margin:0;text-wrap:balance}
.nv2-cu p{color:var(--muted);line-height:1.6;margin:0;flex:1}
.nv2-pie{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;
  margin-top:.35rem;padding-top:.7rem;border-top:1px solid var(--borde)}
.nv2-fuente{font-size:var(--t-xs);font-weight:700;color:var(--muted);
  border:1px solid var(--borde);border-radius:999px;padding:.2rem .58rem}
.nv2-pie .leer{margin-left:auto;font-size:var(--t-sm)}

/* -- mando: puntos -- */
.nv2-mando{display:flex;align-items:center;gap:1rem;margin-top:.4rem}
.nv2-puntos{display:flex;gap:.4rem}
.nv2-punto{width:9px;height:9px;padding:0;border:0;border-radius:999px;cursor:pointer;
  background:color-mix(in oklab,var(--ink) 18%,transparent);
  transition:width .4s var(--ease),background .4s}
.nv2-punto:hover{background:color-mix(in oklab,var(--brand) 45%,transparent)}
.nv2-punto:focus-visible{outline:2px solid var(--acento);outline-offset:3px}
.nv2-punto.on{width:26px;background:var(--brand)}
.nv2-pista-txt{font-size:var(--t-xs);color:var(--muted);margin-left:auto}
@media(max-width:560px){ .nv2-pista-txt{display:none} }

@media(prefers-reduced-motion:reduce){
  .nv2-pista{scroll-behavior:auto!important}
  .nv2-play::before{animation:none;opacity:0}
  .nv2-card,.nv2-media img,.nv2-play-ic,.nv2-flecha,.nv2-punto{transition:none}
  .nv2-card:hover{transform:none}
  .nv2-card:hover .nv2-media img{transform:none}
  .nv2-flecha:hover{transform:none}
}

/* ==========================================================================
   NOVEDADES · botón «ver más» y cuenta de lo que se está mostrando
   ========================================================================== */
.noticias-mas{display:flex;flex-direction:column;align-items:center;gap:.7rem;
  margin-top:2.2rem}
.noticias-mas .btn{display:inline-flex;align-items:center;gap:.55rem;box-shadow:var(--s1)}
.noticias-mas .mas-flecha{transition:transform .4s var(--ease)}
.noticias-mas .btn[aria-expanded="true"] .mas-flecha{transform:rotate(180deg)}
.noticias-cuenta{margin:0;font-size:var(--t-apoyo);color:var(--muted);font-variant-numeric:tabular-nums}

/* las tarjetas que entran al desplegar no aparecen de golpe */
@media(prefers-reduced-motion:no-preference){
  .noticia-card{animation:nv-entra .5s var(--ease) both}
}
@keyframes nv-entra{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.noticia-card.oculta{display:none!important;animation:none}

/* nota de procedencia bajo un bloque de cifras */
.nota-fuente{max-width:74ch;margin:.9rem 0 0;font-size:var(--t-apoyo);line-height:1.6;
  color:var(--muted);padding-left:.9rem;border-left:3px solid var(--borde)}

/* el pie legal también lleva datos que no son enlace */
.pie-legal span{color:var(--muted);font-size:var(--t-sm)}

/* salida a YouTube bajo el reproductor, por si el iframe no arranca */
.noticia-media.cargado{position:relative}
.video-salida{position:absolute;left:0;right:0;bottom:0;z-index:4;
  display:block;text-align:center;padding:.4rem .6rem;
  font-size:var(--t-xs);font-weight:700;color:#fff;text-decoration:none;
  background:rgba(10,42,10,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:.82;transition:opacity .3s}
.noticia-media.cargado:hover .video-salida,
.video-salida:hover,.video-salida:focus-visible{opacity:1}
.video-salida:focus-visible{outline:2px solid var(--sol);outline-offset:-3px}

/* franja de cierre con el regreso al inicio */
.volver-seccion{padding:0 0 clamp(2.4rem,5vw,3.6rem)}
.volver-seccion .volver-pie{margin-top:0;padding-top:1.6rem;justify-content:center}
@media(max-width:520px){
  .volver-seccion .volver-pie{flex-direction:column}
  .volver-seccion .volver-pie .btn{justify-content:center}
}

/* ==================================================================
   19 · SISTEMA UNICO DE TITULOS DE SECCION   (clase .tit-sec)
   ------------------------------------------------------------------
   Antes cada bloque resolvia su titulo a su manera: unos con la raya
   corta, otros con la raya larga, otros sin ninguna, y un par en palo
   seco y en mayusculas. Todo eso se retiro de los bloques 5, 16.5 y
   de las reglas sueltas de cada seccion. Aqui queda UNA sola
   definicion y la comparte todo el sitio.

   Como se usa: basta poner la clase .tit-sec en el <h2> (o en el <h1>
   de una cabecera de seccion). La clase .titulo se conserva por
   compatibilidad con el marcado anterior, pero ya no define el
   aspecto: el aspecto lo pone .tit-sec.
   ================================================================== */

:root{
  --tit-sec:clamp(1.55rem,1.15rem + 1.7vw,2.45rem);  /* un solo tamano */
  --tit-raya-alto:5px;
  --tit-raya:var(--brand);          /* raya de titulo: verde institucional, sin amarillo */
  --tit-raya-clara:var(--vivo);     /* sobre fondo oscuro: verde vivo */
}

/* 19.1 · la letra -------------------------------------------------- */
.tit-sec{
  font-family:var(--fd);
  font-weight:700;
  font-size:var(--tit-sec);
  line-height:1.14;
  letter-spacing:-.022em;
  color:var(--oscuro);
  text-transform:none;          /* nunca mayusculas forzadas */
  text-wrap:balance;
  position:relative;
  display:inline-block;
  width:fit-content;      /* si el padre es flex o grid, el titulo
                            se sigue ajustando al ancho del texto */
  max-width:100%;
  margin:0 0 1.1rem;
  padding-bottom:.28em;         /* el hueco donde se apoya la raya */
}
h1.tit-sec{font-size:clamp(2rem,1.4rem + 2.6vw,3.2rem)}
.tit-sec em,.tit-sec i{font-style:normal;color:var(--brand)}
.tit-sec a.tit-enlace{color:inherit;text-decoration:none}
.tit-sec a.tit-enlace:hover,.tit-sec a.tit-enlace:focus-visible{color:var(--brand)}

/* 19.2 · la raya: verde del logo -> amarillo, al ancho del texto --- */
.tit-sec::after{
  content:'';
  position:absolute;
  left:0;right:0;bottom:0;
  height:var(--tit-raya-alto);
  border-radius:99px;
  background:var(--tit-raya);
  transform:scaleX(1);
  transform-origin:left center;
  transition:transform 1.25s var(--ease) .15s;
}

/* 19.3 · si el titulo va dentro de un bloque que se revela al bajar,
   la raya arranca recogida y crece al entrar en pantalla. Si el
   bloque no se revela (o el JS no llega a correr), la raya ya esta
   dibujada: ningun titulo se queda sin subrayar. */
:is(.rev,.rev-i,.rev-d,.rev-e,.cab-sec,.tit-bloque):not(.ok) .tit-sec::after{
  transform:scaleX(0)}

/* 19.4 · titulos centrados: la raya crece desde el centro ---------- */
.tit-bloque .tit-sec,
[style*="text-align:center"] .tit-sec{margin-inline:auto}
.tit-bloque .tit-sec::after,
.cab-sec .tit-sec::after,
[style*="text-align:center"] .tit-sec::after{transform-origin:center}

/* 19.5 · sobre fondo oscuro: letra blanca y raya mas luminosa ------ */
:is(.sec-tinta,.compromiso,.bien-fuerza,.diapo,.hero) .tit-sec{color:#fff}
:is(.sec-tinta,.compromiso,.bien-fuerza,.diapo,.hero) .tit-sec::after{
  background:var(--tit-raya-clara)}
:is(.sec-tinta,.compromiso,.bien-fuerza,.diapo,.hero) .tit-sec em{color:var(--sol)}

/* 19.6 · la rayita suelta de .tit-bloque ya no hace falta: el titulo
   trae la suya y las dos seguidas se veian repetidas. */
.tit-bloque .raya{display:none}

/* 19.7 · alto contraste: la raya se vuelve solida ------------------ */
body.contraste .tit-sec{color:var(--ink)}
body.contraste .tit-sec::after{background:var(--brand)}

/* 19.8 · pantallas pequenas ---------------------------------------- */
@media (max-width:560px){
  :root{--tit-sec:clamp(1.5rem,6.2vw,1.95rem);--tit-raya-alto:4px}
  .tit-sec{margin-bottom:.9rem;padding-bottom:.26em}
}


/* ==================================================================
   20 · RELATO DE FONDO   (.hist-texto)
   ------------------------------------------------------------------
   Este bloque es el unico texto largo y corrido del sitio: la
   historia del Consejo y la descripcion de la cuenca. Todo lo que
   lo rodea (las fichas de datos, los procesos, la linea de tiempo)
   ocupa el ancho completo, asi que el relato tenia que dejar de ser
   una columna estrecha pegada a la izquierda.

   Se compone como una pieza editorial:
     · una entradilla que abre y da el tono, en serif y con la raya
       de marca, a una medida corta;
     · el cuerpo en dos columnas de periodico separadas por un filete,
       con el ancho de linea en el rango comodo de lectura (45-75
       caracteres) en lugar de una linea larga o media pagina vacia.

   Nota de especificidad: el interlineado de la entradilla se declara
   aqui porque ".hist-texto p" (0,1,1) le ganaba a ".bien-guia"
   (0,1,0) y le imponia 1.8, que en serif abria demasiado las lineas.
   ================================================================== */

.hist-texto{max-width:none;margin-top:clamp(1.8rem,3.2vw,2.6rem)}
.hist-texto p{color:var(--muted);line-height:1.75;margin:0 0 1.1rem}

/* 20.1 · la entradilla --------------------------------------------- */
.hist-texto .bien-guia{
  font-family:var(--fd);
  font-weight:400;
  font-size:1.15rem;              /* entradilla de lectura: ~18 px, no un titular */
  line-height:1.6;
  color:var(--ink);
  max-width:850px;
  margin:0 0 2rem;
  padding:.1rem 0 .1rem clamp(1.05rem,1.7vw,1.55rem);
  border-left:4px solid var(--brand);      /* respaldo si no hay border-image */
  border-image:linear-gradient(180deg,
    var(--brand) 0%,var(--vivo) 52%,var(--sol) 100%) 1;
}

/* 20.2 · el cuerpo -------------------------------------------------- */
.hist-cuerpo{max-width:68ch}
.hist-cuerpo p:last-child{margin-bottom:0}

/* 20.3 · en pantalla ancha, dos columnas con filete ---------------- */
@media (min-width:1080px){
  .hist-cuerpo{
    max-width:none;
    columns:2;
    column-gap:clamp(2.6rem,4.4vw,4.2rem);
    column-rule:1px solid var(--borde);
    orphans:3;            /* que no quede una linea suelta al pie */
    widows:3;             /* ni una linea suelta al inicio */
  }
  .hist-cuerpo p{margin-top:0}
}

/* 20.4 · el subtitulo que cierra el bloque respira siempre igual --- */
.hist-texto + .mv-tit-principios{margin-top:clamp(2.6rem,5vw,3.6rem)}

/* 20.5 · al imprimir, el filete sobra ------------------------------ */
@media print{
  .hist-cuerpo{columns:auto;column-rule:none;max-width:none}
}

/* ==================================================================
   21 · NAVEGADOR DE SECCIONES   (.sec-nav / [data-panel])
   ------------------------------------------------------------------
   El problema: las paginas de seccion (El Consejo, Territorio,
   Tramites, Transparencia, Prensa) eran una tira larga con todo el
   contenido seguido. Al entrar por "consejo.html#mision" el
   navegador solo hacia un salto de ancla: seguian a la vista la
   historia, la junta y los aliados, y la persona no sabia donde
   estaba ni que mas habia.

   Ahora cada <section data-panel="..."> es un panel y el sitio
   dibuja encima una barra de secciones. Solo se ve el panel activo.

   MEJORA PROGRESIVA: el ocultamiento cuelga de .js-paneles, una
   clase que pone el guion en <html> despues de construir la barra.
   Sin JavaScript (o para un rastreador) la pagina se queda como
   estaba, con todo el contenido visible y accesible. Nada se
   esconde a costa del contenido.
   ================================================================== */

/* 21.1 · la barra de secciones ------------------------------------- */
.sec-nav{
  position:sticky;
  top:var(--alto-cab,64px);        /* el guion mide la cabecera real */
  z-index:400;
  background:color-mix(in oklab,var(--sup) 88%,transparent);
  backdrop-filter:blur(12px) saturate(1.3);
  -webkit-backdrop-filter:blur(12px) saturate(1.3);
  border-bottom:1px solid var(--borde);
  box-shadow:0 1px 0 var(--borde);
}
.sec-nav-in{
  max-width:var(--ancho);
  margin-inline:auto;
  padding-inline:clamp(1.1rem,4vw,2.4rem);
  display:flex;
  gap:.4rem;
  overflow-x:auto;
  scrollbar-width:none;
  scroll-snap-type:x proximity;
  padding-block:.55rem;
}
.sec-nav-in::-webkit-scrollbar{display:none}

/* difuminado en los bordes cuando la barra se desplaza -------------- */
.sec-nav-in{
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18px,
    #000 calc(100% - 18px),transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 18px,
    #000 calc(100% - 18px),transparent 100%);
}
@media (min-width:900px){
  .sec-nav-in{-webkit-mask-image:none;mask-image:none;flex-wrap:wrap;overflow:visible}
}

/* 21.2 · cada pestana ---------------------------------------------- */
.sec-tab{
  flex:0 0 auto;
  scroll-snap-align:center;
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.5rem clamp(.8rem,1.6vw,1.1rem);
  border:1px solid transparent;
  border-radius:99px;
  background:none;
  font-family:var(--fb);
  font-size:var(--t-sm);
  font-weight:700;
  line-height:1.2;
  color:var(--muted);
  white-space:nowrap;
  cursor:pointer;
  transition:color .3s var(--ease),background .3s var(--ease),
             border-color .3s var(--ease),transform .3s var(--ease);
}
.sec-tab:hover{color:var(--brand);background:color-mix(in oklab,var(--brand) 7%,transparent)}
.sec-tab:focus-visible{outline:3px solid var(--cielo);outline-offset:2px}

/* el numero de orden, discreto */
.sec-tab i{
  font-style:normal;
  font-size:var(--t-xs);
  font-weight:700;
  letter-spacing:.06em;
  opacity:.55;
  font-variant-numeric:tabular-nums;
}

/* 21.3 · la pestana activa ----------------------------------------- */
.sec-tab[aria-selected="true"]{
  color:#fff;
  background:linear-gradient(135deg,var(--brand),
    color-mix(in oklab,var(--vivo) 45%,var(--brand)));
  border-color:color-mix(in oklab,var(--brand) 60%,transparent);
  box-shadow:0 2px 10px color-mix(in oklab,var(--brand) 32%,transparent);
}
.sec-tab[aria-selected="true"] i{opacity:.75}

/* 21.4 · los paneles ------------------------------------------------ */
/* Solo se ocultan cuando el guion confirma que la barra existe. */
.js-paneles [data-panel][hidden]{display:none}
.js-paneles [data-panel]{animation:panel-entra .5s var(--ease) both}

@keyframes panel-entra{
  from{opacity:0;transform:translateY(14px)}
  to  {opacity:1;transform:none}
}

/* 21.5 · el destino exacto del enlace se senala un momento ---------
   Si alguien entra por "#mision", se abre el panel que lo contiene y
   ademas se le pone un cerco al bloque concreto, para que no tenga
   que buscarlo con la vista dentro del panel. */
.destino-marcado{
  animation:destino 2.4s var(--ease) both;
  border-radius:var(--r);
}
@keyframes destino{
  0%   {box-shadow:0 0 0 0 color-mix(in oklab,var(--vivo) 62%,transparent)}
  22%  {box-shadow:0 0 0 7px color-mix(in oklab,var(--vivo) 30%,transparent)}
  100% {box-shadow:0 0 0 0 transparent}
}

/* 21.6 · el aviso de "estas aqui" bajo la barra --------------------- */
.sec-nav-pie{
  max-width:var(--ancho);
  margin-inline:auto;
  padding:0 clamp(1.1rem,4vw,2.4rem) .5rem;
  font-size:var(--t-xs);
  color:var(--muted);
}
.sec-nav-pie b{color:var(--brand);font-weight:700}

/* 21.7 · con la transicion de vistas el cambio es un fundido -------- */
.js-paneles [data-panel]:not([hidden]){view-transition-name:panel-activo}
::view-transition-old(panel-activo){
  animation:vt-sale .26s var(--ease) both}
::view-transition-new(panel-activo){
  animation:vt-entra .42s var(--ease) both}
@keyframes vt-sale {to  {opacity:0;transform:translateY(-8px)}}
@keyframes vt-entra{from{opacity:0;transform:translateY(14px)}}

/* 21.8 · quien pide menos movimiento, no lo tiene ------------------- */
@media (prefers-reduced-motion: reduce){
  .js-paneles [data-panel]{animation:none}
  .destino-marcado{animation:none;outline:3px solid var(--vivo);outline-offset:4px}
  .sec-tab{transition:none}
  ::view-transition-old(panel-activo),
  ::view-transition-new(panel-activo){animation:none}
}

/* 21.9 · al imprimir se imprime todo, no solo el panel abierto ------ */
@media print{
  .sec-nav{display:none}
  .js-paneles [data-panel][hidden]{display:block !important}
}

/* ==================================================================
   22 · SISTEMA TIPOGRAFICO
   ------------------------------------------------------------------
   El sitio tenia 79 tamanos de letra distintos repartidos en 227
   declaraciones. Habia nueve tamanos casi identicos conviviendo
   (.9 .92 .93 .94 .95 .96 .97 .98 1rem) y seis mas en la banda de
   .8 a .89. Ninguna diferencia de esas se percibe como jerarquia:
   se percibe como descuadre. Cada componente habia elegido su
   tamano a ojo.

   Aqui se define UNA escala modular y todo el sitio se mapea sobre
   ella. Los cortes van en el punto medio entre paso y paso, asi que
   cada tamano viejo cae en el escalon mas cercano.

   DOS FAMILIAS, UNA REGLA SIN EXCEPCIONES
     Fraunces (--fd)  titulos, subtitulos y cifras destacadas.
     Karla    (--fb)  todo lo demas: texto corrido, listas, botones,
                      menus, fichas, etiquetas y formularios.
   ================================================================== */

:root{
  /* --- la escala ---------------------------------------------------
     Razon 1.125 en la zona de texto (donde los saltos grandes
     estorban) y 1.25 de los subtitulos hacia arriba (donde la
     jerarquia tiene que verse de lejos). */
  --t-xs   : .75rem;     /* 12px · etiquetas, antetitulos, pies    */
  --t-sm   : .875rem;    /* 14px · meta, tablas, texto de ficha    */
  --t-base : 1rem;       /* 16px · texto corrido                   */
  --t-lg   : 1.125rem;   /* 18px · entradillas                     */
  --t-xl   : 1.375rem;   /* 22px · subtitulos h3                   */
  --t-2xl  : 1.75rem;    /* 28px · titulos h2 menores              */
  --t-3xl  : 2.25rem;    /* 36px · titulo de pagina                */
  --t-4xl  : 3rem;       /* 48px · portada                         */

  /* --- interlineados: apretado arriba, holgado abajo ------------- */
  --int-titulo : 1.14;
  --int-medio  : 1.4;
  --int-texto  : 1.7;

  /* --- pesos: solo tres, los que las fuentes traen cargados ------
     Fraunces se carga en 400, 600 y 800; Karla en 300, 400, 500 y
     700. Pedir un peso que no esta cargado deja que el navegador lo
     invente (font-synthesis) y ahi es donde el mismo titulo se veia
     mas gordo en unos sitios que en otros. */
  --peso-normal : 400;
  --peso-medio  : 600;
  --peso-fuerte : 700;   /* Karla */
  --peso-titulo : 700;   /* Fraunces: se comprueba en pantalla */
}

/* --- los tamanos fluidos, los que crecen con el ancho -------------
   Antes habia 27 clamp() distintos, cada uno con su propia curva de
   crecimiento. Ahora son cinco, cada uno con un papel claro. */
:root{
  --td-lead : clamp(1.02rem,.97rem + .28vw,1.2rem);   /* entradilla sobre foto */
  --td-sub  : clamp(1.25rem,1.08rem + .82vw,1.85rem); /* frase destacada       */
  --td-cifra: clamp(1.8rem,1.35rem + 1.9vw,2.65rem);  /* cifras grandes        */
  --td-h1   : clamp(2rem,1.42rem + 2.9vw,3.6rem);     /* titulo de pagina      */
  --td-hero : clamp(2.4rem,1.7rem + 3.5vw,4rem);      /* portada y ventana     */
}

/* 22.1 · EL CONTROL DE TAMANO DE TEXTO, QUE NO FUNCIONABA ----------
   Los botones A / A / A+ de la barra de accesibilidad escriben
   --esc en <html>, pero la unica regla que lo usaba era
   "body{font-size:calc(1rem*var(--esc))}". Como el resto del sitio
   mide en rem (relativo a la RAIZ, no al body), cambiar el tamano
   no movia practicamente nada: el control prometia algo que no
   hacia. Aplicando el multiplicador en la raiz, cada rem del sitio
   -y por tanto toda la escala de arriba- escala de verdad. */
html{font-size:calc(100% * var(--esc,1));font-family:var(--fb)}
body{font-size:var(--t-base);line-height:var(--int-texto)}

/* 22.2 · LA REGLA DE LAS DOS FAMILIAS ------------------------------ */
h1,h2,h3,h4,h5,h6,
.tit-sec,.titulo,
/* titulos de tarjeta que no son encabezados: llevan la misma serif */
.cp-tit,.acceso b,.fruto b,.med-card b,.bien-card b,
.cifra b,.com-cifra b,.fh-jalon b,.mz-cifra b,.datos b,.modal-num,
.hito .anio,.p404 .num,.com-portada .ini,
.bien-guia,.bien-lema{
  font-family:var(--fd);
  font-synthesis:none;
}

/* todo lo demas es Karla, sin excepciones: antes .cp-tit y las
   cifras de algunos bloques se salian de la regla */
body,button,input,select,textarea,
.btn,.nav,.eyebrow,.bajada,.aviso,.meta,.migas,.tabla,
.cp-ante,.fh-ante,.mv-et{
  font-family:var(--fb);
}

/* 22.3 · LA JERARQUIA DE TITULOS ----------------------------------- */
h1,h2,h3,h4,h5,h6{
  line-height:var(--int-titulo);
  letter-spacing:-.022em;
  font-weight:var(--peso-fuerte);
  text-wrap:balance;
}
h1{font-size:var(--td-h1)}
h2{font-size:var(--t-2xl)}
h3{font-size:var(--t-xl)}
h4{font-size:var(--t-lg)}
h5,h6{font-size:var(--t-base)}

/* el titulo de seccion (bloque 19) manda sobre h2 */
.tit-sec{font-size:var(--tit-sec)}

/* 22.4 · EL ANTETITULO, LA ETIQUETA DE ENCIMA DEL TITULO ----------- */
.eyebrow,.cp-ante,.fh-ante,.mv-et{
  font-size:var(--t-xs);
  font-weight:var(--peso-fuerte);
  letter-spacing:.14em;
  text-transform:uppercase;
  line-height:var(--int-medio);
}

/* 22.5 · LA ENTRADILLA QUE ACOMPANA AL TITULO ---------------------- */
.bajada,.entradilla{
  font-size:var(--t-lg);
  line-height:var(--int-texto);
  color:var(--muted);
}

/* 22.6 · TEXTO AUXILIAR -------------------------------------------- */
.aviso,.meta,.migas,figcaption,small,.pie-legal{
  font-size:var(--t-sm);
  line-height:var(--int-medio);
}

/* 22.7 · NUMEROS: siempre de ancho fijo, para que no bailen -------- */
.cifra b,.com-cifra b,.fh-jalon b,.mz-cifra b,.datos b,
.modal-num,.hito .anio,.tabla td,.tabla th{
  font-variant-numeric:tabular-nums;
}

/* 22.8 · DONDE SE APLICA CADA TAMANO FLUIDO ------------------------
   Se declara por PAPEL, no por parecido de numero: un titular de
   articulo y una cifra podian medir los dos 2,9rem y no son lo
   mismo. Agruparlos por el numero es lo que habia deshecho la
   jerarquia. */

/* entradillas: la frase que acompana al titular */
.bajada,.hero p,.diapo p,.cp-der,.fh-bajada{
  font-size:var(--td-lead);
  line-height:1.6;
}

/* frases destacadas y subtitulos de bloque */
.cp-tit,.bien-guia,.bien-lema,.mv-tit-principios,
.nv-destacado-cu h3{
  font-size:var(--td-sub);
}

/* cifras grandes */
.cifra b,.cifra b .num-g,.com-cifra b,.fh-jalon b,.mz-cifra b{
  font-size:var(--td-cifra);
}

/* titulares de pagina */
.articulo h1,.p404 h1,h1.tit-sec,h1.titulo{
  font-size:var(--td-h1);
}

/* portada a toda pantalla y ventana de cifra */
.hero h1,.diapo h1,.diapo h2,.modal-num{
  font-size:var(--td-hero);
}

/* el "404" es un grafico, no texto: se queda con su tamano propio */
.p404 .num{font-size:clamp(5rem,16vw,10rem)}

/* ==================================================================
   23 · MISMO PAPEL, MISMO TAMANO
   ------------------------------------------------------------------
   El bloque 22 metio todos los tamanos en una escala, pero eso solo
   no arregla nada visible: cada componente seguia eligiendo SU
   escalon. Medido en pantalla, un titulo de tarjeta daba

       18px en .tarj        16px en .persona
       22px en .mapa-cuerpo 28px en .cp-tit

   Cuatro tamanos para el mismo papel. Eso es exactamente lo que se
   ve como "aqui la letra es mas grande y alli mas pequena": no es
   que falte escala, es que el mismo elemento cambia de tamano segun
   en que bloque caiga.

   Aqui el tamano lo decide EL PAPEL que cumple el texto, nunca el
   bloque donde vive. Las declaraciones sueltas de cada componente
   se retiraron una a una; estas son las unicas que mandan.

   LOS SEIS PAPELES
     etiqueta   12px  antetitulos y distintivos, en mayusculas
     apoyo      14px  pies, notas, meta, tablas
     cuerpo     16px  TODO el texto que se lee de corrido
     realce     18px  entradillas y titulos de tarjeta
     subtitulo  22px  encabeza un grupo dentro de la seccion
     destacado  28px  la frase que abre un relato
   Por encima quedan solo los titulares, que son fluidos porque
   tienen que crecer con la pantalla.
   ================================================================== */

:root{
  --t-etiqueta  : var(--t-xs);    /* 12px */
  --t-apoyo     : var(--t-sm);    /* 14px */
  --t-cuerpo    : var(--t-base);  /* 16px */
  --t-realce    : var(--t-lg);    /* 18px */
  --t-subtitulo : var(--t-xl);    /* 22px */
  --t-destacado : var(--t-2xl);   /* 28px */
}

/* 23.1 · CUERPO · todo lo que se lee de corrido, al mismo tamano --- */
p,li,dd,dt,blockquote,label,
.acceso-d,.cp-tx,.tarj p,.noticia p,.vt-cuerpo p,.mv-caja p{
  font-size:var(--t-cuerpo);
  line-height:var(--int-texto);
}

/* 23.2 · REALCE · entradillas y titulos de tarjeta ----------------- */
h3,h4,
.bajada,.entradilla,.hero p,.diapo p,.cp-der,.fh-bajada,
.acceso b,.fruto b,.med-card b,.bien-card b,.cp-tit,
.nv-destacado-cu h3{
  font-size:var(--t-realce);
  line-height:1.3;
}
/* las entradillas respiran mas que un titulo de tarjeta */
.bajada,.entradilla,.hero p,.diapo p,.cp-der,.fh-bajada{line-height:1.6}

/* 23.3 · SUBTITULO · encabeza un grupo dentro de la seccion -------- */
.sub-titulo,.mv-tit-principios,.tit-grupo,h2 + h3.suelto{
  font-size:var(--t-subtitulo);
  line-height:1.22;
}

/* 23.4 · DESTACADO · la frase que abre un relato -------------------
   .hist-texto .bien-guia queda fuera a propósito: tiene su propio
   tamaño, más chico, declarado en 20.1 — si entra aquí, este 28px
   fijo le gana por orden de cascada y la entradilla de «Nuestra
   historia» se ve desproporcionada. */
.bien-guia,.bien-lema{
  font-size:var(--t-destacado);
  line-height:1.42;
}

/* 23.5 · APOYO · pies, notas, meta y tablas ------------------------ */
.meta,.meta span,.aviso,figcaption,.pie-legal,.migas,.com-cuenta,
.vt-dep,.noticia-fuente,.com-dato span,.act-hito,
.tabla td,.tabla th,small{
  font-size:var(--t-apoyo);
  line-height:var(--int-medio);
}

/* 23.6 · ETIQUETA · siempre en mayusculas y siempre igual ---------- */
.eyebrow,.cp-ante,.fh-ante,.mv-et,.tipo,footer h4,
.act-badge,.noticia-tag,.com-dato b,.act-num{
  font-family:var(--fb);   /* una etiqueta nunca va en serif, aunque
                              sea un <h4> como los del pie */
  font-size:var(--t-etiqueta);
  font-weight:var(--peso-fuerte);
  line-height:var(--int-medio);
}
.eyebrow,.cp-ante,.fh-ante,.mv-et,.tipo,footer h4,
.act-badge,.noticia-tag,.com-dato b{
  letter-spacing:.12em;
  text-transform:uppercase;
}
/* pestanas, filtros y chips son botones, no rotulos: texto normal
   y al tamano de apoyo, que es el de los demas controles */
.sec-tab,.vf-chip,.pr-tag,.noticias-chip{
  font-size:var(--t-apoyo);font-weight:var(--peso-fuerte);
  letter-spacing:.01em;text-transform:none}

/* 23.7 · lo unico que sigue siendo fluido: los titulares ----------- */
.tit-sec{font-size:var(--tit-sec)}
h1,.articulo h1,.p404 h1,h1.tit-sec,h1.titulo{font-size:var(--td-h1)}
.hero h1,.diapo h1,.diapo h2,.modal-num{font-size:var(--td-hero)}
.cifra b,.cifra b .num-g,.com-cifra b,.fh-jalon b,.mz-cifra b{
  font-size:var(--td-cifra)}
h2:not(.tit-sec){font-size:var(--t-destacado)}

/* ==========================================================================
   REDES DEL PIE · cada marca con su color oficial
   ========================================================================== */
.pie-redes .red{
  width:42px;height:42px;display:grid;place-items:center;border-radius:50%;
  color:#fff;border:0;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),filter .35s}
.pie-redes .red svg{display:block}
.pie-redes .red:hover,.pie-redes .red:focus-visible{
  transform:translateY(-4px) scale(1.06)}
.pie-redes .red:focus-visible{outline:3px solid #fff;outline-offset:3px}

/* WhatsApp */
.pie-redes .red-wa{background:#25D366}
.pie-redes .red-wa:hover{box-shadow:0 8px 22px rgba(37,211,102,.45)}

/* Instagram · degradado oficial */
.pie-redes .red-ig{background:
  radial-gradient(circle at 30% 107%,#FDF497 0%,#FDF497 5%,#FD5949 45%,#D6249F 60%,#285AEB 90%)}
.pie-redes .red-ig:hover{box-shadow:0 8px 22px rgba(214,36,159,.45)}

/* Facebook */
.pie-redes .red-fb{background:#1877F2}
.pie-redes .red-fb:hover{box-shadow:0 8px 22px rgba(24,119,242,.45)}

/* correo y puntos de atención no son marcas: van con el color del Consejo */
.pie-redes .red-mail{background:var(--sol);color:var(--oscuro)}
.pie-redes .red-mail:hover{box-shadow:0 8px 22px rgba(255,200,0,.42)}
.pie-redes .red-mapa{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28)!important}
.pie-redes .red-mapa:hover{background:var(--vivo);border-color:var(--vivo)!important;
  box-shadow:0 8px 22px rgba(34,195,33,.45)}

@media(prefers-reduced-motion:reduce){
  .pie-redes .red{transition:none}
  .pie-redes .red:hover,.pie-redes .red:focus-visible{transform:none}
}

/* ==========================================================================
   PIE · columna de atención: cada dato en su propio renglón, sin partirse
   La columna se ensancha lo necesario para que la línea más larga
   —el horario— entre entera.
   ========================================================================== */
.pie-top{grid-template-columns:1.35fr 1fr 1fr 1.55fr}
.pie-atencion .pa-linea{margin:0;line-height:1.55}
.pie-atencion .pa-linea + .pa-linea{margin-top:.12rem}
.pie-atencion .pa-sep{margin-top:.7rem}
.pie-atencion .pa-linea a{display:inline-flex;align-items:center;gap:.35rem}

/* La columna se dimensiona para que cada dato entre en un renglón por sí
   solo. Sin white-space:nowrap a propósito: si el visitante agranda la letra
   con el control A/A/A, preferimos que parta antes que desbordar. */
@media(max-width:960px){
  .pie-top{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  .pie-top{grid-template-columns:1fr}
}

/* ==========================================================================
   El atributo hidden debe ocultar, siempre.
   Cualquier regla que fije display (grid, flex, inline-flex…) gana sobre el
   display:none que el navegador le da a [hidden]. Eso dejaba el visor de
   fotos cubriendo la pantalla entera después de cerrarlo —invisible pero
   tragándose todos los clics— y el botón «ver más» visible cuando sobraba.
   ========================================================================== */
[hidden]{display:none!important}

/* ==========================================================================
   21.8 · LA BARRA DE SECCIONES, AL COSTADO IZQUIERDO
   En pantallas anchas deja de ser una tira horizontal sobre el contenido y
   pasa a ser una columna fija a la izquierda, con el panel activo al lado.
   Por debajo de 1000 px vuelve a la tira horizontal: una barra lateral en
   un teléfono robaría todo el ancho de lectura.
   ========================================================================== */
@media (min-width:1000px){

  html.js-paneles main{
    display:grid;
    grid-template-columns:
      minmax(0,1fr)
      [barra] minmax(215px,255px)
      [panel] minmax(0,880px)
      minmax(0,1fr);
    column-gap:clamp(1.4rem,2.6vw,2.6rem);
    align-items:start;
  }

  /* la portada de la página y el cierre siguen ocupando todo el ancho */
  html.js-paneles main > .hero,
  html.js-paneles main > .volver-seccion{grid-column:1 / -1}

  html.js-paneles main > .sec-nav{grid-column:barra}
  html.js-paneles main > [data-panel]{grid-column:panel}

  /* la barra se vuelve tarjeta vertical y se queda pegada al desplazarse */
  html.js-paneles main > .sec-nav{
    position:sticky;
    top:calc(var(--alto-cab,64px) + 1.1rem);
    margin-block:clamp(1.6rem,3vw,2.6rem);
    background:var(--sup);
    border:1px solid var(--borde);
    border-radius:var(--r);
    box-shadow:var(--s1);
    padding:.55rem;
    backdrop-filter:none;-webkit-backdrop-filter:none;
  }
  html.js-paneles .sec-nav-in{
    flex-direction:column;
    align-items:stretch;
    gap:.15rem;
    overflow:visible;
    padding-inline:0;
    padding-block:0;
    max-width:none;
    -webkit-mask-image:none;mask-image:none;
  }
  html.js-paneles .sec-tab{
    width:100%;
    justify-content:flex-start;
    white-space:normal;
    text-align:left;
    border-radius:var(--r-sm);
    padding:.62rem .8rem;
    scroll-snap-align:none;
  }
  html.js-paneles .sec-tab i{min-width:1.4em}

  /* el «Sección 2 de 5» pasa a ser el pie de la tarjeta */
  html.js-paneles .sec-nav-pie{
    margin:.5rem .25rem 0;
    padding:.55rem .55rem 0;
    border-top:1px solid var(--borde);
    max-width:none;
    line-height:1.45;
  }

  /* el panel ya no necesita su propio margen lateral: lo da la rejilla */
  html.js-paneles main > [data-panel] > .env{
    max-width:none;
    padding-inline:0;
  }
  html.js-paneles main > [data-panel]{
    padding-block:clamp(1.6rem,3vw,2.6rem);
  }
  /* los paneles con fondo alterno quedan como tarjeta, no como franja */
  html.js-paneles main > [data-panel].sec-alt{
    border-radius:var(--r);
    padding-inline:clamp(1.2rem,2.2vw,2rem);
  }
}

@media (prefers-reduced-motion:reduce){
  html.js-paneles main > .sec-nav{transition:none}
}

/* el punto del mapa y la miniatura son enlaces: que se note */
.mapa-svg a.mp{cursor:pointer;text-decoration:none}
.mapa-svg a.mp:focus{outline:none}
.mapa-svg a.mp:focus-visible .mp-halo{stroke:var(--acento);stroke-width:3}
a.mapa-tira-b{text-decoration:none;color:inherit}
a.mapa-tira-b[aria-current="true"] .mapa-tira-n{color:var(--ink)}

/* 20 · encabezados centrados en columna y titulo blanco sobre fondo oscuro ---
   .cab-sec apila antetitulo, titulo y bajada en un solo eje centrado (antes el
   antetitulo y el titulo, ambos inline-block, quedaban lado a lado).
   El blanco se fuerza tambien con el modo de alto contraste activado, que
   ponia el titulo en tinta oscura sobre el verde. */
.cab-sec{display:flex;flex-direction:column;align-items:center;text-align:center}
.cab-sec .eyebrow,.cab-sec .cp-ante,.cab-sec .fh-ante{align-self:center}
:is(.sec-tinta,.compromiso,.bien-fuerza,.hero,.diapo) :is(.tit-sec,.titulo,h2),
body.contraste :is(.sec-tinta,.compromiso,.bien-fuerza,.hero,.diapo) :is(.tit-sec,.titulo,h2){
  color:#fff!important}
:is(.sec-tinta,.compromiso,.bien-fuerza,.hero,.diapo) .tit-sec::after,
body.contraste :is(.sec-tinta,.compromiso,.bien-fuerza,.hero,.diapo) .tit-sec::after{
  background:var(--tit-raya-clara)}

/* 21 · botones: un solo estilo y tamano compacto en todo el sitio ----------------
   Medida tomada del boton «Ir a la pagina principal»: 38 px de alto, letra de
   14 px, esquina de 6 px, verde institucional y texto blanco. Cubre .btn,
   .btn.sec (antes delineado en azul), .btn.claro, .btn.volver, .fh-btn y el
   enlace a.volver de arriba de cada articulo.
   Color y borde llevan !important (hay muchas reglas previas por seccion).
   El tamano va sin !important para no romper el boton de correo de la cabecera
   (.solo-ic) ni su reduccion en pantallas medianas. El alto es minimo, no fijo,
   para que un rotulo largo pueda pasar a dos lineas en el celular sin recortarse.
   Los iconos son de trazo (stroke=currentColor): heredan el blanco y no se les
   pone relleno, que los convertiria en manchas. */
.btn,.fh-btn,a.volver{
  display:inline-flex;align-items:center;justify-content:center;
  gap:6px;
  min-height:38px;
  font-family:Karla,system-ui,sans-serif;
  font-size:.875rem;font-weight:600;line-height:1.2;
  text-decoration:none;
  border-radius:6px;
  cursor:pointer;
  background:var(--brand,#0B7A1F)!important;
  color:#fff!important;
  border:1px solid var(--brand,#0B7A1F)!important;
  box-shadow:0 2px 4px rgba(0,0,0,.1)!important;
}
.btn:not(.solo-ic):not(.acciones .btn),.fh-btn,a.volver{padding:.5rem .9rem}
.btn .ic,.btn svg,.fh-btn svg,a.volver svg{width:15px;height:15px;flex-shrink:0;stroke:currentColor;color:#fff}
.btn:hover,.btn:focus-visible,.fh-btn:hover,.fh-btn:focus-visible,a.volver:hover,a.volver:focus-visible,
.btn.sec:hover,.btn.claro:hover{
  background:var(--oscuro,#0A2A0A)!important;
  border-color:var(--oscuro,#0A2A0A)!important;
  color:#fff!important;
  transform:translateY(-1px);
  box-shadow:0 4px 8px rgba(0,0,0,.15)!important;
}
/* sobre fondo verde oscuro el boton verde se recorta con un borde blanco */
:is(.sec-tinta,.compromiso,.bien-fuerza,.hero,.diapo) :is(.btn,.fh-btn){
  border-color:rgba(255,255,255,.9)!important}
:is(.sec-tinta,.compromiso,.bien-fuerza,.hero,.diapo) :is(.btn,.fh-btn):hover{
  background:var(--brand,#0B7A1F)!important;border-color:#fff!important}
/* los botones no se estiran al alto del vecino de fila: todos miden lo mismo */
.btn,.fh-btn{align-self:center}
.volver-pie,.btns{align-items:center}
/* alineacion vertical de botones vecinos: .volver trae un margen inferior pensado
   para el enlace de arriba del articulo; en un boton .btn.volver desplazaba
   13 px al boton de al lado. */
.btn.volver{margin:0}
.btn,.fh-btn,a.volver{vertical-align:middle}
.volver-pie>.btn,.btns>.btn{margin:0}

/* 22 · «¿Quiénes somos?» de la portada: subtitulo de lectura y parrafos justificados ----
   El subtitulo baja de 28 px a ~18 px; los dos parrafos comparten ancho, se
   justifican y se centran como bloque (antes uno iba centrado y el otro a la
   izquierda). Solo dentro de #quienes-somos: .bien-guia se usa en otras paginas. */
#quienes-somos .cab-sec .bien-guia{
  font-size:1.15rem;line-height:1.4;font-weight:500;
  margin:.5rem auto 1.5rem}
#quienes-somos .rev-i > .cab-sec > p.bajada,
#quienes-somos .rev-i > p.bajada{
  text-align:justify;text-justify:inter-word;hyphens:auto;
  line-height:1.6;max-width:800px;
  margin-left:auto;margin-right:auto}
#quienes-somos .rev-i > .cab-sec > p.bajada{margin-bottom:0}

/* 23 · el antetitulo (.eyebrow) va sin la rayita «—» a la izquierda: en algunos
   titulos la tenia y en otros no, y ya se le quitaron los iconos. */
.eyebrow::before{display:none}

/* 24 · tabla de aliados: todas las celdas de una fila se centran en vertical
   con el logo (el texto de «Acompañamiento» quedaba pegado arriba). */
#aliados .tabla td{vertical-align:middle}

/* 25 · tarjetas vacias del listado de proyectos (.noticia.tarj-vacia): sin foto,
   sin enlace, texto centrado en la tarjeta. Los selectores llevan tres clases
   porque .rev.ok (opacity:1) les ganaba a una sola. */
.noticia.tarj-vacia{background:#F8F9FA;border:2px dashed #CCC;box-shadow:none;pointer-events:none;
  display:flex;align-items:center;justify-content:center;text-align:center}
.noticia.tarj-vacia.ok{opacity:.55}
.noticia.tarj-vacia .cu{align-items:center;text-align:center}
.noticia.tarj-vacia h3{font-weight:400;font-style:italic}
.noticia.tarj-vacia:hover{transform:none;box-shadow:none}

/* 26 · consejo.php · panel «Quiénes somos»: encabezado centrado a todo el ancho,
   texto justificado y foto al lado. Va con #quienes (el de consejo.php); en la
   portada #quienes-somos es otra seccion y no se toca. */
#quienes .env{padding-top:1.5rem}
#quienes .cab-sec{margin-bottom:1.5rem}
#quienes .tit-sec{font-size:2.25rem;line-height:1.2}
#quienes .partido{max-width:850px;margin-inline:auto;align-items:start}
#quienes .partido .bajada{
  text-align:justify;text-justify:inter-word;hyphens:auto;
  font-size:1.05rem;line-height:1.65;color:var(--ink);max-width:none}

/* 27 · formulario PQRS en linea (#app-pqrs): secciones como las barras del
   formulario oficial, campos fijos de registro, casillas y errores. */
.vp-sec{margin:1.6rem 0 .9rem;padding:.55rem 1rem;border-radius:8px;text-align:center;
  font-family:var(--fb);font-size:var(--t-sm);font-weight:700;letter-spacing:.04em;
  background:var(--menta);color:var(--oscuro)}
.vp-cuerpo>.vp-sec:first-child{margin-top:0}
.vp-fijo{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .8rem;border:1px dashed var(--borde);
  border-radius:10px;background:var(--bg)}
.vp-fijo .et{font-size:var(--t-xs);font-weight:700;color:var(--muted)}
.vp-fijo b{font-size:var(--t-base);color:var(--ink);font-variant-numeric:tabular-nums}
.vp-check{display:flex;gap:.7rem;align-items:flex-start;margin:0 0 .9rem;font-size:var(--t-sm);
  line-height:1.5;cursor:pointer}
.vp-check input{flex:none;width:20px;height:20px;margin-top:.15rem;padding:0;accent-color:var(--brand)}
.vp-guia{font-size:var(--t-sm);color:var(--muted);font-style:italic;margin:0}
.vp-cuenta{font-size:var(--t-xs);color:var(--muted);text-align:right;margin:0}
.vp-error{margin-top:1rem;padding:.8rem 1rem;border-radius:10px;background:#FDECEA;color:#B03325;
  border:1px solid #E7B6AE;font-size:var(--t-sm)}
.vp textarea{min-height:110px;resize:vertical}
.vp .btn[disabled]{opacity:.6;cursor:wait}
@media(max-width:700px){.vp-rej{grid-template-columns:1fr}}

/* 28 · tarjetas de tramites de la portada que llevan a su formulario o tramite */
a.tarj{display:block;color:inherit;text-decoration:none}
a.tarj .leer{margin-top:.9rem}

/* 29 · tramite sin disponibilidad (tarjeta con texto pero sin enlace): se ve
   atenuada, no responde al puntero ni al foco. .rev.ok (opacity:1) les ganaba
   con una sola clase, de ahi el selector triple. */
.tarj.tarj-desactivada{background:#F8F9FA;border:1px solid #E0E0E0;box-shadow:none;pointer-events:none}
.tarj.tarj-desactivada.ok{opacity:.6}
.tarj.tarj-desactivada:hover{transform:none}
.tarj-desactivada .btn-enlace.deshabilitado{display:inline-block;margin-top:.9rem;font-size:var(--t-sm);
  font-weight:700;color:#888;cursor:not-allowed;text-decoration:none}

/* 30 · desplegables del menu principal: el cursor no se pierde al bajar ------
   Causa: las reglas posteriores de transform (translateY sin translateX(-50%))
   dejaban el panel arrancando en el centro del boton en lugar de centrado, asi
   que al bajar desde la mitad izquierda del boton el cursor quedaba fuera del
   panel y el :hover se cerraba. Ahora el panel parte del borde izquierdo del
   boton (o del derecho en las ultimas entradas) y mide al menos lo que mide el
   boton: bajar en linea recta siempre cae dentro. El puente invisible cubre
   todo el ancho del boton, y el panel espera 180 ms antes de ocultarse. */
@media (min-width:1151px){
  .nav>li.tiene-mega::before{left:0;right:0;width:auto;transform:none;height:.85rem}
  .nav>li.tiene-mega>.mega{left:0;right:auto;transform:translateY(10px) scale(.985);
    transition:opacity .28s var(--ease),transform .28s var(--ease),visibility 0s linear .18s}
  .nav>li.tiene-mega:nth-last-child(-n+2)>.mega{left:auto;right:0}
  .nav>li.tiene-mega:hover>.mega,.nav>li.tiene-mega:focus-within>.mega,.nav>li.tiene-mega.abierto>.mega{
    transform:translateY(0) scale(1);transition-delay:0s}
}

/* 31 · visor de mapa por comunidad (portada, antes del esquema de paradas) --------
   Las fotografias de img/mapas/ ya traen dibujado el marcador «Usted se
   encuentra aqui» y su propia tarjeta de bienvenida, asi que el visor solo
   cambia de imagen: no hace falta una ficha lateral aparte. */
.mapa-comunidad-visor{margin-bottom:clamp(2.4rem,5vw,3.6rem)}
/* Las imagenes miden unos 790 x 443 px: estiradas a los 1280 px del
   contenedor se veian borrosas y ocupaban la pantalla entera. El marco
   queda cerca de su tamano real y, ademas, nunca mas alto que la pantalla
   menos la cabecera fija, el titulo de la seccion y los botones: asi el
   titulo no queda tapado por la cabecera mientras se mira el mapa. */
#territorio-inicio .cab-sec{margin-bottom:.9rem}
.mcv-marco{border-radius:var(--r);overflow:hidden;box-shadow:var(--s2);
  border:1px solid var(--borde);background:var(--bg);margin:.4rem auto 0;
  width:min(100%,900px,max(480px,calc((100svh - 400px) * 1.785)))}
/* en pantalla ancha los botones caben en una fila: el mapa gana ese alto */
@media (min-width:1100px){.mcv-marco{width:min(100%,900px,max(480px,calc((100svh - 340px) * 1.785)))}}
.mcv-marco img{width:100%;height:auto;display:block;aspect-ratio:791/443}
@media (max-width:640px){.mcv-marco{width:100%}}
/* el mapa va centrado: su titulo y su bajada tambien (regla del cliente) */
.mapa-comunidad-visor>.mv-tit-principios,.mapa-comunidad-visor>.bajada{text-align:center;margin-inline:auto}
.mapa-comunidad-visor>.bajada{max-width:60ch}
.mcv-botones{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.2rem}
.mcv-btn{background:var(--sup);border:1px solid var(--borde);color:var(--ink);
  padding:.5rem 1.1rem;font-family:inherit;font-size:var(--t-sm);font-weight:600;
  border-radius:999px;cursor:pointer;transition:.25s var(--ease)}
.mcv-btn:hover,.mcv-btn:focus-visible,.mcv-btn.activo{
  background:var(--brand);color:#fff;border-color:var(--brand);
  box-shadow:0 4px 14px color-mix(in oklab,var(--brand) 35%,transparent)}
/* contador de visitas como Web Component: «actualizado hace…» */
bc-contador-visitas{display:block}
.visitas-actualizado{margin:.8rem 0 0;text-align:center;font-size:var(--t-xs, .78rem);color:var(--muted);min-height:1.2em}
