/* =============================================================
   PDP AGUASCALIENTES — LIQUID GLASS DESIGN SYSTEM
   Cargar SIEMPRE al final del <head> para ganar la cascada.
   ============================================================= */

:root {
  /* --- Superficies base --- */
  --g-bg-0: #05081c;
  --g-bg-1: #0a1030;
  --g-bg-2: #0e1642;

  /* --- Acentos institucionales --- */
  --g-magenta: #D6006E;
  --g-magenta-2: #ff4fa0;
  --g-blue: #1B2A6B;
  --g-blue-2: #3d5ce0;
  --g-cyan: #22d3ee;
  --g-violet: #8b5cf6;

  /* --- Vidrio --- */
  --glass-fill: linear-gradient(135deg, rgba(255,255,255,.10), rgba(255,255,255,.035));
  --glass-fill-strong: linear-gradient(135deg, rgba(255,255,255,.16), rgba(255,255,255,.06));
  --glass-blur: blur(22px) saturate(180%);
  --glass-blur-lg: blur(34px) saturate(190%);

  /* Canto de vidrio: luz arriba, sombra abajo + elevación */
  --glass-edge:
    inset 0 1px 0 rgba(255,255,255,.34),
    inset 0 -1px 0 rgba(255,255,255,.05),
    inset 1px 0 0 rgba(255,255,255,.08),
    inset -1px 0 0 rgba(255,255,255,.08);
  --glass-lift: 0 18px 46px rgba(0,0,0,.42);
  --glass-lift-hi: 0 26px 70px rgba(0,0,0,.55);

  /* --- Radios concéntricos --- */
  --r-xl: 30px;
  --r-lg: 22px;
  --r-md: 16px;
  --r-sm: 10px;

  /* --- Texto sobre oscuro --- */
  --t-hi: #ffffff;
  --t-mid: rgba(255,255,255,.76);
  --t-low: rgba(255,255,255,.55);
  --t-faint: rgba(255,255,255,.38);

  --ease-glass: cubic-bezier(.22,1,.36,1);
}

/* =============================================================
   1. FONDO GLOBAL ANIMADO
   ============================================================= */

html { scroll-behavior: smooth; }

body.index-page {
  background: var(--g-bg-0);
  color: var(--t-mid);
  position: relative;
  overflow-x: hidden;
}

/* Capa de malla animada (aurora) — fija detrás de todo.
   El degradado base es estático y solo se anima un pseudo-elemento
   sobredimensionado con transform: así el trabajo ocurre en el
   compositor y el scroll no dispara repintados de pantalla completa. */
.g-bg {
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  overflow: hidden;
  background: linear-gradient(160deg, var(--g-bg-1) 0%, var(--g-bg-0) 55%, #0b0f33 100%);
  contain: strict;
}

.g-bg::before {
  content: '';
  position: absolute;
  top: -30%; left: -30%;
  width: 160%; height: 160%;
  background:
    radial-gradient(38% 32% at 22% 26%, rgba(214,0,110,.30), transparent 62%),
    radial-gradient(34% 28% at 78% 20%, rgba(61,92,224,.34), transparent 60%),
    radial-gradient(40% 36% at 72% 74%, rgba(139,92,246,.28), transparent 64%),
    radial-gradient(32% 28% at 28% 80%, rgba(34,211,238,.20), transparent 60%);
  animation: g-aurora 30s ease-in-out infinite;
  will-change: transform;
  transform: translateZ(0);
}

@keyframes g-aurora {
  0%   { transform: translate3d(0,0,0)          scale(1)    rotate(0deg); }
  33%  { transform: translate3d(-6%,4%,0)       scale(1.12) rotate(4deg); }
  66%  { transform: translate3d(5%,-5%,0)       scale(1.05) rotate(-3deg); }
  100% { transform: translate3d(0,0,0)          scale(1)    rotate(0deg); }
}

/* Rejilla técnica: también animada con transform, no background-position */
.g-grid {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  overflow: hidden;
  contain: strict;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 40%, #000 30%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 40%, #000 30%, transparent 100%);
}
.g-grid::before {
  content: '';
  position: absolute;
  inset: -70px;
  background-image:
    linear-gradient(rgba(255,255,255,.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.028) 1px, transparent 1px);
  background-size: 64px 64px;
  animation: g-grid-drift 34s linear infinite;
  will-change: transform;
  transform: translateZ(0);
}

@keyframes g-grid-drift {
  from { transform: translate3d(0,0,0); }
  to   { transform: translate3d(64px,64px,0); }
}

.g-orbs { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; contain: strict; }
.g-orbs span {
  position: absolute;
  border-radius: 50%;
  filter: blur(48px);
  opacity: .5;
  animation: g-orb-float 22s ease-in-out infinite;
  will-change: transform;
  transform: translateZ(0);
  backface-visibility: hidden;
}
.g-orbs span:nth-child(1) { width: 340px; height: 340px; top: 8%;  left: -6%;  background: rgba(214,0,110,.30); animation-duration: 24s; }
.g-orbs span:nth-child(2) { width: 280px; height: 280px; top: 55%; right: -5%; background: rgba(61,92,224,.32);  animation-duration: 29s; animation-delay: -6s; }
.g-orbs span:nth-child(3) { width: 220px; height: 220px; top: 78%; left: 18%;  background: rgba(139,92,246,.26); animation-duration: 33s; animation-delay: -12s; }
.g-orbs span:nth-child(4) { width: 180px; height: 180px; top: 28%; left: 62%;  background: rgba(34,211,238,.18); animation-duration: 27s; animation-delay: -3s; }

@keyframes g-orb-float {
  0%,100% { transform: translate3d(0,0,0) scale(1); }
  33%     { transform: translate3d(60px,-50px,0) scale(1.12); }
  66%     { transform: translate3d(-40px,40px,0) scale(.92); }
}

/* Todas las secciones se vuelven transparentes: el fondo global manda */
body.index-page .section,
body.index-page .light-background,
body.index-page .section-bg,
body.index-page .dark-background,
body.index-page .noticias-section,
body.index-page #stats,
body.index-page #avances,
body.index-page #beneficios,
body.index-page #convocatorias {
  background: transparent !important;
  position: relative;
  z-index: 1;
}

/* =============================================================
   2. PRIMITIVA DE VIDRIO
   ============================================================= */

.glass {
  position: relative;
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: var(--r-lg);
  box-shadow: var(--glass-edge), var(--glass-lift);
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
  isolation: isolate;
}

/* Highlight especular que barre el canto superior */
.glass::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(140deg,
    rgba(255,255,255,.55) 0%,
    rgba(255,255,255,.06) 28%,
    rgba(255,255,255,0) 52%,
    rgba(255,255,255,.10) 82%,
    rgba(255,255,255,.30) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  z-index: 2;
}

.glass:hover {
  transform: translateY(-6px);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
  border-color: rgba(255,255,255,.22);
}

.glass-flat:hover { transform: none; }

/* =============================================================
   3. BARRA DE GOBIERNO + HEADER
   ============================================================= */

.gobierno-top-bar {
  background: linear-gradient(90deg, rgba(10,16,48,.92), rgba(27,42,107,.92)) !important;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,.07);
  position: relative;
  z-index: 1002;
}

body.index-page .header {
  background: rgba(8,12,36,.55) !important;
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border-bottom: 1px solid rgba(255,255,255,.10);
  box-shadow: 0 8px 32px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.14) !important;
  transition: background .4s var(--ease-glass), box-shadow .4s;
}

body.index-page .header.scrolled {
  background: rgba(6,9,28,.82) !important;
}

body.index-page .navmenu > ul > li > a {
  color: var(--t-mid) !important;
  font-weight: 500;
  transition: color .3s;
}
body.index-page .navmenu > ul > li > a:hover,
body.index-page .navmenu > ul > li > a.active {
  color: #fff !important;
}
body.index-page .navmenu > ul > li > a::before {
  background: linear-gradient(90deg, var(--g-magenta), var(--g-magenta-2)) !important;
}

body.index-page .navmenu .dropdown ul {
  background: rgba(10,15,42,.88) !important;
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--r-md);
  box-shadow: var(--glass-lift);
}
body.index-page .navmenu .dropdown ul a { color: var(--t-mid) !important; }
body.index-page .navmenu .dropdown ul a:hover { color: #fff !important; }

body.index-page .mobile-nav-toggle { color: #fff !important; }

body.index-page.mobile-nav-active .navmenu {
  background: rgba(6,9,28,.92);
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
}
body.index-page.mobile-nav-active .navmenu > ul {
  background: rgba(12,18,50,.9) !important;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--r-lg);
  box-shadow: var(--glass-edge), var(--glass-lift);
}

/* Botón cápsula de vidrio */
body.index-page .btn-getstarted,
body.index-page .navmenu .nav-btn-contacto {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  border: 1px solid rgba(255,255,255,.24) !important;
  box-shadow: 0 6px 22px rgba(214,0,110,.42), inset 0 1px 0 rgba(255,255,255,.4);
  color: #fff !important;
}
body.index-page .btn-getstarted:hover,
body.index-page .navmenu .nav-btn-contacto:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 34px rgba(214,0,110,.6), inset 0 1px 0 rgba(255,255,255,.5) !important;
}

/* =============================================================
   4. HERO CON VIDEO
   ============================================================= */

.hero-video {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: center;
  padding: 90px 0 70px;
  overflow: hidden;
  background: transparent !important;
}

.hero-video__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}

.hero-video__media video,
.hero-video__media img.hv-fallback {
  position: absolute;
  top: 50%; left: 50%;
  min-width: 100%; min-height: 100%;
  width: auto; height: auto;
  transform: translate(-50%,-50%) scale(1.04);
  object-fit: cover;
  animation: hv-slow-zoom 30s ease-in-out infinite alternate;
}

@keyframes hv-slow-zoom {
  from { transform: translate(-50%,-50%) scale(1.04); }
  to   { transform: translate(-50%,-50%) scale(1.14); }
}

/* Velo + viñeta para legibilidad del texto */
.hero-video__scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(100deg, rgba(5,8,28,.92) 0%, rgba(5,8,28,.70) 38%, rgba(5,8,28,.35) 68%, rgba(5,8,28,.62) 100%),
    radial-gradient(120% 90% at 50% 110%, rgba(5,8,28,.95) 0%, transparent 62%);
}

/* Franja luminosa que recorre el hero (transform, no background-position) */
.hero-video__sheen {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
}
.hero-video__sheen::before {
  content: '';
  position: absolute;
  top: -20%; left: 0;
  width: 45%; height: 140%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.06), transparent);
  animation: hv-sheen 9s ease-in-out infinite;
  will-change: transform;
}
@keyframes hv-sheen {
  0%   { transform: translate3d(-120%,0,0); }
  55%  { transform: translate3d(320%,0,0); }
  100% { transform: translate3d(320%,0,0); }
}

.hero-video .container { position: relative; z-index: 3; }

.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: rgba(255,255,255,.09);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.20);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2.2px;
  text-transform: uppercase;
  padding: 8px 18px;
  border-radius: 50px;
  margin-bottom: 24px;
}
.hero-eyebrow .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: #22c55e;
  box-shadow: 0 0 0 3px rgba(34,197,94,.28);
  animation: g-dot-pulse 2.2s ease-in-out infinite;
}
@keyframes g-dot-pulse {
  0%,100% { box-shadow: 0 0 0 3px rgba(34,197,94,.28); }
  50%     { box-shadow: 0 0 0 8px rgba(34,197,94,0); }
}

.hero-video h1 {
  font-size: clamp(2.1rem, 4.4vw, 3.6rem);
  font-weight: 900;
  line-height: 1.08;
  letter-spacing: -.02em;
  color: #fff;
  margin-bottom: 20px;
  text-shadow: 0 4px 30px rgba(0,0,0,.5);
}

.hero-grad {
  background: linear-gradient(115deg, #ff4fa0 0%, #d6006e 32%, #8b5cf6 68%, #22d3ee 100%);
  background-size: 220% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: g-grad-slide 7s linear infinite;
}
@keyframes g-grad-slide {
  to { background-position: 220% center; }
}

.hero-video .hero-lead {
  font-size: clamp(.98rem, 1.2vw, 1.08rem);
  line-height: 1.75;
  color: var(--t-mid);
  max-width: 560px;
  margin-bottom: 30px;
}

/* Botones de vidrio */
.g-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 32px;
  border-radius: 50px;
  font-size: 14.5px;
  font-weight: 700;
  text-decoration: none !important;
  border: 1px solid rgba(255,255,255,.22);
  transition: transform .4s var(--ease-glass), box-shadow .4s var(--ease-glass), background .4s;
  cursor: pointer;
}
.g-btn--primary {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2));
  color: #fff !important;
  box-shadow: 0 10px 32px rgba(214,0,110,.45), inset 0 1px 0 rgba(255,255,255,.45);
}
.g-btn--primary:hover {
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 18px 46px rgba(214,0,110,.62), inset 0 1px 0 rgba(255,255,255,.55);
}
.g-btn--ghost {
  background: rgba(255,255,255,.08);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  color: #fff !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34), 0 8px 26px rgba(0,0,0,.3);
}
.g-btn--ghost:hover {
  background: rgba(255,255,255,.16);
  transform: translateY(-3px);
}

/* Indicador de scroll */
.hero-scroll {
  position: absolute;
  bottom: 26px; left: 50%;
  transform: translateX(-50%);
  z-index: 4;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  color: var(--t-faint);
  font-size: 10px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
}
.hero-scroll .mouse {
  width: 24px; height: 38px;
  border: 1.5px solid rgba(255,255,255,.3);
  border-radius: 14px;
  position: relative;
}
.hero-scroll .mouse::after {
  content: '';
  position: absolute;
  top: 7px; left: 50%;
  width: 3px; height: 7px;
  margin-left: -1.5px;
  border-radius: 2px;
  background: var(--g-magenta-2);
  animation: hs-wheel 1.8s ease-in-out infinite;
}
@keyframes hs-wheel {
  0%   { opacity: 0; transform: translateY(0); }
  35%  { opacity: 1; }
  100% { opacity: 0; transform: translateY(12px); }
}

