/* =====================================================================
   A DIOS SEA TODA LA GLORIA — capa 2026
   Reproductores tipo TV 4K, carrusel de anuncios, asistente de WhatsApp
   e invitación a instalar la aplicación. Sólo añade: no cambia la
   identidad visual ni la estructura de la página.
   ===================================================================== */

:root{
  --adg-green:#174f3d;
  --adg-green-deep:#0e372b;
  --adg-gold:#b89552;
  --adg-gold-soft:#d8bf84;
  --adg-ink:#18372d;
  --adg-cream:#fbfaf6;
  --adg-screen:#04060c;
}

/* ------------------------- MENÚ REDUCIDO ------------------------- */
nav#mainNav a{position:relative}
nav#mainNav a:after{
  content:"";position:absolute;left:0;right:0;bottom:-7px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--adg-gold),var(--adg-gold-soft));
  transform:scaleX(0);transform-origin:left;transition:transform .28s ease}
nav#mainNav a:hover:after,nav#mainNav a.current:after{transform:scaleX(1)}

/* Botón de la aplicación: pieza principal de la barra, en oro sobre verde */
.nav-install{
  display:inline-flex;align-items:center;gap:9px;cursor:pointer;border:0;
  padding:11px 17px;border-radius:999px;font-weight:900;font-size:12px;letter-spacing:.4px;
  color:#fffdf7;background:linear-gradient(135deg,var(--adg-green),#2b6b55);
  box-shadow:0 12px 30px rgba(23,79,61,.26);position:relative;
  transition:transform .2s ease,box-shadow .2s ease}
