/* Hooks productivos s3 sobre el contrato visual exacto campus-web-170726. */
.nl-form-msg{ flex:1 0 100%; margin:.25rem 0 0; }
.lv-empty-dot--error{ background:var(--red); box-shadow:0 0 0 7px rgba(227,36,43,.15); }
.lv-refresh-warning{
  margin:0 0 1rem; padding:.75rem 1rem; border:1px solid rgba(240,180,41,.45);
  border-radius:10px; color:#ffe6a3; background:rgba(240,180,41,.1); font-size:.86rem;
}
.lv-no-events{ margin:1rem 0 0; color:rgba(255,255,255,.72); text-align:center; }
.btn:disabled{ cursor:wait; opacity:.7; }

/* El honeypot conserva su función antispam sin generar un lienzo horizontal
   enorme en idiomas RTL. */
input.hp{
  left:0;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}

/* Las tarjetas del recorrido pueden contener palabras largas traducidas. */
.journey > .step{ min-width:0; }

/* Integración fotográfica: el centro permanece nítido y sólo el perímetro se
   funde con el fondo mediante una copia decorativa desenfocada. */
.photo-blend{
  --photo-bleed:clamp(10px,1.2vw,18px);
  --photo-blur:clamp(14px,1.8vw,22px);
  --photo-opacity:.16;
  position:relative;
  isolation:isolate;
  overflow:visible;
  box-shadow:none;
}
.photo-blend::before{
  content:"";
  position:absolute;
  top:calc(0px - var(--photo-bleed));
  inset-inline:calc(0px - var(--photo-bleed));
  aspect-ratio:var(--photo-ratio);
  z-index:-1;
  border-radius:calc(var(--radius) + 10px);
  background:var(--photo) var(--photo-position,center) / cover no-repeat;
  filter:blur(var(--photo-blur)) saturate(.9);
  opacity:var(--photo-opacity);
  pointer-events:none;
}
.photo-blend > img:first-of-type{
  position:relative;
  border-radius:var(--radius);
}
.photo-blend--card{
  --photo-opacity:.11;
  --photo-blur:14px;
  background:transparent;
}
.hero-card.photo-blend > img:first-of-type,
.sector.photo-blend > img:first-of-type{
  border-radius:var(--radius) var(--radius) 0 0;
}
.hero-card.photo-blend .body,
.sector.photo-blend figcaption{
  position:relative;
  z-index:1;
  background:#fff;
  border-radius:0 0 var(--radius) var(--radius);
}
.sector.photo-blend{
  display:flex;
  flex-direction:column;
}
.sector.photo-blend figcaption{ flex:1; }
.place-panel.photo-blend,
.place-gallery .photo-blend{ background:rgba(7,20,45,.92); }
.place-panel.photo-blend > img:first-of-type,
.place-gallery .photo-blend > img:first-of-type{
  border-radius:var(--radius) var(--radius) 0 0;
}
.place-panel.photo-blend .place-stats,
.place-gallery .photo-blend figcaption{
  position:relative;
  z-index:1;
}
.place-gallery .photo-blend{
  display:flex;
  flex-direction:column;
}
.place-gallery .photo-blend figcaption{
  flex:1;
  background:var(--azul-900,#0b1b3d);
  border-radius:0 0 var(--radius) var(--radius);
}
.photo-blend .float,
.photo-blend .tag{ z-index:2; }

@supports ((-webkit-mask-image:linear-gradient(#000,transparent)) or (mask-image:linear-gradient(#000,transparent))){
  .photo-blend--standalone > img:first-of-type{
    -webkit-mask-image:
      linear-gradient(to right,transparent,#000 5%,#000 95%,transparent),
      linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent);
    -webkit-mask-composite:source-in;
    mask-image:
      linear-gradient(to right,transparent,#000 5%,#000 95%,transparent),
      linear-gradient(to bottom,transparent,#000 5%,#000 95%,transparent);
    mask-composite:intersect;
  }
}

/* Seis sectores: composición equilibrada 3×2, 2×3 y una columna. */
.sector-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.place-gallery--six{ grid-template-columns:1fr; }

/* Las categorías se leen en dos familias además de distinguirse por color. */
.cat-groups{ display:grid; gap:clamp(2.4rem,5vw,4rem); }
.cat-group-title{
  display:flex;
  align-items:center;
  gap:.8rem;
  margin:0 0 1.15rem;
  font-family:var(--mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--navy);
}
.cat-group-title::before{
  content:"";
  width:28px;
  height:4px;
  border-radius:999px;
  background:var(--navy);
}
.cat-group-title--infantil::before{ background:var(--red); }
.cat-grid--infantil{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.cat-grid--juvenil{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.cat--infantil{
  background:linear-gradient(155deg,#ef3b43 0%,var(--red) 48%,#a9141d 100%);
}
.cat--infantil::before{
  background:radial-gradient(320px 240px at 25% 0%,rgba(27,42,85,.52),transparent 70%);
}
.cat--infantil::after{ background:var(--gold); }
.cat--infantil .k{ color:#fff4d0; }

.leadership-orgs{
  font-family:var(--mono);
  font-size:clamp(.78rem,1.2vw,.92rem) !important;
  font-weight:600;
  letter-spacing:.08em;
  color:var(--navy) !important;
  text-transform:uppercase;
}
.lead-member .role{ max-width:70ch; }

@media(max-width:980px){
  .cat-grid--infantil,
  .cat-grid--juvenil{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(min-width:680px){
  .place-gallery--six{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(min-width:1040px){
  .place-gallery--six{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:720px){
  .radar{ right:0; }
  .journey{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .photo-blend{
    --photo-bleed:8px;
    --photo-blur:12px;
    --photo-opacity:.12;
  }
  .sector-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:380px){
  .journey{ grid-template-columns:1fr; }
}
@media(max-width:560px){
  .cat-grid--infantil,
  .cat-grid--juvenil{ grid-template-columns:1fr; }
}
@media(max-width:480px){
  .sector-grid{ grid-template-columns:1fr; }
}
@media(forced-colors:active),(prefers-contrast:more){
  .photo-blend::before{ display:none; }
  .photo-blend--standalone > img:first-of-type{
    -webkit-mask-image:none;
    mask-image:none;
  }
}
@media print{
  .photo-blend::before{ display:none; }
}