/* Botón mute del video */
.hero-mute {
  position: absolute;
  right: 22px; bottom: 26px;
  z-index: 5;
  width: 44px; height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.2);
  background: rgba(255,255,255,.09);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.32);
  color: #fff;
  font-size: 17px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: background .3s, transform .3s;
}
.hero-mute:hover { background: rgba(255,255,255,.2); transform: scale(1.08); }

/* =============================================================
   5. TARJETA INFORMATIVA DEL HERO (carrusel de noticias)
   ============================================================= */

.hero-info-card {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur-lg) !important;
  backdrop-filter: var(--glass-blur-lg) !important;
  border: 1px solid rgba(255,255,255,.16) !important;
  border-radius: var(--r-xl) !important;
  box-shadow: var(--glass-edge), var(--glass-lift);
  padding: 28px 26px 26px !important;
  min-height: 290px;
  position: relative;
  overflow: hidden;
}

.hero-info-card::after {
  content: '';
  position: absolute;
  top: -60%; left: 0;
  width: 60%; height: 220%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.10), transparent);
  animation: hic-sweep 6.5s ease-in-out infinite;
  pointer-events: none;
  will-change: transform;
}
@keyframes hic-sweep {
  0%, 70%, 100% { transform: translate3d(-160%,0,0) rotate(18deg); }
  35%           { transform: translate3d(280%,0,0)  rotate(18deg); }
}

.hic-tag {
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
}
.hic-icon-wrap {
  border-radius: 14px !important;
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.26);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
.hic-title { font-size: 17px !important; letter-spacing: -.01em; }
.hic-btn {
  border: 1px solid rgba(255,255,255,.24) !important;
  box-shadow: 0 8px 24px rgba(214,0,110,.35), inset 0 1px 0 rgba(255,255,255,.4);
}
.hic-btn:hover { transform: translateY(-2px) scale(1.02); }

/* Recorta las diapositivas vecinas, pero deja aire para la sombra del vidrio */
.hero-info-swiper {
  border-radius: calc(var(--r-xl) + 8px) !important;
  overflow: hidden !important;
  padding: 8px;
  margin: -8px;
}
.hero-info-swiper .swiper-pagination .swiper-pagination-bullet {
  background: rgba(255,255,255,.32);
  transition: all .4s var(--ease-glass);
}
.hero-info-swiper .swiper-pagination .swiper-pagination-bullet-active {
  background: linear-gradient(90deg, var(--g-magenta), var(--g-magenta-2));
  width: 26px;
  box-shadow: 0 0 14px rgba(214,0,110,.7);
}

/* =============================================================
   6. FRANJA DE MÉTRICAS DEL ESTADO (Canva p.1)
   ============================================================= */

.g-metrics {
  position: relative;
  z-index: 3;
  margin-top: 48px;
}

.g-metrics__grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  border-radius: var(--r-xl);
  overflow: hidden;
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: var(--glass-edge), var(--glass-lift);
}

.g-metric {
  padding: 26px 18px;
  text-align: center;
  border-right: 1px solid rgba(255,255,255,.08);
  transition: background .4s;
}
.g-metric:last-child { border-right: none; }
.g-metric:hover { background: rgba(255,255,255,.05); }

.g-metric i {
  font-size: 20px;
  color: var(--g-magenta-2);
  display: block;
  margin-bottom: 9px;
}
.g-metric .g-metric__num {
  font-size: clamp(1.4rem, 2.3vw, 2rem);
  font-weight: 900;
  color: #fff;
  line-height: 1;
  letter-spacing: -.02em;
  display: block;
}
.g-metric .g-metric__label {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 1.1px;
  text-transform: uppercase;
  color: var(--t-faint);
  margin-top: 8px;
  display: block;
  line-height: 1.45;
}
.g-metric .g-metric__src {
  display: block;
  font-size: 9.5px;
  color: rgba(255,255,255,.24);
  margin-top: 5px;
  letter-spacing: .4px;
}

@media (max-width: 991px) {
  .g-metrics__grid { grid-template-columns: repeat(2, 1fr); }
  .g-metric { border-bottom: 1px solid rgba(255,255,255,.08); }
  .g-metric:nth-child(2n) { border-right: none; }
  .g-metric:last-child { grid-column: 1 / -1; border-bottom: none; }
}
@media (max-width: 480px) {
  .g-metrics__grid { grid-template-columns: 1fr; }
  .g-metric { border-right: none; }
}

/* =============================================================
   7. TÍTULOS DE SECCIÓN
   ============================================================= */

body.index-page .section-title h2 {
  color: var(--g-magenta-2) !important;
  font-size: 12px;
  letter-spacing: 3.5px;
}
body.index-page .section-title h2::after {
  background: linear-gradient(90deg, var(--g-magenta), var(--g-violet)) !important;
  height: 2px;
  width: 60px;
}
body.index-page .section-title p {
  color: #fff !important;
  font-size: clamp(1.6rem, 3vw, 2.3rem);
  font-weight: 800;
  letter-spacing: -.02em;
}

/* =============================================================
   8. TARJETAS GENÉRICAS → VIDRIO
   ============================================================= */

body.index-page .convocatorias-card,
body.index-page .participa-card,
body.index-page .material-item,
body.index-page .tipo-empresa-card,
body.index-page .avance-item,
body.index-page .proceso-step .step-content,
body.index-page .faq .faq-item,
body.index-page .contact .info-item,
body.index-page .stats .stats-item {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: var(--r-lg) !important;
  box-shadow: var(--glass-edge), 0 12px 34px rgba(0,0,0,.32) !important;
  color: var(--t-mid);
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
}

body.index-page .convocatorias-card:hover,
body.index-page .participa-card:hover,
body.index-page .material-item:hover,
body.index-page .tipo-empresa-card:hover,
body.index-page .avance-item:hover {
  transform: translateY(-7px);
  border-color: rgba(255,255,255,.24) !important;
  box-shadow: var(--glass-edge), var(--glass-lift-hi) !important;
}

body.index-page .convocatorias-card h4,
body.index-page .participa-card h4,
body.index-page .material-item h5,
body.index-page .avance-body h5,
body.index-page .proceso-step .step-content h5,
body.index-page .tipo-header h3 {
  color: #fff !important;
}

body.index-page .convocatorias-card p,
body.index-page .participa-card p,
body.index-page .material-item p,
body.index-page .avance-body p,
body.index-page .proceso-step .step-content p,
body.index-page .tipo-empresa-card p,
body.index-page .tier-list li,
body.index-page .beneficio-item p {
  color: var(--t-mid) !important;
}

/* Iconos circulares translúcidos */
body.index-page .participa-card .participa-icon,
body.index-page .convocatorias-card .card-icon,
body.index-page .material-item .material-icon,
body.index-page .tipo-icon-wrap,
body.index-page .beneficio-item .beneficio-check {
  background: rgba(255,255,255,.08) !important;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
  color: var(--g-magenta-2) !important;
  transition: all .4s var(--ease-glass);
}
body.index-page .participa-card:hover .participa-icon {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  color: #fff !important;
  transform: scale(1.08);
  box-shadow: 0 10px 28px rgba(214,0,110,.5), inset 0 1px 0 rgba(255,255,255,.45);
}

body.index-page .participa-card .btn-participa {
  border-color: rgba(255,255,255,.28) !important;
  color: #fff !important;
  background: rgba(255,255,255,.06);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
body.index-page .participa-card .btn-participa:hover {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  border-color: transparent !important;
}

/* Bordes superiores de color → línea de luz */
body.index-page .tipo-empresa-card.compradora,
body.index-page .tipo-empresa-card.proveedora { border-top: 1px solid rgba(255,255,255,.12) !important; }

/* =============================================================
   9. STATS / CONTADORES
   ============================================================= */

body.index-page .stats i { color: var(--g-magenta-2) !important; }
body.index-page .stats .stats-item {
  padding: 26px 18px !important;
  width: 100%;
}
body.index-page .stats .purecounter,
body.index-page .stats .stats-item span {
  color: #fff !important;
  font-weight: 900;
  letter-spacing: -.02em;
}
body.index-page .stats .stats-item p { color: var(--t-low) !important; }

/* =============================================================
   10. TABS (Diagnóstico)
   ============================================================= */

body.index-page .tabs .nav-tabs { border: none; gap: 12px; }
body.index-page .tabs .nav-tabs .nav-link {
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.11) !important;
  border-radius: var(--r-md);
  color: var(--t-mid) !important;
  transition: all .4s var(--ease-glass);
}
body.index-page .tabs .nav-tabs .nav-link:hover { border-color: rgba(255,255,255,.24) !important; transform: translateY(-3px); }
body.index-page .tabs .nav-tabs .nav-link.active {
  background: linear-gradient(135deg, rgba(214,0,110,.30), rgba(139,92,246,.22)) !important;
  border-color: rgba(255,255,255,.28) !important;
  color: #fff !important;
  box-shadow: var(--glass-edge), 0 12px 30px rgba(214,0,110,.28);
}
body.index-page .tabs .nav-tabs .nav-link i,
body.index-page .tabs .nav-tabs .nav-link h4 { color: inherit !important; }
body.index-page .tabs .tab-pane h3 { color: #fff; }
body.index-page .tabs .tab-pane p,
body.index-page .tabs .tab-pane li span { color: var(--t-mid); }
body.index-page .tabs .tab-pane strong { color: #fff; }
body.index-page .tabs .tab-pane ul li i { color: var(--g-magenta-2) !important; }
body.index-page .tabs .tab-pane img {
  border-radius: var(--r-lg);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: var(--glass-lift);
}

/* =============================================================
   11. TIMELINE (Modelo)
   ============================================================= */

body.index-page .proceso-timeline::before {
  background: linear-gradient(180deg, transparent, rgba(214,0,110,.5), rgba(139,92,246,.5), transparent) !important;
  width: 2px;
}
body.index-page .proceso-step .step-number {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-violet)) !important;
  border: 1px solid rgba(255,255,255,.28);
  box-shadow: 0 10px 30px rgba(214,0,110,.45), inset 0 1px 0 rgba(255,255,255,.4) !important;
}

/* =============================================================
   12. AVANCES
   ============================================================= */

body.index-page .avance-item { border-left: 1px solid rgba(255,255,255,.12) !important; }
body.index-page .avance-item::before {
  content: '';
  position: absolute;
  left: 0; top: 18%; bottom: 18%;
  width: 3px;
  border-radius: 3px;
  background: linear-gradient(180deg, var(--g-magenta), var(--g-violet));
  box-shadow: 0 0 16px rgba(214,0,110,.6);
}
body.index-page .avance-item { position: relative; overflow: hidden; }
body.index-page .avance-num {
  background: linear-gradient(135deg, #ff4fa0, #8b5cf6);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
body.index-page .avance-label { color: var(--t-faint) !important; }
body.index-page .avance-badge {
  background: rgba(34,197,94,.14) !important;
  border: 1px solid rgba(34,197,94,.3);
  color: #4ade80 !important;
}
/* Los logos institucionales traen fondo opaco: van sobre una placa clara,
   no invertidos (invertirlos los convertía en rectángulos blancos). */
body.index-page .avance-logo {
  background: #fff;
  border-radius: var(--r-sm);
  padding: 8px 10px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.5), 0 4px 14px rgba(0,0,0,.28);
}
body.index-page .avance-logo img { filter: none; opacity: 1; mix-blend-mode: multiply; }
body.index-page .avance-logo .logo-badge {
  background: var(--g-blue) !important;
  border: none;
  color: #fff !important;
}

/* =============================================================
   13. BENEFICIOS (tarjetas inline del HTML)
   ============================================================= */

body.index-page #beneficios .col-lg-6 > div {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-top: 1px solid rgba(255,255,255,.12) !important;
  border-radius: var(--r-lg) !important;
  box-shadow: var(--glass-edge), 0 12px 34px rgba(0,0,0,.32);
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass);
}
body.index-page #beneficios .col-lg-6 > div:hover {
  transform: translateY(-6px);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}
body.index-page #beneficios h4 { color: #fff !important; }
body.index-page #beneficios .beneficio-check { color: var(--g-magenta-2) !important; }

/* =============================================================
   14. PARTICIPA
   ============================================================= */

body.index-page #participa .col-lg-8 > div {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur-lg) !important;
  backdrop-filter: var(--glass-blur-lg) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  border-radius: var(--r-xl) !important;
  box-shadow: var(--glass-edge), var(--glass-lift);
}

/* =============================================================
   15. VINCULACIONES (conservada, re-vestida en vidrio)
   ============================================================= */

.vinc-banner {
  background: transparent !important;
  animation: none !important;
  padding: 96px 0 0 !important;
}
/* Aurora local propia del bloque, ahora como capa suave */
.vinc-banner::before {
  content: '';
  position: absolute;
  inset: -25%;
  background:
    radial-gradient(38% 44% at 26% 34%, rgba(214,0,110,.20), transparent 65%),
    radial-gradient(35% 41% at 74% 62%, rgba(139,92,246,.22), transparent 65%);
  animation: g-aurora 24s ease-in-out infinite;
  pointer-events: none;
  will-change: transform;
}

.vinc-badge {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.2) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.32);
  color: #fff !important;
}

.vinc-headline { letter-spacing: -.025em; }
.vinc-subtext { color: var(--t-mid) !important; }
.vinc-opp-label { color: var(--t-faint) !important; }

.vinc-country-chip {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  border: 1px solid rgba(255,255,255,.15) !important;
  border-radius: var(--r-md) !important;
  box-shadow: var(--glass-edge), 0 10px 26px rgba(0,0,0,.3);
  padding: 14px 22px !important;
}
.vinc-country-chip:hover {
  background: linear-gradient(135deg, rgba(214,0,110,.28), rgba(139,92,246,.22)) !important;
  border-color: rgba(255,255,255,.3) !important;
  box-shadow: var(--glass-edge), 0 16px 40px rgba(214,0,110,.35);
}

