/* ============================================================
   iMP · Directo Intensivo — base comun a todas las paginas
   Lo que comparten la landing y la pagina de gracias: reinicio,
   contenedor, barra de scroll, filo que sigue al raton y pie.
   Cada pagina anade luego su propia hoja.
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  overflow-x: clip;
  scroll-behavior: smooth;
  /* barra de scroll del navegador en la paleta de la pagina */
  scrollbar-color: var(--c-accent) #141414;
  scrollbar-width: thin;
}
::-webkit-scrollbar { width: 11px; height: 11px; }
::-webkit-scrollbar-track { background: #141414; }
::-webkit-scrollbar-thumb {
  background: var(--c-accent);
  border-radius: 999px;
  border: 3px solid #141414;
}
::-webkit-scrollbar-thumb:hover { background: #FF3A3A; }

/* Salto al contenido, para quien navega con teclado */
.saltar {
  position: absolute;
  left: 50%;
  top: 8px;
  z-index: 100;
  transform: translate(-50%, -200%);
  padding: 12px 20px;
  border-radius: var(--r-full);
  background: #FFFFFF;
  color: #101010;
  font-family: var(--ff-display);
  font-weight: var(--fw-bold);
  font-size: .95rem;
  text-decoration: none;
  transition: transform var(--t-fast);
}
.saltar:focus-visible { transform: translate(-50%, 0); }

body {
  margin: 0;
  background: #080808;
  color: var(--c-text-soft);
  font-family: var(--ff-body);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
}

h1, p, figure, form { margin: 0; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }

:where(a, button, input, [tabindex]):focus-visible {
  outline: 3px solid var(--c-accent);
  outline-offset: 3px;
}

:root {
  --w-contenedor: 1300px;
  --pad-lateral: clamp(20px, 4vw, 44px);
  /* Ritmo vertical unico: cada seccion pone la mitad por arriba y la mitad
     por abajo, asi el hueco entre dos secciones siempre suma lo mismo */
  --sec-py: clamp(7rem, 14vw, 12rem);
  --sec-media: calc(var(--sec-py) / 2);
}

.contenedor {
  width: 100%;
  max-width: var(--w-contenedor);
  margin-inline: auto;
  padding-inline: var(--pad-lateral);
}

.solo-lectores {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%);
  white-space: nowrap;
}

/* El logotipo, del mismo tamano en las dos paginas */
.marca { width: clamp(78px, 6.4vw, 96px); }

/* ============================================================
   Dia y hora del directo
   Sale en la landing y en la pagina de gracias, y las dos tienen que
   decir la misma hora que el JSON-LD de herramientas/construir.mjs.
   ============================================================ */
.cuando {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  font-size: clamp(1rem, .4vw + .92rem, 1.2rem);
  line-height: 1.4;
  color: var(--c-text);
}
.cuando__punto {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: var(--c-accent);
  flex: none;
  box-shadow: 0 0 0 4px rgba(237, 30, 121, .22);
}
.cuando__dia { font-weight: var(--fw-semi); }
.cuando strong { color: var(--c-accent); font-weight: var(--fw-bold); }
.cuando__zona { color: var(--c-text-muted); }

/* En pantallas estrechas la linea entera no cabe y partia por la mitad de
   "(Hora Madrid)". Se baja el huso a su propia linea, que asi parece hecho a
   proposito, y el punto se sube a la altura de la primera: centrado entre dos
   lineas se queda flotando. */
@media (max-width: 599px) {
  .cuando { align-items: flex-start; }
  .cuando__punto { margin-top: .5em; }
  .cuando__zona { display: block; }
}

/* ============================================================
   Filo que sigue al raton (mismo mecanismo que el Reto 21 dias)
   El JS solo escribe --ang y --prox; el dibujo es todo CSS.
   --glow-r lo pone cada tarjeta con su propio radio.
   ============================================================ */
.glow {
  position: relative;
  --glow-r: clamp(16px, 1.6vw, 22px);
}
.glow .luz,
.glow .halo {
  position: absolute;
  pointer-events: none;
  border-radius: inherit;
  opacity: calc(var(--prox, 0) / 100);
}
.glow .luz {
  inset: -1px;
  padding: 1px;
  background: conic-gradient(from calc(var(--ang, 45deg) - 90deg),
    transparent 0turn,
    rgba(237, 30, 121, .55) .15turn,
    #FF6A5A .25turn,
    rgba(237, 30, 121, .55) .35turn,
    transparent .5turn,
    transparent 1turn);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}
.glow .halo {
  inset: -36px;
  mix-blend-mode: plus-lighter;
  -webkit-mask-image: conic-gradient(from calc(var(--ang, 45deg) - 90deg),
    transparent .04turn, #000 .15turn, #000 .35turn, transparent .46turn, transparent 1turn);
  mask-image: conic-gradient(from calc(var(--ang, 45deg) - 90deg),
    transparent .04turn, #000 .15turn, #000 .35turn, transparent .46turn, transparent 1turn);
}
.glow .halo::before {
  content: '';
  position: absolute;
  inset: 36px;
  border-radius: var(--glow-r);
  box-shadow:
    0 0 1px 0 rgba(255, 150, 140, .6),
    0 0 6px 0 rgba(237, 30, 121, .42),
    0 0 16px 0 rgba(237, 30, 121, .3),
    0 0 30px 2px rgba(237, 30, 121, .2),
    0 0 55px 2px rgba(237, 30, 121, .12);
}

/* ============================================================
   Pie
   ============================================================ */
.pie {
  border-top: 1px solid rgba(255, 255, 255, .08);
  padding-block: clamp(1.5rem, 2.6vw, 2.25rem);
}
.pie__caja { display: grid; gap: clamp(.75rem, 1.4vw, 1rem); }
.pie__enlaces {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 18px;
}
.pie__enlaces a {
  font-size: .95rem;
  color: var(--c-text-soft);
  text-decoration: none;
  padding-block: 10px;
  border-bottom: 1px solid transparent;
  transition: color var(--t-fast), border-color var(--t-fast);
}
.pie__enlaces a:hover { color: #FFFFFF; border-bottom-color: var(--c-accent); }
.pie__sep { width: 4px; height: 4px; border-radius: 50%; background: var(--c-accent); flex: none; }
.pie__legal {
  font-size: .88rem;
  line-height: 1.6;
  color: var(--c-text-muted);
}

@media (min-width: 980px) {
  .pie__caja {
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: clamp(2rem, 4vw, 3rem);
  }
  .pie__legal { text-align: right; }
}

@media (prefers-reduced-motion: reduce) {
  * { transition-duration: 1ms !important; }
  html { scroll-behavior: auto; }
}