.nav-install:hover{transform:translateY(-2px);box-shadow:0 18px 40px rgba(23,79,61,.32)}
.nav-install:focus-visible{outline:2px solid var(--adg-gold);outline-offset:3px}
.nav-install svg{width:17px;height:17px;fill:none;stroke:var(--adg-gold-soft);stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
/* Punto dorado: avisa a quien todavía no ha instalado la aplicación */
.nav-install.pending:before{
  content:"";position:absolute;top:8px;right:11px;width:8px;height:8px;border-radius:50%;
  background:var(--adg-gold-soft);box-shadow:0 0 0 0 rgba(216,191,132,.75);animation:adgPing 2.4s infinite}
@keyframes adgPing{
  70%{box-shadow:0 0 0 11px rgba(216,191,132,0)}
  100%{box-shadow:0 0 0 0 rgba(216,191,132,0)}}
.nav-install.installed{background:linear-gradient(135deg,#2b6b55,#3d8168)}
.nav-install.installed:before{display:none}

@media(max-width:1080px){.nav-install span{display:none}.nav-install{padding:11px 13px}}

/* ---------------------- REPRODUCTORES TIPO TV 4K ----------------------
   El marco imita un televisor: bisel oscuro, brillo suave y una barra de
   mandos propia debajo de la imagen con bocina, ventana flotante (PIP) y
   pantalla completa. */

.tv-player{background:var(--adg-screen)}
.tv-player video,.tv-player iframe{background:#000}

/* Sello 4K y estado de la señal */
.tv-4k{
  position:absolute;top:14px;right:14px;z-index:8;display:flex;align-items:center;gap:7px;
  padding:6px 12px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:2px;
  color:#fdf6e4;background:rgba(4,6,12,.62);backdrop-filter:blur(12px);
  border:1px solid rgba(216,191,132,.45);pointer-events:none}
.tv-4k b{color:var(--adg-gold-soft);letter-spacing:1.5px}
@media(max-width:700px){.tv-4k{top:9px;right:9px;padding:5px 9px;font-size:9px;letter-spacing:1.4px}}

/* Barra de mandos: siempre debajo, dentro del reproductor */
.adg-bar{
  position:absolute;left:0;right:0;bottom:0;z-index:9;
  display:flex;flex-direction:column;gap:8px;padding:32px 16px 13px;
  background:linear-gradient(transparent,rgba(2,4,10,.55) 34%,rgba(2,4,10,.93));
  opacity:1;transition:opacity .3s ease}
.tv-player.idle .adg-bar{opacity:0;pointer-events:none}
.tv-player.hide-bar .adg-bar{opacity:0}
.tv-player.hide-bar:hover .adg-bar,.tv-player .adg-bar:focus-within{opacity:1;pointer-events:auto}

.adg-seek{
  position:relative;height:5px;border-radius:999px;cursor:pointer;
  background:rgba(255,255,255,.22);flex:none;transition:height .18s ease}
.adg-seek:hover,.adg-seek:focus-visible{height:9px;outline:none}
.adg-seek i{
  position:absolute;left:0;top:0;bottom:0;width:0;border-radius:999px;display:block;
  background:linear-gradient(90deg,var(--adg-gold),var(--adg-gold-soft))}
.adg-seek i:after{
  content:"";position:absolute;right:-6px;top:50%;width:12px;height:12px;border-radius:50%;
  transform:translateY(-50%) scale(0);background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.6);
  transition:transform .18s ease}
.adg-seek:hover i:after,.adg-seek:focus-visible i:after{transform:translateY(-50%) scale(1)}
.adg-buffer{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:999px;background:rgba(255,255,255,.2)}

.adg-controls{display:flex;align-items:center;gap:6px}
/* `display:grid` de los botones gana a `hidden`: se corrige aquí para que un
   mando sin soporte (PIP en algunos navegadores) desaparezca de verdad. */
.adg-bar [hidden]{display:none!important}
.adg-time{
  font-size:11px;font-weight:800;letter-spacing:.6px;color:#e9e5da;
  font-variant-numeric:tabular-nums;padding:0 6px;white-space:nowrap}
.adg-spacer{flex:1}

.adg-btn{
  width:38px;height:38px;flex:none;border:0;border-radius:50%;cursor:pointer;color:#fff;padding:0;
  background:transparent;display:grid;place-items:center;
  transition:background .2s ease,transform .15s ease}
.adg-btn:hover{background:rgba(255,255,255,.16)}
.adg-btn:active{transform:scale(.92)}
.adg-btn:focus-visible{outline:2px solid var(--adg-gold-soft);outline-offset:2px}
.adg-btn svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round}
.adg-btn.play svg{fill:currentColor;stroke-width:1.2}
.adg-btn.needs-sound{color:#171108;background:linear-gradient(135deg,var(--adg-gold-soft),#d59b31)}

/* Bocina con su deslizador de volumen */
.adg-sound{display:flex;align-items:center;border-radius:999px;transition:background .2s ease}
.adg-sound:hover,.adg-sound.open{background:rgba(255,255,255,.1)}
.adg-volume{
  width:0;opacity:0;margin:0;height:4px;appearance:none;-webkit-appearance:none;cursor:pointer;
  border-radius:999px;background:rgba(255,255,255,.3);transition:width .25s ease,opacity .25s ease}
.adg-sound:hover .adg-volume,.adg-sound.open .adg-volume,.adg-volume:focus-visible{width:78px;opacity:1;margin:0 12px 0 2px}
.adg-volume::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:13px;height:13px;border-radius:50%;
  background:var(--adg-gold-soft);border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.5)}
.adg-volume::-moz-range-thumb{width:13px;height:13px;border:2px solid #fff;border-radius:50%;background:var(--adg-gold-soft)}

@media(max-width:700px){
  .adg-bar{padding:26px 10px 9px;gap:6px}
  .adg-btn{width:34px;height:34px}
  .adg-btn svg{width:18px;height:18px}
  .adg-time{font-size:10px;padding:0 3px}
  .adg-sound:hover .adg-volume,.adg-sound.open .adg-volume{width:56px}
}

/* Cartel de reposo y aviso de sonido, alineados con la barra nueva */
.tv-poster .big-play{z-index:3}
.tv-unmute{z-index:10}

/* ------------- MEDIDA DEL REPRODUCTOR EN EL ORDENADOR -------------
   En una pantalla grande el marco resultaba enorme y obligaba a bajar
   para ver el resto de la portada. Aquí se le da una medida más
   contenida y siempre centrada, sin tocar nada de su diseño: mismo
   marco, mismos mandos, mismos colores y la proporción 16:9 de siempre,
   que la sigue marcando `aspect-ratio` sobre el ancho.

   Además nunca puede ser más alto que la ventana: el ancho se limita
   también a lo que quepa de alto, así el reproductor entero se ve de una
   sola mirada en portátiles de pantalla baja. En tabletas y teléfonos no
   se aplica ninguna de estas reglas: allí sigue ocupando todo el ancho. */
@media(min-width:1100px){
  .tv-shell{max-width:880px}
  /* Segunda línea para los navegadores que entienden `min()`; los que no,
     se quedan con la medida fija de arriba y se ven igual de bien. */
  .tv-shell{max-width:min(880px, calc((100vh - 300px) * 16 / 9))}
  .tv-playlist{max-width:880px}
}

/* ------------------- SEGUNDO REPRODUCTOR (PROMOS) -------------------
   Del tamaño del cuadro de la emisora, para promociones y eventos. */
.promo-shell{
  border-radius:30px;padding:9px;
  background:linear-gradient(135deg,rgba(184,149,82,.85),rgba(255,255,255,.35),rgba(23,79,61,.75));
  box-shadow:0 24px 60px rgba(20,55,43,.20)}
.promo-shell .tv-player{border-radius:23px;aspect-ratio:16/9}
.promo-head{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.promo-head .station-icon{width:52px;height:52px;flex:none}
.promo-head strong{display:block;font-size:16px;color:var(--adg-green);line-height:1.25}
.promo-head>div>span{display:block;font-size:11px;font-weight:800;letter-spacing:2px;color:#9c7839;text-transform:uppercase}
.promo-note{margin-top:13px;font-size:12.5px;color:#66756f;text-align:center}
.promo-strip{display:flex;gap:9px;overflow-x:auto;margin-top:13px;padding-bottom:4px;scrollbar-width:thin}
.promo-strip button{
  flex:none;border:1px solid rgba(24,79,61,.15);background:#fff;color:var(--adg-green);
  border-radius:13px;padding:9px 13px;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap;
  transition:border-color .2s ease,transform .15s ease}
.promo-strip button:hover{border-color:rgba(184,149,82,.6);transform:translateY(-2px)}
.promo-strip button.active{background:linear-gradient(135deg,var(--adg-green),#2b6b55);color:#fff;border-color:transparent}

.envivo-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:34px;align-items:start}
@media(max-width:980px){.envivo-grid{grid-template-columns:1fr;gap:28px}}

/* ------------------ CARRUSEL DE ANUNCIOS Y EVENTOS ------------------
   El hueco entre tarjetas vive en una sola variable: la hoja de estilos y el
   guión leen el mismo valor, así el paso del carrusel nunca se descuadra. */
.ev-wrap{position:relative;--ev-gap:18px}
.ev-viewport{
  overflow:hidden;border-radius:26px;
  /* El dedo arrastra en horizontal y la página sigue subiendo y bajando. */
  touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab;
  -webkit-tap-highlight-color:transparent}
.ev-viewport.dragging{cursor:grabbing}
.ev-track{
  display:flex;gap:var(--ev-gap);will-change:transform;
  /* Ritmo tranquilo: ni brusco ni perezoso. */
  transition:transform .62s cubic-bezier(.22,.72,.28,1)}
.ev-track.no-anim{transition:none}
.ev-card{
  flex:0 0 calc((100% - var(--ev-gap))/2);min-width:0;position:relative;border-radius:24px;overflow:hidden;
  background:#fff;border:1px solid rgba(24,79,61,.13);box-shadow:0 14px 38px rgba(26,67,52,.09);
  display:flex;flex-direction:column}
@media(max-width:760px){.ev-card{flex:0 0 100%}}
/* Los flyers se ven COMPLETOS: nunca se recortan. La imagen entra entera
   dentro del marco y el hueco que sobra se rellena con la misma imagen
   difuminada, así la tarjeta se ve llena y no queda ninguna franja vacía.
   La copia difuminada la coloca adg-vivo.js en la variable --ev-bg. */
.ev-figure{position:relative;aspect-ratio:4/5;background:#f1efe8;overflow:hidden;isolation:isolate}
.ev-figure:before{
  content:"";position:absolute;inset:-14%;z-index:0;
  background-image:var(--ev-bg,none);background-size:cover;background-position:center;
  filter:blur(26px) saturate(1.15) brightness(.92);opacity:.65;transform:scale(1.08)}
.ev-figure:after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(160deg,rgba(255,255,255,.16),rgba(13,48,37,.14))}
.ev-figure img{
  position:relative;z-index:2;
  width:100%;height:100%;object-fit:contain;display:block;transition:transform .5s ease;
  -webkit-user-drag:none;user-select:none;pointer-events:none}
@media(hover:hover){.ev-card:hover .ev-figure img{transform:scale(1.03)}}
.ev-when{
  position:absolute;top:13px;left:13px;z-index:2;min-width:62px;padding:8px 11px;border-radius:15px;
  text-align:center;background:rgba(255,255,255,.95);border:1px solid rgba(184,149,82,.4);
  box-shadow:0 10px 26px rgba(20,55,43,.18)}
.ev-when b{display:block;font-size:21px;line-height:1;color:var(--adg-green);font-family:"Playfair Display",serif}
.ev-when span{display:block;font-size:9.5px;font-weight:900;letter-spacing:1.8px;color:#9c7839;text-transform:uppercase;margin-top:3px}
.ev-flag{
  position:absolute;top:13px;right:13px;z-index:2;padding:6px 11px;border-radius:999px;
  font-size:9.5px;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:#fff;
  background:linear-gradient(135deg,var(--adg-green),#2b6b55);box-shadow:0 8px 20px rgba(20,55,43,.3)}
.ev-flag.soon{background:linear-gradient(135deg,#b8322f,#8f2730)}
.ev-flag.weekly{background:linear-gradient(135deg,var(--adg-gold),#9c7839)}
.ev-body{padding:17px 19px 20px;display:flex;flex-direction:column;gap:7px;flex:1}
.ev-body h4{margin:0;font-size:17px;line-height:1.3;color:var(--adg-green)}
.ev-date{font-size:11.5px;font-weight:900;letter-spacing:1.2px;text-transform:uppercase;color:#9c7839}
.ev-body p{margin:0;font-size:13px;line-height:1.55;color:#66756f}
.ev-place{margin-top:auto;padding-top:9px;font-size:11.5px;font-weight:800;color:#3d6a5a;display:flex;align-items:center;gap:6px}

.ev-nav{
  position:absolute;top:38%;z-index:5;width:46px;height:46px;border-radius:50%;cursor:pointer;
  border:1px solid rgba(24,79,61,.14);background:rgba(255,255,255,.96);color:var(--adg-green);
  display:grid;place-items:center;box-shadow:0 12px 30px rgba(20,55,43,.18);
  transition:transform .2s ease,opacity .2s ease}
.ev-nav:hover{transform:scale(1.07)}
.ev-nav[disabled]{opacity:.32;cursor:default;transform:none}
.ev-nav.prev{left:-14px}
.ev-nav.next{right:-14px}
.ev-nav svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:760px){.ev-nav.prev{left:2px}.ev-nav.next{right:2px}}

.ev-dots{display:flex;justify-content:center;gap:7px;margin-top:18px}
/* La pastilla se ve fina, pero el dedo dispone de 26 px de alto para acertar. */
.ev-dots button{
  width:8px;height:26px;padding:9px 0;border:0;border-radius:999px;cursor:pointer;
  background:rgba(24,79,61,.22);background-clip:content-box;-webkit-tap-highlight-color:transparent;
  transition:width .3s ease,background .3s ease}
.ev-dots button.active{width:26px;background:linear-gradient(90deg,var(--adg-gold),var(--adg-gold-soft));background-clip:content-box}

.ev-empty{padding:34px;text-align:center;color:#66756f;font-size:13.5px}

/* ------------------- ASISTENTE DE WHATSAPP ------------------- */
.wa-fab{
  position:fixed;right:20px;bottom:20px;z-index:1001;display:flex;align-items:center;gap:11px;
  padding:9px 18px 9px 9px;border:0;border-radius:999px;cursor:pointer;
  background:linear-gradient(135deg,#ffffff,#f4f1e7);color:var(--adg-green);
  box-shadow:0 18px 45px rgba(20,55,43,.28);border:1px solid rgba(184,149,82,.45);
  transition:transform .22s ease,box-shadow .22s ease}
.wa-fab:hover{transform:translateY(-3px);box-shadow:0 24px 55px rgba(20,55,43,.34)}
.wa-fab img{width:42px;height:42px;border-radius:50%;object-fit:cover;background:#fff;
  border:1px solid rgba(184,149,82,.5);flex:none}
.wa-fab .wa-copy{display:flex;flex-direction:column;line-height:1.2;text-align:left}
.wa-fab .wa-copy small{font-size:9px;font-weight:900;letter-spacing:1.6px;color:#9c7839;text-transform:uppercase}
.wa-fab .wa-copy strong{font-size:13px;font-weight:900}
.wa-fab .wa-dot{
  position:absolute;top:6px;right:8px;width:11px;height:11px;border-radius:50%;
  background:#25d366;border:2px solid #fff}
@media(max-width:620px){.wa-fab{padding:8px}.wa-fab .wa-copy{display:none}}

.wa-panel{
  position:fixed;right:20px;bottom:92px;z-index:1002;width:min(370px,calc(100vw - 32px));
  max-height:min(640px,calc(100vh - 130px));display:none;flex-direction:column;overflow:hidden;
  border-radius:24px;background:#fffdf8;border:1px solid rgba(24,79,61,.14);
  box-shadow:0 34px 90px rgba(15,45,35,.34)}
.wa-panel.open{display:flex;animation:waIn .3s ease}
@keyframes waIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.wa-head{
  display:flex;align-items:center;gap:12px;padding:15px 16px;
  background:linear-gradient(135deg,var(--adg-green),var(--adg-green-deep));color:#fffdf7}
.wa-head img{width:46px;height:46px;border-radius:50%;object-fit:cover;background:#fff;flex:none;
  border:2px solid rgba(216,191,132,.7)}
.wa-head .wa-title{flex:1;min-width:0}
.wa-head strong{display:block;font-size:14.5px;line-height:1.25}
.wa-head span{display:flex;align-items:center;gap:6px;font-size:11px;color:#cfe3d8;margin-top:2px}
.wa-head span i{width:7px;height:7px;border-radius:50%;background:#4ade80;display:block}
.wa-close{
  width:32px;height:32px;flex:none;border:0;border-radius:50%;cursor:pointer;font-size:18px;
  background:rgba(255,255,255,.14);color:#fff;display:grid;place-items:center}
.wa-close:hover{background:rgba(255,255,255,.24)}

.wa-body{padding:16px;overflow-y:auto;background:
  radial-gradient(circle at 12% 8%,rgba(184,149,82,.09),transparent 42%),#fffdf8}
.wa-msg{
  background:#fff;border:1px solid rgba(24,79,61,.12);border-radius:16px 16px 16px 4px;
  padding:13px 15px;font-size:13.5px;line-height:1.55;color:var(--adg-ink);
  box-shadow:0 6px 18px rgba(26,67,52,.06);margin-bottom:15px}
.wa-label{font-size:10px;font-weight:900;letter-spacing:1.8px;color:#9c7839;text-transform:uppercase;margin-bottom:9px}
.wa-topics{display:grid;gap:8px}
.wa-topic{
  display:flex;align-items:center;gap:11px;width:100%;text-align:left;cursor:pointer;
  padding:12px 14px;border-radius:15px;font:inherit;font-size:13.5px;font-weight:700;
  color:var(--adg-ink);background:#fff;border:1px solid rgba(24,79,61,.13);
  transition:border-color .2s ease,transform .15s ease,box-shadow .2s ease}
.wa-topic:hover{border-color:rgba(184,149,82,.6);transform:translateX(3px);box-shadow:0 10px 24px rgba(26,67,52,.08)}
.wa-topic em{font-style:normal;font-size:18px;width:26px;text-align:center;flex:none}
.wa-topic b{display:block;font-weight:900}
.wa-topic small{display:block;font-weight:600;font-size:11.5px;color:#7c8a84;margin-top:1px}

.wa-foot{padding:13px 16px;border-top:1px solid rgba(24,79,61,.1);background:#fff}
.wa-send{
  display:flex;align-items:center;justify-content:center;gap:9px;width:100%;
  padding:13px;border-radius:14px;font-weight:900;font-size:13.5px;color:#fff;
  background:linear-gradient(135deg,#25d366,#128c7e);box-shadow:0 12px 28px rgba(18,140,126,.3)}
.wa-send svg{width:19px;height:19px;fill:currentColor}
.wa-foot small{display:block;text-align:center;margin-top:9px;font-size:11px;color:#7c8a84}

/* ---------------- INVITACIÓN A INSTALAR LA APLICACIÓN ----------------
   En reposo el aviso no sólo se aparta con el desplazamiento: además se
   apaga del todo y deja de recibir el dedo. En el teléfono, donde arranca
   más alto (bottom:138px) para no tapar los botones flotantes, ese
   desplazamiento no bastaba para sacarlo de la pantalla: la tarjeta se
   quedaba abajo, por encima de todo, tapando el asistente y sin manera de
   cerrarla, porque el aspa sólo le quitaba una clase que ya no tenía. */
.install-toast{
  position:fixed;left:50%;bottom:22px;z-index:1003;transform:translate(-50%,140%);
  width:min(540px,calc(100vw - 28px));display:flex;align-items:center;gap:14px;
  padding:14px 16px;border-radius:22px;background:rgba(255,253,248,.98);
  border:1px solid rgba(184,149,82,.45);box-shadow:0 28px 70px rgba(15,45,35,.3);
  backdrop-filter:blur(16px);visibility:hidden;pointer-events:none;
  transition:transform .45s cubic-bezier(.2,.8,.3,1),visibility 0s linear .45s}
/* Mientras se ofrece, se ve y se puede tocar; al cerrarlo se apaga en cuanto
   termina de bajar, sin dejar nada por encima de la página. */
.install-toast.show{transform:translate(-50%,0);visibility:visible;pointer-events:auto;
  transition:transform .45s cubic-bezier(.2,.8,.3,1),visibility 0s linear 0s}
/* Con el asistente abierto el aviso espera su turno: nunca se pone encima
   de la conversación ni del campo para escribir. */
.wa-panel.open~.install-toast{visibility:hidden;pointer-events:none}
.install-toast img{width:48px;height:48px;border-radius:14px;object-fit:contain;background:#fff;flex:none;
  border:1px solid rgba(184,149,82,.4);padding:2px}
.install-toast .it-copy{flex:1;min-width:0}
.install-toast strong{display:block;font-size:13.5px;color:var(--adg-green);line-height:1.3}
.install-toast span{display:block;font-size:11.5px;color:#66756f;margin-top:2px}
.install-toast .it-go{
  flex:none;border:0;border-radius:999px;cursor:pointer;padding:11px 17px;font-weight:900;font-size:12.5px;
  color:#fffdf7;background:linear-gradient(135deg,var(--adg-green),#2b6b55);
  box-shadow:0 10px 26px rgba(23,79,61,.26)}
.install-toast .it-no{
  flex:none;width:30px;height:30px;border:0;border-radius:50%;cursor:pointer;font-size:17px;line-height:1;
  background:rgba(24,79,61,.07);color:#66756f}
@media(max-width:620px){
  /* Se coloca por encima de los dos botones flotantes, sin taparlos. */
  .install-toast{gap:10px;padding:12px;bottom:138px}
  .install-toast img{width:40px;height:40px}
  .install-toast .it-go{padding:10px 13px;font-size:11.5px}
}

/* Ventana con las instrucciones para cada dispositivo */
.install-modal{
  position:fixed;inset:0;z-index:1200;display:none;place-items:center;padding:18px;
  background:rgba(8,26,20,.62);backdrop-filter:blur(8px)}
.install-modal.open{display:grid}
.install-card{
  width:min(470px,100%);max-height:88vh;overflow-y:auto;border-radius:26px;background:#fffdf8;
  border:1px solid rgba(184,149,82,.4);box-shadow:0 40px 100px rgba(10,35,26,.45);padding:26px}
.install-card header{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.install-card header img{width:54px;height:54px;border-radius:15px;object-fit:contain;background:#fff;
  border:1px solid rgba(184,149,82,.4);padding:3px;flex:none}
.install-card h3{margin:0;font-size:19px;color:var(--adg-green)}
.install-card header small{display:block;font-size:11px;font-weight:800;letter-spacing:1.6px;
  color:#9c7839;text-transform:uppercase}
.install-step{
  display:flex;align-items:flex-start;gap:13px;padding:13px 0;
  border-top:1px solid rgba(24,79,61,.1);
  font-size:13.5px;line-height:1.6;color:var(--adg-ink)}
.install-step:first-child{border-top:0;padding-top:2px}
/* Sólo la cifra del paso lleva la medalla redonda: el «>» impide que las
   palabras resaltadas del texto hereden ese círculo y salgan recortadas. */
.install-step>b{
  flex:none;width:26px;height:26px;margin-top:1px;border-radius:50%;
  display:grid;place-items:center;font-size:12px;font-weight:900;
  background:linear-gradient(135deg,var(--adg-gold),#9c7839);color:#fff}
.install-step>span{min-width:0;flex:1}
/* Las palabras que el visitante debe buscar en su pantalla se marcan como
   una etiqueta suave. Se parte en varias líneas sin desbordar la tarjeta. */
.install-step>span b{
  display:inline;-webkit-box-decoration-break:clone;box-decoration-break:clone;
  padding:2px 7px;border-radius:8px;font-weight:800;color:#7d5f24;
  background:rgba(184,149,82,.15);border:1px solid rgba(184,149,82,.34)}
/* El icono del botón «Compartir» de Safari, dibujado dentro del texto para
   que no haya duda de cuál es. */
.install-step .ins-ico{
  display:inline-block;width:15px;height:15px;vertical-align:-3px;margin:0 1px;
  fill:none;stroke:#7d5f24;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.install-actions{display:flex;gap:10px;margin-top:20px}
.install-actions button{
  flex:1;border:0;border-radius:14px;cursor:pointer;padding:13px;font-weight:900;font-size:13px}
.install-actions .primary{color:#fffdf7;background:linear-gradient(135deg,var(--adg-green),#2b6b55)}
.install-actions .ghost{background:rgba(24,79,61,.07);color:var(--adg-green)}
/* Sin instalación directa queda un solo botón: se presenta como el principal. */
.install-actions.solo .ghost{
  color:#fffdf7;background:linear-gradient(135deg,var(--adg-green),#2b6b55);
  box-shadow:0 12px 28px rgba(23,79,61,.24)}
.install-note{margin-top:14px;font-size:11.5px;color:#7c8a84;text-align:center}

/* Firma de quien desarrolla la página: en letra muy pequeña, al fondo, sin
   quitarle protagonismo a la iglesia. */
.copyright .dev-credit{
  display:block;margin-top:9px;font-size:8.5px;letter-spacing:1.1px;
  text-transform:uppercase;color:rgba(216,191,132,.55)}

/* El botón «VER PLAYER» sube para dejar sitio al asistente */
.float-listen{bottom:92px!important}
@media(max-width:620px){.float-listen{bottom:80px!important;right:12px!important}}

/* =====================================================================
   EL PANEL ADMINISTRATIVO TRABAJA SIN ESTORBOS

   Mientras el panel está abierto, lo que flota sobre la página —el aviso
   para descargar la aplicación, el botón de la radio, el de WhatsApp y el
   propio botón «Administrador»— se aparta. Antes el aviso se quedaba fijo
   encima del panel y tapaba los mandos. Al cerrar el panel, todo vuelve.
   ===================================================================== */
body.adm-open .install-toast,
body.adm-open .install-modal,
body.adm-open .float-listen,
body.adm-open .wa-fab,
body.adm-open .admin-launch{display:none!important}
/* Con el panel abierto, la página de atrás no se desplaza. */
body.adm-open{overflow:hidden}

/* =====================================================================
   CUADRO DE LA RADIO — EL MISMO, CON MEJOR ACABADO
   Mantiene su tamaño, su sitio, su logo y sus mandos. Sólo se cuida el
   acabado: un filo dorado muy fino, luz suave en el borde superior, sombras
   más limpias y una tipografía mejor asentada.
   ===================================================================== */
.radio-home{
  position:relative;overflow:hidden;isolation:isolate;
  /* Filo interior dorado: se intuye, no se impone. */
  box-shadow:var(--shadow),inset 0 0 0 1px rgba(216,191,132,.12)}
/* Luz que recorre el borde de arriba, como el canto de una pieza noble. */
.radio-home:before{
  content:"";position:absolute;top:0;left:12%;right:12%;height:1px;z-index:0;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(216,191,132,.75),transparent)}
/* Penumbra muy suave en la base para asentar el cuadro. */
.radio-home:after{
  content:"";position:absolute;inset:auto 0 0;height:45%;z-index:0;pointer-events:none;
  background:linear-gradient(transparent,rgba(0,0,0,.28))}
.radio-home>*{position:relative;z-index:1}

.radio-home h3{
  font-family:"Playfair Display",serif;font-weight:700;letter-spacing:.2px;line-height:1.24;
  text-shadow:0 1px 18px rgba(0,0,0,.35)}
.radio-home>p{letter-spacing:.4px;color:rgba(255,255,255,.68)}
.radio-home .radio-note{
  color:rgba(255,255,255,.55);letter-spacing:1.1px;text-transform:uppercase;font-weight:700;font-size:9.5px}

/* Marco del reproductor oficial de la emisora: conserva el borde dorado y la
   sombra de la pieza, con fondo oscuro para que el widget encaje sin costuras. */
.radio-home .radio-embed{
  border-radius:20px;background:#000;
  border:1px solid rgba(216,191,132,.55);
  box-shadow:0 18px 40px rgba(0,0,0,.34)}
.radio-home .radio-live-text span{color:#5a6a63}

.radio-home .radio-play{
  background:linear-gradient(145deg,#e6cf99,var(--adg-gold));
  box-shadow:0 12px 26px rgba(184,149,82,.42),inset 0 1px 0 rgba(255,255,255,.55);
  color:#1d1608}
.radio-home .radio-play:hover{transform:scale(1.05);box-shadow:0 16px 32px rgba(184,149,82,.5)}
.radio-home .radio-play:active{transform:scale(.96)}
.radio-home .radio-play:focus-visible{outline:2px solid var(--adg-gold-soft);outline-offset:3px}

/* Deslizador de volumen a juego con el resto de la pieza. */
.radio-home .radio-volume{
  appearance:none;-webkit-appearance:none;height:4px;border-radius:999px;background:rgba(24,79,61,.18)}
.radio-home .radio-volume::-webkit-slider-thumb{
  appearance:none;-webkit-appearance:none;width:14px;height:14px;border-radius:50%;
  background:linear-gradient(145deg,var(--adg-gold-soft),var(--adg-gold));border:2px solid #fff;
  box-shadow:0 2px 8px rgba(24,79,61,.35)}
.radio-home .radio-volume::-moz-range-thumb{
  width:14px;height:14px;border-radius:50%;border:2px solid #fff;
  background:linear-gradient(145deg,var(--adg-gold-soft),var(--adg-gold));
  box-shadow:0 2px 8px rgba(24,79,61,.35)}

/* ------------------------ PANEL: ANUNCIOS ------------------------ */
.adm-ev-thumb{
  width:52px;height:52px;flex:none;border-radius:12px;background:#eceee9 center/cover no-repeat;
  border:1px solid rgba(24,79,61,.12)}

/* =====================================================================
   ADAPTACIÓN A TABLET, IPHONE Y DEMÁS APARATOS MÓVILES
   Sólo ajusta medidas, holguras y zonas de toque. Ni la estructura, ni las
   secciones, ni los colores del sitio cambian: la web se ve igual, pero
   cómoda en cualquier pantalla.
   ===================================================================== */

/* Ninguna imagen puede desbordar su tarjeta y estirar la página a lo ancho. */
img{max-width:100%}

/* ------------------------- TABLET (hasta 1024) ------------------------- */
@media(max-width:1024px){
  section{padding:70px 0}
  .section-head{margin-bottom:38px}
  .ev-wrap{--ev-gap:16px}
  /* Las flechas entran dentro del visor: en tablet no hay hueco al costado. */
  .ev-nav{width:44px;height:44px}
  .ev-nav.prev{left:6px}
  .ev-nav.next{right:6px}
  .promo-shell{border-radius:26px;padding:7px}
  .promo-shell .tv-player{border-radius:20px}
}

/* En cualquier pantalla táctil el dedo necesita sitio y no hay «hover». */
@media(hover:none){
  .ev-nav,.ev-dots button,.promo-strip button,.wa-fab,.nav-install{-webkit-tap-highlight-color:transparent}
  .ev-nav:hover,.promo-strip button:hover,.wa-fab:hover,.nav-install:hover{transform:none}
  /* El volumen del reproductor lo gobierna el sistema del aparato. */
  .adg-sound:hover .adg-volume{width:0;opacity:0;margin:0}
  .adg-sound.open .adg-volume{width:64px;opacity:1;margin:0 10px 0 2px}
}

/* --------------------- MÓVIL Y IPHONE (hasta 760) --------------------- */
@media(max-width:760px){
  section{padding:56px 0}
  .ev-wrap{--ev-gap:12px}
  .ev-viewport{border-radius:22px}
  .ev-card{border-radius:20px}
  /* La imagen guarda su formato pero nunca ocupa media pantalla de más. */
  .ev-figure{max-height:56vh}
  .ev-body{padding:15px 16px 18px}
  .ev-body h4{font-size:16px}
  .ev-nav{width:40px;height:40px;top:34%;background:rgba(255,255,255,.92)}
  .ev-nav.prev{left:4px}
  .ev-nav.next{right:4px}
  .ev-nav svg{width:17px;height:17px}
  .ev-dots{margin-top:12px;gap:9px}
  .promo-head .station-icon{width:46px;height:46px}
  .promo-head strong{font-size:15px}
  .promo-strip{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
  .promo-strip button{scroll-snap-align:start}
  .promo-note{font-size:12px}
}

/* ----------------- MÓVILES ESTRECHOS (hasta 430, iPhone) ----------------- */
@media(max-width:430px){
  section{padding:48px 0}
  .ev-figure{max-height:50vh}
  .ev-body{padding:14px 15px 16px}
  .ev-body p{font-size:12.5px}
  .ev-when{min-width:54px;padding:7px 9px}
  .ev-when b{font-size:19px}
  .ev-flag{font-size:9px;padding:5px 9px}
  .ev-nav{width:38px;height:38px}
  .install-card{padding:22px;border-radius:22px}
  .wa-panel{right:12px;left:12px;width:auto}
}

/* Móvil tumbado: la pantalla es muy baja, así que todo se aprieta un poco. */
@media(max-height:520px) and (orientation:landscape){
  section{padding:40px 0}
  .ev-figure{max-height:70vh}
  .wa-panel{max-height:calc(100vh - 110px)}
}

/* --------- ZONA SEGURA DE LOS IPHONE CON MUESCA Y BARRA INFERIOR ---------
   Los botones flotantes se apartan de la barra de gestos y del borde curvo,
   sin moverse de sitio en los aparatos que no tienen muesca. */
@supports(padding:max(0px)){
  .wa-fab{bottom:max(20px,calc(env(safe-area-inset-bottom) + 8px));
    right:max(20px,calc(env(safe-area-inset-right) + 8px))}
  .float-listen{bottom:max(92px,calc(env(safe-area-inset-bottom) + 80px))!important}
  .admin-launch{bottom:max(15px,calc(env(safe-area-inset-bottom) + 6px));
    left:max(15px,calc(env(safe-area-inset-left) + 6px))}
  .install-toast{bottom:max(22px,calc(env(safe-area-inset-bottom) + 12px))}
  .wa-panel{bottom:max(92px,calc(env(safe-area-inset-bottom) + 80px))}
  @media(max-width:620px){
    .float-listen{bottom:max(80px,calc(env(safe-area-inset-bottom) + 68px))!important}
    .install-toast{bottom:max(138px,calc(env(safe-area-inset-bottom) + 126px))}
  }
  /* Tumbado, la muesca se come un costado: el contenido se separa de ella. */
  @media(max-width:1024px) and (orientation:landscape){
    .container{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
  }
}

/* Quien prefiere menos movimiento ve el carrusel quieto y sin transiciones. */
@media(prefers-reduced-motion:reduce){
  .ev-track{transition:none}
  .ev-figure img{transition:none}
}