.vinc-cta-bar {
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  box-shadow: var(--glass-edge), 0 -8px 40px rgba(0,0,0,.3);
  margin-top: 70px !important;
}
.vinc-cta-button {
  border: 1px solid rgba(255,255,255,.26);
}

/* =============================================================
   16. NOTICIAS — "Últimas novedades del programa" (conservada)
   ============================================================= */

.noticias-section { padding: 96px 0 88px !important; }

.noticias-slide {
  border-radius: var(--r-xl) !important;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: var(--glass-edge), 0 16px 44px rgba(0,0,0,.4);
  transition: transform .55s var(--ease-glass), box-shadow .55s var(--ease-glass), border-color .4s;
}
.noticias-slide:hover {
  transform: translateY(-9px);
  border-color: rgba(255,255,255,.26);
  box-shadow: var(--glass-edge), 0 30px 70px rgba(0,0,0,.55);
}

.noticias-slide .ns-overlay {
  background: linear-gradient(
    to bottom,
    rgba(5,8,28,.05) 0%,
    rgba(5,8,28,.30) 42%,
    rgba(5,8,28,.94) 100%
  ) !important;
}

/* Panel de vidrio sobre la imagen para el texto */
.noticias-slide .ns-content {
  padding: 22px 20px 24px !important;
}
.noticias-slide .ns-content::before {
  content: '';
  position: absolute;
  inset: 8px 8px 8px 8px;
  border-radius: var(--r-md);
  background: rgba(255,255,255,.055);
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  backdrop-filter: blur(14px) saturate(160%);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.24);
  z-index: -1;
  opacity: 0;
  transition: opacity .45s var(--ease-glass);
}
.noticias-slide:hover .ns-content::before { opacity: 1; }
.noticias-slide .ns-content { position: absolute; z-index: 1; }

.ns-cat {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  border: 1px solid rgba(255,255,255,.24);
  box-shadow: 0 6px 18px rgba(214,0,110,.4), inset 0 1px 0 rgba(255,255,255,.4);
}
.noticias-slide h4 { letter-spacing: -.01em; }
.noticias-slide:hover h4 { color: #ff9fd6 !important; }

/* =============================================================
   17. SECCIÓN VIDEO JICA — REDISEÑADA
   ============================================================= */

.jica-glass {
  position: relative;
  padding: 100px 0;
  overflow: hidden;
}

.jica-glass__shell {
  position: relative;
  border-radius: var(--r-xl);
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: var(--glass-edge), var(--glass-lift);
  padding: 46px;
  overflow: hidden;
}

/* Sol naciente decorativo (guiño a Japón) — muy sutil */
.jica-glass__shell::after {
  content: '';
  position: absolute;
  top: -140px; right: -110px;
  width: 380px; height: 380px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(214,0,110,.24), transparent 62%);
  filter: blur(20px);
  animation: g-orb-float 20s ease-in-out infinite;
  pointer-events: none;
}

.jica-brandrow {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 22px;
  flex-wrap: wrap;
}
.jica-chip {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: rgba(255,255,255,.09);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
  border-radius: 50px;
  padding: 8px 16px;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
}
.jica-chip img { max-height: 22px; max-width: 62px; object-fit: contain; filter: brightness(0) invert(1); }

.jica-glass h2 {
  font-size: clamp(1.5rem, 2.6vw, 2.1rem);
  font-weight: 900;
  color: #fff;
  letter-spacing: -.025em;
  margin-bottom: 12px;
}
.jica-quote {
  font-style: italic;
  color: var(--t-low);
  font-size: 14px;
  line-height: 1.7;
  padding-left: 16px;
  border-left: 2px solid rgba(214,0,110,.6);
  margin-bottom: 20px;
}
.jica-glass p.jica-body { color: var(--t-mid); line-height: 1.85; margin-bottom: 24px; }

.jica-pills { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 26px; }
.jica-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,.06);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22);
  border-radius: 50px;
  padding: 9px 16px;
  font-size: 12.5px;
  color: var(--t-mid);
  transition: all .4s var(--ease-glass);
}
.jica-pill i { color: var(--g-magenta-2); font-size: 13px; }
.jica-pill:hover {
  background: rgba(255,255,255,.13);
  color: #fff;
  transform: translateY(-2px);
}

.jica-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 28px;
}
.jica-meta__item {
  flex: 1 1 180px;
  background: rgba(255,255,255,.05);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.11);
  border-radius: var(--r-sm);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  padding: 13px 16px;
}
.jica-meta__label {
  display: block;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--t-faint);
  margin-bottom: 4px;
}
.jica-meta__value { color: #fff; font-size: 13.5px; font-weight: 700; }

/* Marco del video con canto de vidrio */
.jica-video {
  position: relative;
  border-radius: var(--r-lg);
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: var(--glass-edge), 0 26px 66px rgba(0,0,0,.55);
  background: #000;
}
.jica-video video { width: 100%; display: block; }
.jica-video::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34), inset 0 -1px 0 rgba(255,255,255,.06);
}
.jica-video__caption {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
  font-size: 11.5px;
  color: var(--t-faint);
  letter-spacing: .4px;
}
.jica-video__caption i { color: var(--g-magenta-2); }

@media (max-width: 991px) {
  .jica-glass { padding: 64px 0; }
  .jica-glass__shell { padding: 28px 20px; }
}

/* =============================================================
   18. INCORPÓRATE AL PDP — bifurcación por Tier (Canva p.2)
   ============================================================= */

.pdp-join { padding: 100px 0; position: relative; }

.pdp-join__cols {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 26px;
  align-items: stretch;
}

.pdp-col {
  position: relative;
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: var(--r-xl);
  box-shadow: var(--glass-edge), var(--glass-lift);
  padding: 34px 30px;
  transition: transform .55s var(--ease-glass), box-shadow .55s var(--ease-glass), border-color .4s;
}
.pdp-col:hover {
  transform: translateY(-7px);
  border-color: rgba(255,255,255,.26);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}

.pdp-col__title {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,.09);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.2);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.32);
  border-radius: 50px;
  padding: 10px 22px;
  color: #fff;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  margin-bottom: 26px;
}

.pdp-tier {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 15px 0;
  border-bottom: 1px solid rgba(255,255,255,.07);
  transition: transform .4s var(--ease-glass);
}
.pdp-tier:last-of-type { border-bottom: none; }
.pdp-tier:hover { transform: translateX(5px); }

.pdp-tier__icon {
  width: 46px; height: 46px;
  flex-shrink: 0;
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 19px;
  color: #fff;
  border: 1px solid rgba(255,255,255,.2);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.32);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
}
/* Un color por tier — consistente en todo el sitio */
.pdp-tier--oem   .pdp-tier__icon { background: linear-gradient(135deg, rgba(61,92,224,.55), rgba(27,42,107,.5)); }
.pdp-tier--t1    .pdp-tier__icon { background: linear-gradient(135deg, rgba(34,211,238,.45), rgba(14,165,233,.4)); }
.pdp-tier--t2    .pdp-tier__icon { background: linear-gradient(135deg, rgba(139,92,246,.5), rgba(109,40,217,.42)); }
.pdp-tier--t3    .pdp-tier__icon { background: linear-gradient(135deg, rgba(249,115,22,.48), rgba(234,88,12,.4)); }
.pdp-tier--pyme  .pdp-tier__icon { background: linear-gradient(135deg, rgba(34,197,94,.48), rgba(22,163,74,.4)); }

.pdp-tier__name {
  color: #fff;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: .4px;
  margin: 0 0 4px;
}
.pdp-tier--oem  .pdp-tier__name { color: #93b4ff; }
.pdp-tier--t1   .pdp-tier__name { color: #67e8f9; }
.pdp-tier--t2   .pdp-tier__name { color: #c4b5fd; }
.pdp-tier--t3   .pdp-tier__name { color: #fdba74; }
.pdp-tier--pyme .pdp-tier__name { color: #86efac; }

.pdp-tier__desc {
  color: var(--t-mid);
  font-size: 13.2px;
  line-height: 1.65;
  margin: 0;
}

/* Nodo central con el apretón de manos */
.pdp-join__hub {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-width: 116px;
}
.pdp-hub-ring {
  width: 92px; height: 92px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 32px;
  color: #fff;
  background: var(--glass-fill-strong);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.24);
  box-shadow: var(--glass-edge), 0 14px 40px rgba(214,0,110,.34);
  position: relative;
}
.pdp-hub-ring::before,
.pdp-hub-ring::after {
  content: '';
  position: absolute;
  inset: -10px;
  border-radius: 50%;
  border: 1px solid rgba(214,0,110,.4);
  animation: pdp-ripple 3s ease-out infinite;
}
.pdp-hub-ring::after { animation-delay: 1.5s; }
@keyframes pdp-ripple {
  0%   { transform: scale(.9);  opacity: .8; }
  100% { transform: scale(1.5); opacity: 0; }
}
.pdp-hub-flow {
  color: var(--g-magenta-2);
  font-size: 13px;
  letter-spacing: 4px;
  animation: pdp-flow 2.4s ease-in-out infinite;
}
@keyframes pdp-flow {
  0%,100% { opacity: .3; transform: translateX(-3px); }
  50%     { opacity: 1;  transform: translateX(3px); }
}

/* Panel único: reemplaza a las dos columnas (compradoras/proveedoras)
   con una sola tarjeta que reúne los cinco perfiles. */
.pdp-col--single { max-width: 980px; margin: 0 auto; }

.pdp-tiers-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 32px;
  margin-bottom: 26px;
}
.pdp-tiers-grid .pdp-tier { border-bottom: none; padding: 13px 0; }

.pdp-col__benefits {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 8px;
  padding-top: 22px;
  border-top: 1px solid rgba(255,255,255,.09);
}
.pdp-benefit {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 13px 14px;
  border-radius: var(--r-sm);
  background: rgba(255,255,255,.05);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.1);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  font-size: 12.5px;
  color: var(--t-mid);
  line-height: 1.45;
  transition: all .4s var(--ease-glass);
}
.pdp-benefit i { color: #86efac; font-size: 17px; flex-shrink: 0; }
.pdp-benefit:hover { background: rgba(255,255,255,.11); color: #fff; transform: translateY(-3px); }

.pdp-col__cta { margin-top: 26px; width: 100%; justify-content: center; }

/* Un solo botón de registro debajo de las dos columnas: antes había
   uno por columna (compradoras/proveedoras) apuntando al mismo
   enlace, así que se unificaron en uno solo, coherente con ambas. */
.pdp-join__cta-wrap { display: flex; justify-content: center; margin-top: 40px; }
.pdp-join__cta { min-width: 280px; justify-content: center; }

@media (max-width: 991px) {
  .pdp-join__cols { grid-template-columns: 1fr; }
  .pdp-join__hub { flex-direction: row; min-width: 0; padding: 4px 0; }
  .pdp-hub-ring { width: 70px; height: 70px; font-size: 25px; }
  .pdp-hub-flow { transform: rotate(90deg); }
}
@media (max-width: 480px) {
  .pdp-col { padding: 24px 18px; }
  .pdp-col__benefits { grid-template-columns: 1fr; }
  .pdp-tiers-grid { grid-template-columns: 1fr; }
}

/* =============================================================
   19. FAQ
   ============================================================= */

body.index-page .faq .faq-item { padding: 22px 26px !important; }
body.index-page .faq .faq-item h3 { color: #fff !important; }
body.index-page .faq .faq-item .faq-content p { color: var(--t-mid) !important; }
body.index-page .faq .faq-item .faq-toggle { color: var(--g-magenta-2) !important; }
body.index-page .faq .faq-item.faq-active {
  border-color: rgba(214,0,110,.4) !important;
  background: linear-gradient(135deg, rgba(214,0,110,.14), rgba(255,255,255,.05)) !important;
}
body.index-page .faq .faq-item.faq-active h3,
body.index-page .faq .faq-item.faq-active .faq-toggle { color: #ff9fd6 !important; }
body.index-page .faq .faq-item strong { color: #fff; }

/* =============================================================
   20. CONTACTO
   ============================================================= */

body.index-page .contact .info-item { padding: 30px 24px !important; }
body.index-page .contact .info-item i {
  color: var(--g-magenta-2) !important;
  background: rgba(255,255,255,.07) !important;
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.26);
}
body.index-page .contact .info-item h3 { color: #fff !important; }
body.index-page .contact .info-item p { color: var(--t-mid) !important; }

body.index-page .contact .php-email-form {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: var(--r-xl);
  box-shadow: var(--glass-edge), var(--glass-lift);
  padding: 32px !important;
}
body.index-page .contact .form-control {
  background: rgba(255,255,255,.055) !important;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.13) !important;
  border-radius: var(--r-sm) !important;
  color: #fff !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.14) !important;
  padding: 13px 16px;
  transition: all .35s var(--ease-glass);
}
body.index-page .contact .form-control::placeholder { color: var(--t-faint); }
body.index-page .contact .form-control:focus {
  background: rgba(255,255,255,.10) !important;
  border-color: rgba(214,0,110,.6) !important;
  box-shadow: 0 0 0 4px rgba(214,0,110,.14), inset 0 1px 0 rgba(255,255,255,.2) !important;
  outline: none;
}
body.index-page .contact select.form-control option { background: #0e1642; color: #fff; }
body.index-page .contact .php-email-form button[type=submit] {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  border: 1px solid rgba(255,255,255,.24) !important;
  border-radius: 50px !important;
  padding: 13px 40px !important;
  font-weight: 700;
  box-shadow: 0 10px 32px rgba(214,0,110,.45), inset 0 1px 0 rgba(255,255,255,.45);
  transition: transform .4s var(--ease-glass), box-shadow .4s;
}
body.index-page .contact .php-email-form button[type=submit]:hover {
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 18px 46px rgba(214,0,110,.62), inset 0 1px 0 rgba(255,255,255,.55);
}

/* =============================================================
   21. CTA FINAL
   ============================================================= */

body.index-page .cta-final {
  background: transparent !important;
  padding: 110px 0 !important;
}
body.index-page .cta-final::before {
  background: radial-gradient(circle, rgba(214,0,110,.16), transparent 62%) !important;
  filter: blur(30px);
  animation: g-orb-float 24s ease-in-out infinite;
}
body.index-page .cta-final .container {
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border: 1px solid rgba(255,255,255,.14);
  border-radius: var(--r-xl);
  box-shadow: var(--glass-edge), var(--glass-lift);
  padding: 58px 40px !important;
  max-width: 940px;
}
body.index-page .cta-final h2 { letter-spacing: -.025em; }
body.index-page .cta-final .btn-cta-primary {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  border: 1px solid rgba(255,255,255,.24);
  box-shadow: 0 10px 32px rgba(214,0,110,.45), inset 0 1px 0 rgba(255,255,255,.45);
}
body.index-page .cta-final .btn-cta-secondary {
  background: rgba(255,255,255,.07);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  border-color: rgba(255,255,255,.24) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
}

/* =============================================================
   22. CLIENTES / ALIADOS
   ============================================================= */

body.index-page #clients { padding: 46px 0 !important; }
/* Los logos de aliados mezclan PNG opacos y transparentes: placa blanca
   para todos, así se ven igual sin depender del canal alfa. */
body.index-page #clients .swiper-slide {
  background: #fff;
  border-radius: var(--r-sm);
  padding: 12px 16px;
  box-shadow: 0 4px 16px rgba(0,0,0,.3);
  opacity: .72;
  transition: opacity .4s, transform .4s var(--ease-glass);
}
body.index-page #clients .swiper-slide:hover { opacity: 1; transform: translateY(-4px); }
body.index-page #clients img { filter: none; mix-blend-mode: multiply; }
body.index-page #clients small { color: var(--t-faint) !important; }

/* =============================================================
   23. FOOTER
   ============================================================= */

body.index-page .footer {
  background: rgba(4,7,22,.72) !important;
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border-top: 1px solid rgba(255,255,255,.10);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
  position: relative;
  z-index: 1;
}
body.index-page .footer h4 { color: #fff; }
body.index-page .footer a { color: var(--t-low); transition: color .3s; }
body.index-page .footer a:hover { color: var(--g-magenta-2); }
body.index-page .footer .footer-contact p { color: var(--t-low); }

/* Scroll top de vidrio */
body.index-page .scroll-top {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.2);
  box-shadow: var(--glass-edge), 0 10px 28px rgba(0,0,0,.4);
  color: #fff;
}
body.index-page .scroll-top:hover {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  transform: translateY(-3px);
}

/* =============================================================
   24. MODALES — vidrio oscuro
   ============================================================= */

#modalNoticia .mn-inner,
#modalJICA .modal-inner,
#modalOportunidad .op-inner {
  background: rgba(12,18,50,.86) !important;
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border: 1px solid rgba(255,255,255,.15);
  border-radius: var(--r-xl) !important;
  box-shadow: var(--glass-edge), 0 40px 100px rgba(0,0,0,.7) !important;
}
#modalNoticia, #modalJICA, #modalOportunidad {
  background: rgba(3,5,18,.78) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  backdrop-filter: blur(10px) !important;
}
.mn-title, #modalJICA h2, #modalJICA h4, #modalOportunidad h2, #modalOportunidad h4 { color: #fff !important; }
.mn-content p, #modalJICA .modal-body-jica, #modalOportunidad .op-body { color: var(--t-mid) !important; }
#modalJICA .modal-body-jica li, #modalOportunidad .op-body li { color: var(--t-mid); }
#modalJICA .modal-body-jica strong, #modalOportunidad .op-body strong { color: #fff; }
#modalJICA .modal-header-jica { background: linear-gradient(135deg, rgba(27,42,107,.85), rgba(139,92,246,.4)) !important; }
/* El cuerpo del modal se volvió oscuro (arriba), pero estas cuatro
   cajas siguen escritas con fondo claro en línea (Objetivo,
   Compromisos, Incluye, No incluye) — solo la primera (f8f9ff)
   había quedado corregida. Con el texto forzado a claro por las
   reglas de arriba, las otras tres quedaban con texto claro sobre
   fondo claro, prácticamente invisibles. */
#modalJICA .modal-body-jica div[style*="f8f9ff"],
#modalJICA .modal-body-jica div[style*="fff8f0"] {
  background: rgba(255,255,255,.06) !important;
  border-left-color: var(--g-magenta) !important;
  border-radius: var(--r-sm) !important;
}
#modalJICA .modal-body-jica div[style*="f0fdf4"] {
  background: rgba(34,197,94,.10) !important;
  border: 1px solid rgba(74,222,128,.28) !important;
  border-radius: var(--r-sm) !important;
}
#modalJICA .modal-body-jica div[style*="fff5f5"] {
  background: rgba(239,68,68,.10) !important;
  border: 1px solid rgba(248,113,113,.28) !important;
  border-radius: var(--r-sm) !important;
}
/* Los títulos "El programa incluye/no incluye" traían su color de
   marca en línea (verde/rojo) con !important propio: se conservan,
   solo se aclaran un punto para más contraste sobre fondo oscuro. */
#modalJICA .modal-body-jica h5[style*="16a34a"] { color: #4ade80 !important; }
#modalJICA .modal-body-jica h5[style*="dc2626"] { color: #f87171 !important; }
.mn-footer, #modalJICA .modal-footer-jica, #modalOportunidad .op-footer { border-top-color: rgba(255,255,255,.1) !important; }
.mn-date { color: var(--t-faint) !important; }

/* =============================================================
   25. PARCHES SOBRE EL TEMA CLARO HEREDADO
   main.css pinta <section> de blanco y varios bloques traen
   colores en atributo style; aquí se neutralizan.
   ============================================================= */

body.index-page main > section,
body.index-page .pdp-join,
body.index-page .jica-glass {
  background-color: transparent !important;
}

/* Iconos de la franja de resultados: círculo blanco → vidrio */
body.index-page .stats i {
  background: rgba(255,255,255,.07) !important;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.28);
  color: var(--g-magenta-2) !important;
}

/* Tarjeta de "Convocatorias vigentes" (estilos en atributo style) */
body.index-page #convocatorias .col-lg-8 > div {
  background: var(--glass-fill) !important;
  -webkit-backdrop-filter: var(--glass-blur-lg) !important;
  backdrop-filter: var(--glass-blur-lg) !important;
  border: 1px solid rgba(255,255,255,.13) !important;
  border-left: 1px solid rgba(255,255,255,.13) !important;
  border-radius: var(--r-xl) !important;
  box-shadow: var(--glass-edge), var(--glass-lift) !important;
  position: relative;
  overflow: hidden;
}
/* Barra de acento a la izquierda, ahora como línea de luz */
body.index-page #convocatorias .col-lg-8 > div::before {
  content: '';
  position: absolute;
  left: 0; top: 16%; bottom: 16%;
  width: 3px;
  border-radius: 3px;
  background: linear-gradient(180deg, var(--g-magenta), var(--g-violet));
  box-shadow: 0 0 18px rgba(214,0,110,.65);
}
body.index-page #convocatorias h4 { color: #fff !important; }
body.index-page #convocatorias p,
body.index-page #convocatorias span { color: var(--t-mid) !important; }
body.index-page #convocatorias strong { color: #fff !important; }
/* Bloque lateral con la fecha de cierre */
body.index-page #convocatorias .col-lg-8 > div > div:last-child {
  background: rgba(255,255,255,.06) !important;
  border: 1px solid rgba(255,255,255,.11);
  border-radius: var(--r-md) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22);
}
body.index-page #convocatorias .col-lg-8 > div > div:last-child div:nth-child(2),
body.index-page #convocatorias .col-lg-8 > div > div:last-child div:nth-child(3) {
  color: #fff !important;
}
body.index-page #convocatorias img[alt="JICA"] { filter: brightness(0) invert(1); opacity: .9; }

/* Logos institucionales sobre vidrio oscuro: placa clara, sin invertir */
body.index-page .conv-logo {
  background: #fff;
  border-radius: var(--r-sm);
  padding: 8px 12px;
  width: fit-content;
  box-shadow: 0 4px 14px rgba(0,0,0,.28);
}
body.index-page .conv-logo img,
body.index-page .jica-chip img,
body.index-page #convocatorias img[alt="JICA"] {
  filter: none;
  opacity: 1;
  mix-blend-mode: multiply;
}
body.index-page .jica-chip:has(img) {
  background: #fff;
  border-color: rgba(255,255,255,.4);
  color: var(--g-blue);
}
body.index-page #convocatorias img[alt="JICA"] {
  background: #fff;
  border-radius: 6px;
  padding: 5px 8px;
}
body.index-page .conv-logo-badge {
  background: var(--g-blue) !important;
  border: none;
  color: #fff !important;
}

/* El menú creció con "Incorpórate": lo compactamos antes de que desborde */
@media (min-width: 1200px) and (max-width: 1499px) {
  body.index-page .navmenu > ul > li > a {
    font-size: 13.5px;
    padding: 18px 10px;
  }
  body.index-page .navmenu .nav-btn-contacto {
    padding: 6px 14px !important;
    font-size: 12px !important;
    margin-left: 2px;
  }
  /* "Participar" duplica el destino de "Contacto": sobra en este ancho */
  body.index-page .btn-getstarted { display: none; }
  body.index-page .header .logo img { max-height: 84px !important; }
}
@media (min-width: 1200px) and (max-width: 1319px) {
  body.index-page .navmenu > ul > li > a { font-size: 12.5px; padding: 18px 7px; }
}

/* Etiquetas de las pestañas y listas del diagnóstico */
body.index-page .tabs .nav-tabs .nav-item,
body.index-page .tabs .nav-tabs .nav-link h4,
body.index-page .tabs .tab-pane ul li,
body.index-page .tabs .tab-pane .fst-italic {
  color: var(--t-mid) !important;
}
body.index-page .tabs .nav-tabs .nav-link.active h4 { color: #fff !important; }

/* Badges de estado legibles sobre vidrio oscuro */
body.index-page .badge-proximamente {
  background: rgba(214,0,110,.18) !important;
  border: 1px solid rgba(214,0,110,.45);
  color: #ff9fd6 !important;
}
body.index-page .badge-abierta {
  background: rgba(34,197,94,.15) !important;
  border: 1px solid rgba(34,197,94,.4);
  color: #86efac !important;
}
body.index-page .badge-completo {
  background: rgba(61,92,224,.18) !important;
  border: 1px solid rgba(61,92,224,.45);
  color: #93b4ff !important;
}

/* Mensajes del formulario */
body.index-page .php-email-form .loading,
body.index-page .php-email-form .sent-message,
body.index-page .php-email-form .error-message {
  background: rgba(255,255,255,.08) !important;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: var(--r-sm);
  color: #fff !important;
}

/* =============================================================
   26. PRESUPUESTO DE RENDIMIENTO
   Cada backdrop-filter obliga al navegador a releer y desenfocar
   lo que hay detrás en cada fotograma. Se reserva para los paneles
   grandes; los elementos pequeños y repetidos usan un relleno
   translúcido plano, que es visualmente equivalente a ese tamaño.
   ============================================================= */

body.index-page .pdp-tier__icon,
body.index-page .pdp-benefit,
body.index-page .jica-pill,
body.index-page .jica-meta__item,
body.index-page .hic-tag,
body.index-page .hic-icon-wrap,
body.index-page .participa-card .participa-icon,
body.index-page .convocatorias-card .card-icon,
body.index-page .material-item .material-icon,
body.index-page .tipo-icon-wrap,
body.index-page .beneficio-item .beneficio-check,
body.index-page .stats i,
body.index-page .contact .info-item i,
body.index-page .contact .form-control,
body.index-page .avance-item,
body.index-page .material-item,
body.index-page .tabs .nav-tabs .nav-link,
body.index-page .faq .faq-item,
body.index-page .stats .stats-item,
body.index-page .participa-card,
body.index-page .gobierno-top-bar,
body.index-page .vinc-country-chip,
body.index-page .vinc-badge,
body.index-page .vinc-cta-bar,
body.index-page .proceso-step .step-content,
body.index-page .convocatorias-card,
body.index-page .contact .info-item,
body.index-page .pdp-col__title,
body.index-page .pdp-hub-ring,
body.index-page .jica-chip,
body.index-page .hero-eyebrow,
body.index-page .hero-mute,
body.index-page .g-btn--ghost,
body.index-page .cta-final .btn-cta-secondary,
body.index-page .noticias-slide .ns-content::before {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* El desenfoque de las tarjetas de noticias solo se activa al pasar
   el cursor; en reposo un relleno plano da el mismo resultado. */
.noticias-slide:hover .ns-content::before {
  -webkit-backdrop-filter: blur(14px) saturate(160%) !important;
  backdrop-filter: blur(14px) saturate(160%) !important;
}

/* Rellenos planos equivalentes para lo que perdió el desenfoque */
body.index-page .vinc-country-chip,
body.index-page .vinc-badge,
body.index-page .vinc-cta-bar,
body.index-page .proceso-step .step-content,
body.index-page .convocatorias-card,
body.index-page .contact .info-item,
body.index-page .pdp-col__title,
body.index-page .jica-chip,
body.index-page .hero-eyebrow,
body.index-page .hero-mute,
body.index-page .g-btn--ghost,
body.index-page .cta-final .btn-cta-secondary {
  background: rgba(255,255,255,.085) !important;
}
body.index-page .pdp-hub-ring { background: rgba(255,255,255,.13) !important; }
body.index-page .jica-chip:has(img) { background: #fff !important; }

/* El resplandor original animaba box-shadow (repinta cada fotograma).
   Se sustituye por el flotado de translateY, que va en el compositor. */
.vinc-cta-button { animation: g-float 3.2s ease-in-out infinite .15s !important; }
.vinc-cta-button:hover { animation: none !important; }

/* Reemplazo del vidrio por relleno plano en esos elementos */
body.index-page .avance-item,
body.index-page .material-item,
body.index-page .participa-card,
body.index-page .stats .stats-item,
body.index-page .faq .faq-item,
body.index-page .tabs .nav-tabs .nav-link {
  background: rgba(255,255,255,.055) !important;
}
body.index-page .tabs .nav-tabs .nav-link.active {
  background: linear-gradient(135deg, rgba(214,0,110,.30), rgba(139,92,246,.22)) !important;
}
body.index-page .faq .faq-item.faq-active {
  background: linear-gradient(135deg, rgba(214,0,110,.14), rgba(255,255,255,.05)) !important;
}

/* NOTA: aquí había `content-visibility: auto` en las secciones.
   Se retiró porque cambia la altura de cada sección al entrar y salir
   de pantalla, lo que invalida los offsets que AOS calcula al iniciar:
   los elementos revelados por scroll se quedaban en opacity:0.
   La ganancia real de rendimiento vino de recortar los backdrop-filter. */

/* Promoción a capa propia de lo que sí se anima de forma continua */
.hero-video__media video,
.hero-info-card::after,
.vinc-cta-bar::before,
.vinc-country-chip {
  will-change: transform;
  backface-visibility: hidden;
}

/* Los chips flotan solo al pasar el cursor: 5 animaciones infinitas
   en pantalla no justificaban su costo durante el scroll. */
.vinc-country-chip { animation: none !important; }
.vinc-country-chip:hover { animation: chip-float 4s ease-in-out infinite !important; }

/* =============================================================
   27. CONTADORES
   Los signos + y % van en su propio <span> para que PureCounter
   pueda escribir solo el número dentro del suyo.
   ============================================================= */

.g-affix {
  font-weight: 900;
  letter-spacing: -.02em;
  color: inherit;
}
.g-metric__num .purecounter { font-variant-numeric: tabular-nums; }

/* El degradado del número de Avances se conserva al reescribirlo */
body.index-page .avance-num.purecounter {
  background: linear-gradient(135deg, #ff4fa0, #8b5cf6);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-variant-numeric: tabular-nums;
}

/* Evita que el ancho salte mientras el número sube */
body.index-page .stats .purecounter,
body.index-page #convocatorias .purecounter,
body.index-page .tabs .tab-pane .purecounter {
  font-variant-numeric: tabular-nums;
}

/* =============================================================
   28. BOTONES FLOTANTES
   Solo se anima translateY (propiedad de compositor). Al pasar el
   cursor se detiene la animación para que el transform de :hover
   pueda aplicarse; si no, el del keyframe tendría prioridad.
   ============================================================= */

@keyframes g-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -7px, 0); }
}

body.index-page .g-btn,
body.index-page .hic-btn,
body.index-page .btn-participa,
body.index-page .about-btn,
body.index-page .vinc-cta-button,
body.index-page .cta-final .btn-cta-primary,
body.index-page .cta-final .btn-cta-secondary,
body.index-page .contact .php-email-form button[type=submit],
body.index-page .hero-mute,
body.index-page .scroll-top {
  animation: g-float 3.2s ease-in-out infinite;
  will-change: transform;
}

/* Desfase para que no suban y bajen todos a la vez */
body.index-page .g-btn--ghost,
body.index-page .cta-final .btn-cta-secondary { animation-delay: .45s; }
body.index-page .hic-btn                      { animation-delay: .25s; }
body.index-page .btn-participa                { animation-delay: .6s; }
body.index-page .about-btn                    { animation-delay: .35s; }
body.index-page .vinc-cta-button              { animation-delay: .15s; }
body.index-page .hero-mute                    { animation-delay: .8s; }
body.index-page .scroll-top                   { animation-delay: .5s; }
body.index-page .pdp-col:nth-of-type(2) .pdp-col__cta { animation-delay: .55s; }

/* Botones de acción dentro de los modales.
   Se excluyen a propósito las ✕ de cierre (.mn-close y las de
   #modalJICA/#modalOportunidad): son objetivos pequeños y moverlos
   dificulta acertarles. */
body.index-page .mn-btn-close,
body.index-page #modalJICA .modal-footer-jica button,
body.index-page #modalOportunidad .op-footer button {
  animation: g-float-soft 3.6s ease-in-out infinite .2s;
  will-change: transform;
}
body.index-page .mn-btn-close:hover,
body.index-page #modalJICA .modal-footer-jica button:hover,
body.index-page #modalOportunidad .op-footer button:hover { animation: none; }

/* Los botones del encabezado laten menos: es una barra fija */
@keyframes g-float-soft {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -4px, 0); }
}
body.index-page .btn-getstarted,
body.index-page .navmenu .nav-btn-contacto {
  animation: g-float-soft 3.6s ease-in-out infinite;
  will-change: transform;
}
body.index-page .navmenu .nav-btn-contacto { animation-delay: .3s; }

/* Al pasar el cursor manda el :hover, no el keyframe */
body.index-page .g-btn:hover,
body.index-page .hic-btn:hover,
body.index-page .btn-participa:hover,
body.index-page .about-btn:hover,
body.index-page .vinc-cta-button:hover,
body.index-page .cta-final .btn-cta-primary:hover,
body.index-page .cta-final .btn-cta-secondary:hover,
body.index-page .contact .php-email-form button[type=submit]:hover,
body.index-page .hero-mute:hover,
body.index-page .scroll-top:hover,
body.index-page .btn-getstarted:hover,
body.index-page .navmenu .nav-btn-contacto:hover {
  animation: none;
}

/* Al enfocar con teclado tampoco flota: el foco debe quedar quieto */
body.index-page .g-btn:focus-visible,
body.index-page .hic-btn:focus-visible,
body.index-page .btn-participa:focus-visible,
body.index-page .vinc-cta-button:focus-visible,
body.index-page .cta-final .btn-cta-primary:focus-visible,
body.index-page .cta-final .btn-cta-secondary:focus-visible,
body.index-page .contact .php-email-form button[type=submit]:focus-visible,
body.index-page .hero-mute:focus-visible,
body.index-page .btn-getstarted:focus-visible,
body.index-page .navmenu .nav-btn-contacto:focus-visible {
  animation: none;
}

/* =============================================================
   29. SECCIÓN "¿QUÉ ES?" — fondo animado propio
   main.css pinta un ::before azul sólido que tapaba el fondo global.
   ============================================================= */

body.index-page #about.dark-background::before,
body.index-page #participa.dark-background::before {
  background: transparent !important;
}

body.index-page #about { position: relative; overflow: hidden; padding: 110px 0; }

.about-fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }

.about-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  will-change: transform;
  transform: translateZ(0);
  animation: g-orb-float 26s ease-in-out infinite;
}
.about-orb--1 { width: 420px; height: 420px; top: -14%; left: -8%;  background: rgba(214,0,110,.26); }
.about-orb--2 { width: 340px; height: 340px; bottom: -18%; right: -6%; background: rgba(61,92,224,.30); animation-duration: 31s; animation-delay: -8s; }
.about-orb--3 { width: 260px; height: 260px; top: 42%; left: 52%;  background: rgba(139,92,246,.22); animation-duration: 35s; animation-delay: -16s; }

/* Trama de puntos en deriva lenta */
.about-mesh {
  position: absolute;
  inset: -60px;
  background-image: radial-gradient(rgba(255,255,255,.10) 1px, transparent 1px);
  background-size: 34px 34px;
  mask-image: radial-gradient(ellipse 70% 70% at 50% 50%, #000 20%, transparent 85%);
  -webkit-mask-image: radial-gradient(ellipse 70% 70% at 50% 50%, #000 20%, transparent 85%);
  animation: about-mesh-drift 22s linear infinite;
  will-change: transform;
}
@keyframes about-mesh-drift {
  from { transform: translate3d(0,0,0); }
  to   { transform: translate3d(34px,34px,0); }
}

/* Dos curvas que evocan la cadena de suministro; el trazo recorre el camino */
.about-chain { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .55; }
.about-chain .chain-path {
  fill: none;
  stroke: url(#chainGrad);
  stroke-width: 1.6;
  stroke-dasharray: 90 620;
  animation: chain-flow 11s linear infinite;
}
.about-chain .chain-path--2 { animation-duration: 14s; animation-delay: -5s; }
@keyframes chain-flow {
  from { stroke-dashoffset: 710; }
  to   { stroke-dashoffset: 0; }
}

body.index-page #about .container { z-index: 1; }

.about-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  align-self: flex-start;
  background: rgba(255,255,255,.085);
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
  border-radius: 50px;
  padding: 7px 17px;
  margin-bottom: 20px;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2.2px;
  text-transform: uppercase;
}
.about-eyebrow__dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--g-magenta-2);
  box-shadow: 0 0 0 3px rgba(214,0,110,.25);
  animation: g-dot-pulse 2.2s ease-in-out infinite;
}

body.index-page #about .content h3 {
  font-size: clamp(1.7rem, 3vw, 2.5rem);
  font-weight: 900;
  line-height: 1.15;
  letter-spacing: -.025em;
  margin-bottom: 22px;
}
body.index-page #about .content p { color: var(--t-mid); line-height: 1.85; }

/* Las cuatro cajas pasan a ser tarjetas de vidrio */
body.index-page #about .icon-box {
  padding: 28px 24px 26px !important;
  border-radius: var(--r-lg);
  background: var(--glass-fill);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: var(--glass-edge), 0 12px 34px rgba(0,0,0,.30);
  overflow: hidden;
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
}
/* Las tarjetas son columnas col-md-6 de Bootstrap. Al pintarles fondo
   quedaban pegadas, porque la separación del grid vive dentro del
   padding de la propia columna. Se sustituye por un grid con gap real. */
body.index-page #about .col-xl-7 > .row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  margin: 0;
}
body.index-page #about .col-xl-7 > .row > .icon-box {
  width: auto;
  max-width: none;
  flex: none;
  margin: 0 !important;
}
@media (max-width: 575px) {
  body.index-page #about .col-xl-7 > .row { grid-template-columns: 1fr; gap: 16px; }
}

body.index-page #about .icon-box::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(135deg, rgba(214,0,110,.16), rgba(139,92,246,.10) 55%, transparent);
  opacity: 0;
  transition: opacity .5s var(--ease-glass);
  pointer-events: none;
}
body.index-page #about .icon-box:hover {
  transform: translateY(-7px);
  border-color: rgba(255,255,255,.26);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}
body.index-page #about .icon-box:hover::before { opacity: 1; }

body.index-page #about .icon-box i {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px; height: 52px;
  border-radius: 15px;
  font-size: 23px;
  margin-bottom: 16px;
  color: #fff !important;
  background: linear-gradient(135deg, rgba(214,0,110,.55), rgba(139,92,246,.42));
  border: 1px solid rgba(255,255,255,.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 8px 22px rgba(214,0,110,.28);
  transition: transform .5s var(--ease-glass), box-shadow .5s;
}
body.index-page #about .icon-box:hover i {
  transform: translateY(-3px) rotate(-6deg) scale(1.06);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.45), 0 14px 32px rgba(214,0,110,.5);
}

body.index-page #about .icon-box__num {
  position: absolute;
  top: 18px; right: 22px;
  font-size: 30px;
  font-weight: 900;
  line-height: 1;
  color: rgba(255,255,255,.09);
  letter-spacing: -.03em;
  transition: color .5s;
  z-index: 1;
}
body.index-page #about .icon-box:hover .icon-box__num { color: rgba(255,255,255,.20); }

body.index-page #about .icon-box h4 {
  position: relative; z-index: 1;
  font-size: 1.06rem;
  font-weight: 800;
  color: #fff !important;
  margin-bottom: 9px;
  letter-spacing: -.01em;
}
body.index-page #about .icon-box p {
  position: relative; z-index: 1;
  color: var(--t-mid) !important;
  font-size: .92rem;
  line-height: 1.7;
  margin: 0;
}

body.index-page .about-btn {
  background: linear-gradient(135deg, var(--g-magenta), var(--g-magenta-2)) !important;
  border: 1px solid rgba(255,255,255,.24);
  box-shadow: 0 10px 32px rgba(214,0,110,.45), inset 0 1px 0 rgba(255,255,255,.45);
  margin-top: 28px;
}

@media (max-width: 767px) {
  body.index-page #about { padding: 64px 0; }
  body.index-page #about .icon-box { padding: 22px 18px !important; }
  .about-orb { filter: blur(50px); }
  .about-chain { display: none; }
}

/* =============================================================
   30. SECCIÓN "PARTICIPA"
   ============================================================= */

body.index-page #participa { position: relative; overflow: hidden; padding: 110px 0; }

.part-fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.part-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(75px);
  will-change: transform;
  transform: translateZ(0);
  animation: g-orb-float 28s ease-in-out infinite;
}
.part-orb--1 { width: 380px; height: 380px; top: -12%; right: -6%; background: rgba(214,0,110,.26); }
.part-orb--2 { width: 320px; height: 320px; bottom: -16%; left: -6%; background: rgba(61,92,224,.28); animation-duration: 33s; animation-delay: -10s; }

/* Ondas concéntricas que salen del centro */
.part-rings { position: absolute; inset: 0; display: grid; place-items: center; }
.part-rings span {
  position: absolute;
  width: 260px; height: 260px;
  border-radius: 50%;
  border: 1px solid rgba(214,0,110,.30);
  animation: part-ripple 7s ease-out infinite;
  will-change: transform, opacity;
}
.part-rings span:nth-child(2) { animation-delay: 2.33s; }
.part-rings span:nth-child(3) { animation-delay: 4.66s; }
@keyframes part-ripple {
  0%   { transform: scale(.55); opacity: 0; }
  15%  { opacity: .7; }
  100% { transform: scale(3.2); opacity: 0; }
}

.part-panel {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 0;
  border-radius: var(--r-xl);
  overflow: hidden;
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur-lg);
  backdrop-filter: var(--glass-blur-lg);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: var(--glass-edge), var(--glass-lift);
}

.part-main { padding: 44px 42px; }
.part-aside {
  padding: 38px 34px;
  background: rgba(255,255,255,.045);
  border-left: 1px solid rgba(255,255,255,.09);
}

.part-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(34,197,94,.14);
  border: 1px solid rgba(34,197,94,.36);
  color: #86efac;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  padding: 7px 16px;
  border-radius: 50px;
  margin-bottom: 20px;
}
.part-title {
  font-size: clamp(1.5rem, 2.6vw, 2.1rem);
  font-weight: 900;
  color: #fff;
  letter-spacing: -.025em;
  margin-bottom: 14px;
}
.part-lead { color: var(--t-mid); line-height: 1.85; font-size: .97rem; margin-bottom: 26px; }

.part-channels { display: flex; flex-direction: column; gap: 12px; margin-bottom: 28px; }
.part-channel {
  display: flex;
  align-items: center;
  gap: 15px;
  padding: 14px 16px;
  border-radius: var(--r-md);
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.11);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  text-decoration: none !important;
  color: var(--t-mid);
  transition: transform .4s var(--ease-glass), background .4s, border-color .4s;
}
.part-channel:hover {
  transform: translateX(6px);
  background: rgba(255,255,255,.11);
  border-color: rgba(214,0,110,.42);
}
.part-channel__icon {
  width: 42px; height: 42px;
  flex-shrink: 0;
  border-radius: 12px;
  display: grid; place-items: center;
  font-size: 17px;
  color: #fff;
  background: linear-gradient(135deg, rgba(214,0,110,.6), rgba(139,92,246,.42));
  border: 1px solid rgba(255,255,255,.2);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34);
}
/* Es descendiente de un <a>: hereda el azul oscuro de main.css */
.part-channel__body { display: flex; flex-direction: column; min-width: 0; color: var(--t-mid); }
.part-channel__label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--t-faint);
}
.part-channel__value {
  color: #fff;
  font-size: .92rem;
  font-weight: 600;
  word-break: break-word;
}

.part-actions { display: flex; flex-wrap: wrap; gap: 12px; }

.part-aside__title {
  display: block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--t-faint);
  margin-bottom: 18px;
}
.part-perk {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: start;
  gap: 13px;
  padding: 16px 12px;
  border-radius: var(--r-md);
  border: 1px solid transparent;
  text-decoration: none !important;
  color: var(--t-mid);
  transition: background .4s, border-color .4s, transform .4s var(--ease-glass);
}
.part-perk + .part-perk { margin-top: 6px; }
.part-perk:hover {
  background: rgba(255,255,255,.07);
  border-color: rgba(255,255,255,.13);
  transform: translateY(-3px);
}
.part-perk__icon {
  width: 38px; height: 38px;
  border-radius: 11px;
  display: grid; place-items: center;
  font-size: 16px;
  color: var(--g-magenta-2);
  background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.26);
}
.part-perk strong {
  display: block;
  color: #fff;
  font-size: .95rem;
  font-weight: 700;
  margin-bottom: 4px;
}
.part-perk span > strong + * { display: block; }
.part-perk > span:nth-child(2) {
  color: var(--t-mid);
  font-size: .84rem;
  line-height: 1.6;
}
.part-perk__go {
  color: var(--t-faint);
  font-size: 22px;
  align-self: center;
  transition: transform .4s var(--ease-glass), color .4s;
}
.part-perk:hover .part-perk__go { color: var(--g-magenta-2); transform: translateX(4px); }

@media (max-width: 991px) {
  .part-panel { grid-template-columns: 1fr; }
  .part-aside { border-left: none; border-top: 1px solid rgba(255,255,255,.09); }
}
@media (max-width: 767px) {
  body.index-page #participa { padding: 64px 0; }
  .part-main { padding: 28px 20px; }
  .part-aside { padding: 26px 18px; }
  .part-orb { filter: blur(52px); }
  .part-actions .g-btn { width: 100%; justify-content: center; }
}

/* =============================================================
   31. PILARES — "Fortalecer, conectar e integrar"
   ============================================================= */

body.index-page #pilares { position: relative; overflow: hidden; padding: 100px 0; }

.pilares-fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.pilares-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  will-change: transform;
  transform: translateZ(0);
  animation: g-orb-float 30s ease-in-out infinite;
}
.pilares-orb--1 { width: 360px; height: 360px; top: -10%; left: 6%;  background: rgba(139,92,246,.24); }
.pilares-orb--2 { width: 300px; height: 300px; bottom: -14%; right: 8%; background: rgba(214,0,110,.24); animation-duration: 34s; animation-delay: -11s; }

.pilares-eyebrow {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 3.5px;
  text-transform: uppercase;
  color: var(--g-magenta-2);
  margin-bottom: 12px;
}
.pilares-title {
  font-size: clamp(1.5rem, 3vw, 2.4rem);
  font-weight: 900;
  color: #fff;
  letter-spacing: -.025em;
  line-height: 1.2;
  margin-bottom: 54px;
}

.pilares-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 18px;
  position: relative;
}
/* Línea que une los cinco pilares: son una progresión, no cinco cosas sueltas */
.pilares-grid::before {
  content: '';
  position: absolute;
  top: 46px; left: 8%; right: 8%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(214,0,110,.45), rgba(139,92,246,.45), transparent);
  z-index: 0;
}

.pilar {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 28px 18px 24px;
  border-radius: var(--r-lg);
  background: var(--glass-fill);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: var(--glass-edge), 0 12px 32px rgba(0,0,0,.3);
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
}
.pilar:hover {
  transform: translateY(-8px);
  border-color: rgba(255,255,255,.26);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}

.pilar__step {
  position: absolute;
  top: 14px; right: 16px;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .06em;
  color: rgba(255,255,255,.18);
}
.pilar__icon {
  width: 58px; height: 58px;
  margin: 0 auto 16px;
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 24px;
  color: #fff;
  background: linear-gradient(135deg, rgba(214,0,110,.6), rgba(139,92,246,.45));
  border: 1px solid rgba(255,255,255,.24);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 24px rgba(214,0,110,.3);
  transition: transform .5s var(--ease-glass), box-shadow .5s;
}
.pilar:hover .pilar__icon {
  transform: scale(1.1) rotate(-6deg);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 14px 34px rgba(214,0,110,.5);
}
.pilar h4 {
  font-size: .98rem;
  font-weight: 800;
  color: #fff;
  margin-bottom: 8px;
  letter-spacing: -.01em;
}
.pilar p { font-size: .84rem; line-height: 1.6; color: var(--t-mid); margin: 0; }

@media (max-width: 1199px) {
  .pilares-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pilares-grid::before { display: none; }
}
@media (max-width: 767px) {
  body.index-page #pilares { padding: 60px 0; }
  .pilares-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .pilares-title { margin-bottom: 34px; }
  .pilares-orb { filter: blur(50px); }
}
@media (max-width: 480px) {
  .pilares-grid { grid-template-columns: 1fr; }
}

/* Numeración de los Objetivos */
body.index-page #objetivos .participa-card { position: relative; }
.obj-num {
  position: absolute;
  top: 16px; right: 20px;
  font-size: 26px;
  font-weight: 900;
  line-height: 1;
  color: rgba(255,255,255,.10);
  letter-spacing: -.03em;
  transition: color .5s;
}
body.index-page #objetivos .participa-card:hover .obj-num { color: rgba(255,255,255,.22); }

/* =============================================================
   32. BENEFICIOS — subtítulos y frase de cierre
   ============================================================= */

body.index-page .beneficio-item h5 {
  color: #fff !important;
  font-size: .95rem;
  font-weight: 700;
  margin-bottom: 3px;
}
body.index-page .beneficio-item em { color: #ff9fd6; font-style: italic; }
body.index-page #beneficios strong { color: #fff; }

.benef-claim {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 34px;
  padding: 26px 32px;
  border-radius: var(--r-xl);
  background: linear-gradient(135deg, rgba(214,0,110,.16), rgba(139,92,246,.12));
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: var(--glass-edge), 0 14px 38px rgba(0,0,0,.3);
}
.benef-claim i {
  font-size: 30px;
  color: var(--g-magenta-2);
  flex-shrink: 0;
}
.benef-claim p {
  margin: 0;
  color: var(--t-mid);
  font-size: 1.02rem;
  line-height: 1.7;
}
@media (max-width: 575px) {
  .benef-claim { flex-direction: column; text-align: center; padding: 22px 18px; gap: 12px; }
}

/* =============================================================
   33. PROGRAMAS Y RESULTADOS
   ============================================================= */

body.index-page #programas { padding: 100px 0; }

.progres-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
  align-items: stretch;
}

.progres-card {
  display: flex;
  flex-direction: column;
  padding: 28px 24px;
  border-radius: var(--r-lg);
  background: var(--glass-fill);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: var(--glass-edge), 0 12px 34px rgba(0,0,0,.3);
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
}
.progres-card:hover {
  transform: translateY(-6px);
  border-color: rgba(255,255,255,.24);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}

.progres-card__head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(255,255,255,.09);
}
.progres-card__icon {
  width: 42px; height: 42px;
  flex-shrink: 0;
  border-radius: 12px;
  display: grid; place-items: center;
  font-size: 18px;
  color: #fff;
  background: linear-gradient(135deg, rgba(214,0,110,.55), rgba(139,92,246,.42));
  border: 1px solid rgba(255,255,255,.2);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34);
}
.progres-card__head h4 {
  margin: 0;
  font-size: .95rem;
  font-weight: 800;
  color: #fff;
  letter-spacing: -.01em;
  line-height: 1.3;
}

.progres-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 11px; }
.progres-list li {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  font-size: .875rem;
  line-height: 1.55;
  color: var(--t-mid);
}
.progres-list i { color: var(--g-magenta-2); font-size: 14px; flex-shrink: 0; margin-top: 3px; }
.progres-list--allies i { font-size: 20px; margin-top: -1px; }

.progres-figure {
  padding: 16px 0;
  border-bottom: 1px solid rgba(255,255,255,.07);
  text-align: center;
}
.progres-figure:last-child { border-bottom: none; }
.progres-figure__tag {
  display: inline-block;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--t-faint);
  margin-bottom: 4px;
}
.progres-figure__num {
  display: block;
  font-size: 2.3rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
  background: linear-gradient(135deg, #ff4fa0, #8b5cf6);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.progres-figure__label {
  display: block;
  margin-top: 6px;
  font-size: .8rem;
  line-height: 1.5;
  color: var(--t-low);
}
.progres-figure--soft .progres-figure__num { opacity: .82; }

/* La cuarta tarjeta es el total y se distingue */
.progres-card--total {
  background: linear-gradient(150deg, rgba(214,0,110,.18), rgba(139,92,246,.13));
  border-color: rgba(255,255,255,.2);
}
.progres-total { display: flex; flex-direction: column; justify-content: center; flex: 1; text-align: center; }
.progres-total__num {
  font-size: clamp(3rem, 5vw, 4rem);
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.04em;
  color: #fff;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 6px 30px rgba(214,0,110,.5);
}
.progres-total__label {
  display: block;
  margin-top: 12px;
  font-size: .9rem;
  font-weight: 600;
  line-height: 1.5;
  color: #fff;
}
.progres-total__note {
  display: block;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,.14);
  font-size: .76rem;
  color: var(--t-low);
}

@media (max-width: 1199px) { .progres-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  body.index-page #programas { padding: 60px 0; }
  .progres-grid { grid-template-columns: 1fr; }
  .progres-card { padding: 22px 18px; }
}

/* =============================================================
   34. NUESTRO ALCANCE
   ============================================================= */

body.index-page #alcance { position: relative; overflow: hidden; padding: 100px 0; }

.alcance-fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.alcance-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(72px);
  will-change: transform;
  transform: translateZ(0);
  animation: g-orb-float 29s ease-in-out infinite;
}
.alcance-orb--1 { width: 360px; height: 360px; top: -12%; left: -5%;  background: rgba(61,92,224,.28); }
.alcance-orb--2 { width: 320px; height: 320px; bottom: -14%; right: -4%; background: rgba(34,197,94,.20); animation-duration: 34s; animation-delay: -12s; }

.alcance-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: start;
}

.alc-panel {
  position: relative;
  padding: 32px 30px;
  border-radius: var(--r-xl);
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: var(--glass-edge), var(--glass-lift);
  overflow: hidden;
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
}
.alc-panel:hover {
  transform: translateY(-6px);
  border-color: rgba(255,255,255,.24);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}

/* Línea de acento superior: azul para compradoras, verde para proveedoras,
   el mismo par de colores que usa la bifurcación de Incorpórate. */
.alc-panel::before {
  content: '';
  position: absolute;
  top: 0; left: 12%; right: 12%;
  height: 2px;
  border-radius: 2px;
}
.alc-panel--compra::before { background: linear-gradient(90deg, transparent, #3d5ce0, transparent); box-shadow: 0 0 18px rgba(61,92,224,.7); }
.alc-panel--prov::before   { background: linear-gradient(90deg, transparent, #22c55e, transparent); box-shadow: 0 0 18px rgba(34,197,94,.6); }

.alc-panel__head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 13px;
  margin-bottom: 26px;
  padding-bottom: 18px;
  border-bottom: 1px solid rgba(255,255,255,.09);
}
.alc-panel__icon {
  width: 46px; height: 46px;
  flex-shrink: 0;
  border-radius: 13px;
  display: grid; place-items: center;
  font-size: 20px;
  color: #fff;
  border: 1px solid rgba(255,255,255,.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}
.alc-panel--compra .alc-panel__icon { background: linear-gradient(135deg, rgba(61,92,224,.62), rgba(27,42,107,.5)); }
.alc-panel--prov   .alc-panel__icon { background: linear-gradient(135deg, rgba(34,197,94,.55), rgba(16,122,64,.45)); }

.alc-panel__head h3 {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 800;
  color: #fff;
  letter-spacing: -.015em;
}
.alc-panel__tag {
  width: 100%;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--t-faint);
}

.alc-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 26px;
}
/* La columna de proveedoras tiene 5 cifras: la última ocupa el ancho completo */
.alc-metrics--five > .alc-metric:last-child { grid-column: 1 / -1; }

.alc-metric {
  padding: 16px 16px 14px;
  border-radius: var(--r-md);
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  transition: background .4s, transform .4s var(--ease-glass), border-color .4s;
  text-align: center;
}
.alc-metric:hover { background: rgba(255,255,255,.1); transform: translateY(-3px); }
.alc-metric i { display: block; font-size: 15px; margin-bottom: 8px; }
.alc-panel--compra .alc-metric i { color: #93b4ff; }
.alc-panel--prov   .alc-metric i { color: #86efac; }

.alc-metric__num {
  display: block;
  font-size: 2rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.03em;
  color: #fff;
  font-variant-numeric: tabular-nums;
}
.alc-metric__label {
  display: block;
  margin-top: 7px;
  font-size: .78rem;
  line-height: 1.45;
  color: var(--t-low);
}

.alc-detail {
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,.09);
}
.alc-detail__title {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--t-faint);
  margin-bottom: 13px;
}
.alc-chips { display: flex; flex-wrap: wrap; gap: 9px; }
.alc-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px;
  border-radius: 50px;
  font-size: .8rem;
  color: var(--t-mid);
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.11);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  transition: background .35s, color .35s, transform .35s var(--ease-glass);
}
.alc-chip i { font-size: 13px; }
.alc-panel--compra .alc-chip i { color: #93b4ff; }
.alc-panel--prov   .alc-chip i { color: #86efac; }
.alc-chip:hover { background: rgba(255,255,255,.13); color: #fff; transform: translateY(-2px); }

@media (max-width: 991px) {
  .alcance-grid { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  body.index-page #alcance { padding: 60px 0; }
  .alc-panel { padding: 24px 18px; }
  .alcance-orb { filter: blur(52px); }
}
@media (max-width: 420px) {
  .alc-metrics { grid-template-columns: 1fr; }
  .alc-metrics--five > .alc-metric:last-child { grid-column: auto; }
}

/* =============================================================
   35. ECOSISTEMA — gráficas interactivas
   ============================================================= */

body.index-page #ecosistema { position: relative; overflow: hidden; padding: 100px 0; }

.eco-fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.eco-orb {
  position: absolute; border-radius: 50%; filter: blur(74px);
  will-change: transform; transform: translateZ(0);
  animation: g-orb-float 31s ease-in-out infinite;
}
.eco-orb--1 { width: 380px; height: 380px; top: -12%; right: -6%; background: rgba(139,92,246,.26); }
.eco-orb--2 { width: 320px; height: 320px; bottom: -14%; left: -5%; background: rgba(34,211,238,.18); animation-duration: 36s; animation-delay: -13s; }

/* --- Resumen superior --- */
.eco-summary {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 30px;
  align-items: center;
  padding: 28px 32px;
  margin-bottom: 24px;
  border-radius: var(--r-xl);
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: var(--glass-edge), var(--glass-lift);
}
.eco-summary__main { display: flex; align-items: center; gap: 16px; }
.eco-summary__num {
  font-size: clamp(2.6rem, 5vw, 3.8rem);
  font-weight: 900; line-height: 1; letter-spacing: -.04em;
  font-variant-numeric: tabular-nums;
  background: linear-gradient(135deg, #ff4fa0, #8b5cf6, #22d3ee);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.eco-summary__label { font-size: .92rem; font-weight: 700; color: #fff; line-height: 1.4; }
.eco-summary__label small { font-weight: 500; font-size: .78rem; color: var(--t-faint); }

.eco-origen__title {
  display: block; font-size: 10px; font-weight: 700; letter-spacing: 1.8px;
  text-transform: uppercase; color: var(--t-faint); margin-bottom: 10px;
}
.eco-origen__bar {
  display: flex; height: 42px; border-radius: 12px; overflow: hidden;
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.24);
}
.eco-origen__bar span {
  display: flex; align-items: center; justify-content: center; gap: 7px;
  font-size: .8rem; color: #fff; white-space: nowrap; overflow: hidden;
  transform-origin: left center;
  animation: eco-grow-x .9s var(--ease-glass) both;
}
.eco-origen__bar b { font-weight: 900; font-size: .95rem; }
.eco-origen__mx  { background: linear-gradient(135deg, rgba(34,197,94,.55), rgba(16,122,64,.45)); }
.eco-origen__int { background: linear-gradient(135deg, rgba(61,92,224,.6), rgba(139,92,246,.5)); animation-delay: .12s; }
@keyframes eco-grow-x { from { transform: scaleX(0); opacity: 0; } to { transform: scaleX(1); opacity: 1; } }
.eco-origen__note { margin: 9px 0 0; font-size: .76rem; color: var(--t-faint); }

/* --- Tarjetas --- */
.eco-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-bottom: 24px; }

.eco-card {
  padding: 28px 30px;
  border-radius: var(--r-xl);
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: var(--glass-edge), var(--glass-lift);
}
.eco-card__head { margin-bottom: 22px; }
.eco-card__head h3 {
  font-size: 1.02rem; font-weight: 800; color: #fff;
  letter-spacing: -.015em; margin: 0 0 6px;
}
.eco-hint {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: .74rem; color: var(--g-magenta-2);
}
.eco-hint i { font-size: 12px; }

/* --- Dona --- */
.eco-donut-wrap { display: grid; grid-template-columns: 200px 1fr; gap: 24px; align-items: center; }
.eco-donut { width: 200px; height: 200px; overflow: visible; }
.eco-arc {
  fill: none;
  stroke-width: 22;
  stroke-linecap: butt;
  cursor: pointer;
  transform-origin: 100px 100px;
  transition: stroke-width .35s var(--ease-glass), opacity .35s, filter .35s;
}
/* Los arcos se dibujan al entrar la sección en pantalla */
#ecosistema.eco-visible .eco-arc { animation: eco-arc-in .95s var(--ease-glass) both; }
@keyframes eco-arc-in {
  from { stroke-dasharray: 0 999; }
  to   { stroke-dasharray: var(--largo) var(--resto); }
}
.eco-arc:hover, .eco-arc.is-hover, .eco-arc:focus-visible {
  stroke-width: 28;
  filter: drop-shadow(0 0 12px currentColor);
  outline: none;
}
.eco-donut__c1 { fill: #fff; font-size: 30px; font-weight: 900; letter-spacing: -.03em; }
.eco-donut__c2 { fill: rgba(255,255,255,.45); font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }

.eco-legend { display: flex; flex-direction: column; gap: 7px; }
.eco-legend__item {
  display: grid;
  grid-template-columns: 10px 1fr auto auto 16px;
  align-items: center; gap: 11px;
  width: 100%;
  padding: 11px 13px;
  border-radius: var(--r-sm);
  background: rgba(255,255,255,.045);
  border: 1px solid rgba(255,255,255,.09);
  color: var(--t-mid);
  text-align: left;
  cursor: pointer;
  transition: background .35s, border-color .35s, transform .35s var(--ease-glass);
}
.eco-legend__item:hover, .eco-legend__item.is-hover {
  background: rgba(255,255,255,.11);
  border-color: rgba(255,255,255,.2);
  transform: translateX(4px);
}
.eco-legend__dot { width: 10px; height: 10px; border-radius: 50%; }
.eco-legend__name { font-size: .85rem; font-weight: 700; color: #fff; }
.eco-legend__num { font-size: .95rem; font-weight: 900; color: #fff; font-variant-numeric: tabular-nums; }
.eco-legend__pct { font-size: .76rem; color: var(--t-faint); min-width: 42px; text-align: right; }
.eco-legend__go { font-size: 15px; color: var(--t-faint); }

/* --- Barras de actividad --- */
.eco-bars { display: flex; flex-direction: column; gap: 9px; }
.eco-bar {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(70px, 1fr) 40px 34px;
  align-items: center; gap: 11px;
}
.eco-bar__name { font-size: .8rem; color: var(--t-mid); line-height: 1.3; }
.eco-bar__track {
  height: 8px; border-radius: 5px;
  background: rgba(255,255,255,.07);
  overflow: hidden;
}
.eco-bar__fill {
  display: block; height: 100%; width: var(--w);
  border-radius: 5px;
  background: linear-gradient(90deg, #d6006e, #8b5cf6);
  transform-origin: left center;
  transform: scaleX(0);
}
#ecosistema.eco-visible .eco-bar__fill {
  animation: eco-grow-x .8s var(--ease-glass) both;
  animation-delay: calc(var(--i) * .055s);
}
.eco-bar__pct { font-size: .82rem; font-weight: 800; color: #fff; text-align: right; font-variant-numeric: tabular-nums; }
.eco-bar__n { font-size: .76rem; color: var(--t-faint); text-align: right; font-variant-numeric: tabular-nums; }

/* --- Países --- */
.eco-paises { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.eco-pais {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center; gap: 13px;
  padding: 15px 17px;
  border-radius: var(--r-md);
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  color: var(--t-mid);
  text-align: left; cursor: pointer;
  transition: background .35s, border-color .35s, transform .4s var(--ease-glass);
}
.eco-pais:hover {
  background: rgba(255,255,255,.11);
  border-color: color-mix(in srgb, var(--c) 55%, transparent);
  transform: translateY(-4px);
}
.eco-pais__flag { font-size: 26px; line-height: 1; }
.eco-pais__body { display: flex; flex-direction: column; min-width: 0; }
.eco-pais__name { font-size: .92rem; font-weight: 800; color: #fff; }
.eco-pais__meta { font-size: .76rem; color: var(--t-faint); }
.eco-pais__go { font-size: 16px; color: var(--t-faint); transition: transform .35s var(--ease-glass); }
.eco-pais:hover .eco-pais__go { transform: translateX(3px); color: var(--g-magenta-2); }

/* --- Panel lateral con el listado --- */
.eco-panel { position: fixed; inset: 0; z-index: 10000; }
.eco-panel[hidden] { display: none; }
.eco-panel__backdrop {
  position: absolute; inset: 0;
  background: rgba(3,5,18,.72);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  opacity: 0; transition: opacity .32s var(--ease-glass);
}
.eco-panel.is-open .eco-panel__backdrop { opacity: 1; }

.eco-panel__sheet {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(560px, 100%);
  display: flex; flex-direction: column;
  background: rgba(12,18,50,.9);
  -webkit-backdrop-filter: var(--glass-blur-lg); backdrop-filter: var(--glass-blur-lg);
  border-left: 1px solid rgba(255,255,255,.15);
  box-shadow: -30px 0 80px rgba(0,0,0,.6), inset 1px 0 0 rgba(255,255,255,.14);
  transform: translateX(100%);
  transition: transform .4s var(--ease-glass);
}
.eco-panel.is-open .eco-panel__sheet { transform: translateX(0); }

.eco-panel__head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
  padding: 26px 26px 18px;
  border-bottom: 1px solid rgba(255,255,255,.1);
}
.eco-panel__kicker {
  display: block; font-size: 10px; font-weight: 700; letter-spacing: 1.8px;
  text-transform: uppercase; color: var(--g-magenta-2); margin-bottom: 5px;
}
.eco-panel__head h4 { margin: 0; font-size: 1.4rem; font-weight: 900; color: #fff; letter-spacing: -.02em; }
.eco-panel__count { display: block; margin-top: 5px; font-size: .82rem; color: var(--t-low); }
.eco-panel__close {
  flex-shrink: 0;
  width: 38px; height: 38px; border-radius: 50%;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.16);
  color: #fff; font-size: 24px; line-height: 1; cursor: pointer;
  transition: background .3s, transform .3s;
}
.eco-panel__close:hover { background: rgba(214,0,110,.6); transform: rotate(90deg); }

.eco-panel__filter { position: relative; padding: 16px 26px; }
.eco-panel__filter i {
  position: absolute; left: 40px; top: 50%; transform: translateY(-50%);
  color: var(--t-faint); font-size: 14px; pointer-events: none;
}
.eco-panel__filter input {
  width: 100%;
  padding: 11px 14px 11px 38px;
  border-radius: var(--r-sm);
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  color: #fff; font-size: .88rem;
  transition: border-color .3s, background .3s;
}
.eco-panel__filter input::placeholder { color: var(--t-faint); }
.eco-panel__filter input:focus {
  outline: none;
  background: rgba(255,255,255,.1);
  border-color: rgba(214,0,110,.6);
  box-shadow: 0 0 0 3px rgba(214,0,110,.15);
}

.eco-panel__body { flex: 1; overflow-y: auto; padding: 4px 26px 30px; }
.eco-panel__body::-webkit-scrollbar { width: 8px; }
.eco-panel__body::-webkit-scrollbar-thumb { background: rgba(255,255,255,.16); border-radius: 4px; }
.eco-panel__vacio { color: var(--t-faint); font-size: .88rem; text-align: center; padding: 40px 0; }

.eco-group + .eco-group { margin-top: 22px; }
.eco-group__title {
  display: flex; align-items: center; gap: 9px;
  font-size: 10.5px; font-weight: 700; letter-spacing: 1.6px;
  text-transform: uppercase; color: var(--t-faint);
  margin: 0 0 10px;
}
.eco-group__title span {
  background: rgba(255,255,255,.1);
  border-radius: 20px; padding: 2px 9px;
  font-size: 10px; color: #fff;
}
.eco-list { list-style: none; padding: 0; margin: 0; color: var(--t-mid); }
.eco-list li {
  color: var(--t-mid);
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 11px 13px;
  border-radius: var(--r-sm);
  border: 1px solid transparent;
  animation: eco-item-in .34s var(--ease-glass) both;
  animation-delay: calc(var(--i) * .022s);
  transition: background .3s, border-color .3s;
}
.eco-list li:hover { background: rgba(255,255,255,.07); border-color: rgba(255,255,255,.11); }
@keyframes eco-item-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }
.eco-item__n { font-size: .87rem; color: #fff; line-height: 1.4; }
.eco-item__tags { display: flex; gap: 6px; flex-shrink: 0; }
.eco-tag {
  font-size: 9.5px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase;
  padding: 3px 9px; border-radius: 20px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.eco-tag--oem { background: rgba(61,92,224,.2);  color: #93b4ff; border-color: rgba(61,92,224,.4); }
.eco-tag--t1  { background: rgba(34,211,238,.16); color: #67e8f9; border-color: rgba(34,211,238,.36); }
.eco-tag--t2  { background: rgba(139,92,246,.18); color: #c4b5fd; border-color: rgba(139,92,246,.4); }
.eco-tag--t3  { background: rgba(255,79,160,.16); color: #ff9fd6; border-color: rgba(255,79,160,.36); }
.eco-tag--pais { background: rgba(255,255,255,.07); color: var(--t-low); border-color: rgba(255,255,255,.12); }

@media (max-width: 1199px) {
  .eco-grid { grid-template-columns: 1fr; }
  .eco-paises { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  body.index-page #ecosistema { padding: 60px 0; }
  .eco-summary { grid-template-columns: 1fr; gap: 20px; padding: 22px 18px; }
  .eco-card { padding: 22px 18px; }
  .eco-donut-wrap { grid-template-columns: 1fr; justify-items: center; }
  .eco-legend { width: 100%; }
  .eco-paises { grid-template-columns: 1fr; }
  .eco-orb { filter: blur(52px); }
  .eco-bar { grid-template-columns: minmax(0, 1.5fr) 1fr 36px 30px; gap: 8px; }
  .eco-bar__name { font-size: .74rem; }
  .eco-panel__sheet { width: 100%; }
  .eco-panel__head { padding: 20px 18px 14px; }
  .eco-panel__filter { padding: 14px 18px; }
  .eco-panel__filter i { left: 32px; }
  .eco-panel__body { padding: 4px 18px 24px; }
  .eco-list li { flex-direction: column; align-items: flex-start; gap: 7px; }
}

/* =============================================================
   36. CONVOCATORIAS
   ============================================================= */

body.index-page #convocatorias { position: relative; overflow: hidden; padding: 100px 0; }

.convoc-fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.convoc-orb {
  position: absolute; border-radius: 50%; filter: blur(72px);
  will-change: transform; transform: translateZ(0);
  animation: g-orb-float 30s ease-in-out infinite;
}
.convoc-orb--1 { width: 360px; height: 360px; top: -12%; left: -6%; background: rgba(214,0,110,.26); }
.convoc-orb--2 { width: 310px; height: 310px; bottom: -14%; right: -5%; background: rgba(139,92,246,.24); animation-duration: 35s; animation-delay: -12s; }

.convoc-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: start;
}

.convoc-card {
  display: flex;
  flex-direction: column;
  position: relative;
  padding: 34px 32px;
  border-radius: var(--r-xl);
  background: var(--glass-fill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid rgba(255,255,255,.13);
  box-shadow: var(--glass-edge), var(--glass-lift);
  overflow: hidden;
  transition: transform .5s var(--ease-glass), box-shadow .5s var(--ease-glass), border-color .4s;
}
.convoc-card:hover {
  transform: translateY(-7px);
  border-color: rgba(255,255,255,.25);
  box-shadow: var(--glass-edge), var(--glass-lift-hi);
}
.convoc-card::before {
  content: '';
  position: absolute;
  top: 0; left: 10%; right: 10%;
  height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--g-magenta), var(--g-violet), transparent);
  box-shadow: 0 0 18px rgba(214,0,110,.6);
}

.convoc-card__num {
  display: inline-block;
  align-self: flex-start;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--g-magenta-2);
  background: rgba(214,0,110,.14);
  border: 1px solid rgba(214,0,110,.36);
  border-radius: 50px;
  padding: 5px 14px;
  margin-bottom: 18px;
}

.convoc-card__brand { margin-bottom: 16px; }
.convoc-logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border-radius: var(--r-sm);
  padding: 8px 14px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 1.2px;
  color: var(--g-blue);
  box-shadow: 0 4px 14px rgba(0,0,0,.28);
}
.convoc-logo img { max-height: 24px; max-width: 62px; object-fit: contain; mix-blend-mode: multiply; }

.convoc-card h3 {
  font-size: 1.28rem;
  font-weight: 900;
  color: #fff;
  letter-spacing: -.02em;
  line-height: 1.25;
  margin-bottom: 14px;
}
.convoc-card__quote {
  font-style: italic;
  font-size: .88rem;
  line-height: 1.65;
  color: var(--t-low);
  padding-left: 15px;
  border-left: 2px solid rgba(214,0,110,.6);
  margin-bottom: 16px;
}
.convoc-card__body { font-size: .92rem; line-height: 1.8; color: var(--t-mid); margin-bottom: 22px; }
.convoc-card__body strong { color: #fff; }

.convoc-card__label {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--t-faint);
  margin-bottom: 12px;
}
.convoc-temas { list-style: none; padding: 0; margin: 0 0 24px; display: flex; flex-direction: column; gap: 10px; }
.convoc-temas li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: .88rem;
  line-height: 1.55;
  color: var(--t-mid);
}
.convoc-temas i { color: var(--g-magenta-2); font-size: 14px; flex-shrink: 0; margin-top: 3px; }

.convoc-fechas { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 24px; }
.convoc-fecha {
  flex: 1 1 180px;
  padding: 13px 16px;
  border-radius: var(--r-sm);
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.11);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
}
.convoc-fecha__label {
  display: flex; align-items: center; gap: 6px;
  font-size: 9.5px; font-weight: 700; letter-spacing: 1.4px;
  text-transform: uppercase; color: var(--t-faint); margin-bottom: 5px;
}
.convoc-fecha__label i { color: var(--g-magenta-2); font-size: 11px; }
.convoc-fecha__val { color: #fff; font-size: .88rem; font-weight: 700; }

.convoc-empresas {
  display: flex; align-items: baseline; gap: 10px;
  margin-bottom: 24px; padding: 16px 18px;
  border-radius: var(--r-sm);
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.11);
}
.convoc-empresas__num {
  font-size: 2.2rem; font-weight: 900; line-height: 1; letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
  background: linear-gradient(135deg, #ff4fa0, #8b5cf6);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.convoc-empresas__label { font-size: .82rem; color: var(--t-low); }

.convoc-cta { margin-top: auto; align-self: flex-start; }

@media (max-width: 991px) { .convoc-grid { grid-template-columns: 1fr; } }
@media (max-width: 767px) {
  body.index-page #convocatorias { padding: 60px 0; }
  .convoc-card { padding: 26px 20px; }
  .convoc-orb { filter: blur(52px); }
  .convoc-cta { width: 100%; justify-content: center; }
}

/* =============================================================
   37. ESTADO DE VIGENCIA DE LAS CONVOCATORIAS
   El color lo decide la fecha, no el texto escrito a mano.
   ============================================================= */

.convoc-estado {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 14px;
  margin-left: 8px;
  border-radius: 50px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  white-space: nowrap;
}
.convoc-estado--sm { margin: 7px 0 0; font-size: 9px; padding: 4px 11px; }
.convoc-estado i { font-size: 10px; }

.conv-vigente { background: rgba(34,197,94,.15);  border: 1px solid rgba(34,197,94,.42);  color: #86efac; }
.conv-pronto  { background: rgba(245,158,11,.16); border: 1px solid rgba(245,158,11,.45); color: #fcd34d; }
.conv-ultimo  { background: rgba(239,68,68,.16);  border: 1px solid rgba(239,68,68,.45);  color: #fca5a5; }
.conv-cerrada { background: rgba(148,163,184,.14);border: 1px solid rgba(148,163,184,.35);color: #cbd5e1; }

/* El punto de la etiqueta del hero late solo mientras siga abierta */
.hic-tag.conv-vigente i, .hic-tag.conv-pronto i { animation: g-dot-pulse 2.2s ease-in-out infinite; }

/* Un CTA de convocatoria cerrada no debe seguir invitando a registrarse */
.is-cerrada {
  filter: grayscale(1);
  opacity: .55;
  animation: none !important;
}
.is-cerrada:hover { transform: none !important; box-shadow: none !important; }

/* Dentro de los modales el fondo es oscuro igual, así que sirve tal cual */
#modalOportunidad .convoc-estado { margin-left: 0; }

/* =============================================================
   38. COLOR DE ACCIÓN — AZUL
   Los botones pasan de magenta a un azul vivo que despega del
   navy del fondo (#05081c–#0e1642). El magenta se conserva solo
   como acento tipográfico (títulos de sección, iconos, etiquetas),
   así que "azul = acción" y "magenta = énfasis" no se confunden.

   Contraste del texto blanco sobre el degradado:
     extremo oscuro #1554d8 → 6.4:1  (antes #D6006E → 5.3:1)
     extremo claro  #2f9bee → 3.0:1  (antes #ff4fa0 → 3.1:1)
   ============================================================= */

:root {
  --g-action:      #1554d8;
  --g-action-2:    #2f9bee;
  --g-action-glow: rgba(47,155,238,.45);
  --g-action-glow-hi: rgba(47,155,238,.62);
}

/* --- Superficie principal de acción --- */
body.index-page .g-btn--primary,
body.index-page .btn-getstarted,
body.index-page .navmenu .nav-btn-contacto,
body.index-page .about-btn,
body.index-page .contact .php-email-form button[type=submit],
body.index-page .vinc-cta-button,
body.index-page .btn-pdp-primary,
body.index-page .hero .btn-get-started,
body.index-page .hic-btn,
body.index-page .hic-btn.purple,
body.index-page .hic-btn.blue,
.registro-page .g-btn--primary,
.registro-page .reg-submit {
  background: linear-gradient(135deg, var(--g-action), var(--g-action-2)) !important;
  border-color: rgba(255,255,255,.26) !important;
  box-shadow: 0 10px 32px var(--g-action-glow), inset 0 1px 0 rgba(255,255,255,.45) !important;
  color: #fff !important;
  /* El extremo claro del degradado baja el contraste; la sombra lo compensa */
  text-shadow: 0 1px 2px rgba(0,0,0,.28);
}

body.index-page .g-btn--primary:hover,
body.index-page .btn-getstarted:hover,
body.index-page .navmenu .nav-btn-contacto:hover,
body.index-page .about-btn:hover,
body.index-page .contact .php-email-form button[type=submit]:hover,
body.index-page .vinc-cta-button:hover,
body.index-page .btn-pdp-primary:hover,
body.index-page .hero .btn-get-started:hover,
body.index-page .hic-btn:hover,
body.index-page .hic-btn.purple:hover,
body.index-page .hic-btn.blue:hover,
.registro-page .g-btn--primary:hover,
.registro-page .reg-submit:not(:disabled):hover {
  background: linear-gradient(135deg, #1b62ea, #46a9f5) !important;
  box-shadow: 0 18px 46px var(--g-action-glow-hi), inset 0 1px 0 rgba(255,255,255,.55) !important;
}

/* --- Estados de relleno al pasar el cursor --- */
body.index-page .participa-card .btn-participa:hover,
body.index-page .participa-card:hover .participa-icon {
  background: linear-gradient(135deg, var(--g-action), var(--g-action-2)) !important;
  border-color: transparent !important;
  color: #fff !important;
}
body.index-page .participa-card:hover .participa-icon {
  box-shadow: 0 10px 28px var(--g-action-glow), inset 0 1px 0 rgba(255,255,255,.45) !important;
}

/* --- Botones secundarios y de cierre --- */
body.index-page .scroll-top:hover,
body.index-page .mn-btn-close:hover,
body.index-page .eco-panel__close:hover,
#modalJICA .modal-footer-jica button,
#modalOportunidad .op-footer button {
  background: linear-gradient(135deg, var(--g-action), var(--g-action-2)) !important;
  color: #fff !important;
  border-color: transparent !important;
}
#modalJICA .modal-footer-jica button:hover,
#modalOportunidad .op-footer button:hover {
  background: linear-gradient(135deg, #1b62ea, #46a9f5) !important;
}

/* El botón del modal de bienvenida trae el degradado en atributo style */
#btnAceptarModal {
  background: linear-gradient(135deg, var(--g-action), var(--g-action-2)) !important;
  box-shadow: 0 8px 26px var(--g-action-glow);
}

/* --- Detalles que acompañan al botón --- */
body.index-page .hero-scroll .mouse::after { background: var(--g-action-2); }
body.index-page .contact .form-control:focus,
.registro-page .reg-form .form-control:focus,
.eco-panel__filter input:focus {
  border-color: rgba(47,155,238,.65) !important;
  box-shadow: 0 0 0 4px rgba(47,155,238,.16), inset 0 1px 0 rgba(255,255,255,.2) !important;
}
body.index-page a:focus-visible,
body.index-page button:focus-visible,
.registro-page .reg-opt:focus-visible {
  outline-color: var(--g-action-2);
}
.registro-page .reg-consent input { accent-color: var(--g-action); }

/* =============================================================
   39. ACCESIBILIDAD Y RENDIMIENTO
   ============================================================= */

/* Fallback: si el navegador no soporta backdrop-filter, opacamos el relleno */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .glass,
  .hero-info-card,
  .pdp-col,
  .jica-glass__shell,
  .g-metrics__grid,
  body.index-page .convocatorias-card,
  body.index-page .participa-card,
  body.index-page .avance-item,
  body.index-page .contact .php-email-form,
  body.index-page .cta-final .container {
    background: rgba(16,22,58,.92) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  html { scroll-behavior: auto; }
  .hero-video__media video { animation: none; }
}

/* En móvil bajamos el blur: es lo más caro de pintar */
@media (max-width: 767px) {
  :root {
    --glass-blur: blur(14px) saturate(160%);
    --glass-blur-lg: blur(18px) saturate(170%);
  }
  .g-orbs span { filter: blur(38px); opacity: .38; }
  .g-grid { background-size: 44px 44px; }
  .hero-video { min-height: 88svh; padding: 60px 0 50px; }
  .noticias-section { padding: 58px 0 50px !important; }
  .pdp-join, .jica-glass { padding: 58px 0; }
  body.index-page .cta-final { padding: 58px 0 !important; }
  body.index-page .cta-final .container { padding: 32px 20px !important; }
}

/* Foco visible sobre vidrio */
body.index-page a:focus-visible,
body.index-page button:focus-visible,
body.index-page .form-control:focus-visible {
  outline: 2px solid var(--g-magenta-2);
  outline-offset: 3px;
  border-radius: 6px;
}
