{"id":411,"date":"2026-08-21T02:46:25","date_gmt":"2026-08-21T02:46:25","guid":{"rendered":"https:\/\/ormusiclive.com\/?page_id=411"},"modified":"2026-09-21T18:41:43","modified_gmt":"2026-09-21T18:41:43","slug":"retransmision-especial","status":"publish","type":"page","link":"https:\/\/ormusiclive.com\/?page_id=411","title":{"rendered":"TRANSMISION EN VIVO"},"content":{"rendered":"\n<style>\n*{\n  box-sizing:border-box;\n}\n\nhtml,\nbody{\n  margin:0!important;\n  padding:0!important;\n  overflow-x:hidden!important;\n  background:#05070d!important;\n  font-family:Arial,Helvetica,sans-serif!important;\n}\n\nbody{\n  color:#fff!important;\n}\n\n.entry-title,\n.page-title,\n.wp-block-post-title,\n.entry-header,\n.page-header,\n.site-footer,\nfooter.wp-block-template-part,\nheader.wp-block-template-part,\nheader.site-header,\n.site-header,\n#masthead,\n.main-header-bar,\n.main-navigation,\n.primary-navigation,\n.wp-block-navigation,\n.wp-site-blocks > header{\n  display:none!important;\n}\n\n.wp-site-blocks,\n.site-content,\n.site-main,\nmain{\n  margin:0!important;\n  padding:0!important;\n}\n\n.wp-block-html{\n  width:100%!important;\n  max-width:none!important;\n  margin:0!important;\n  padding:0!important;\n}\n\n.is-layout-constrained > .wp-block-html{\n  max-width:none!important;\n}\n\n\n\/* =========================================================\n   P\u00c1GINA\n========================================================= *\/\n\n.orlive-page{\n  position:relative;\n  width:100vw;\n  max-width:100vw;\n  min-height:100vh;\n  left:50%;\n  transform:translateX(-50%);\n  overflow:hidden;\n\n  background-image:\n    linear-gradient(\n      rgba(2,4,10,.72),\n      rgba(3,4,11,.80)\n    ),\n    url(\"https:\/\/ormusiclive.com\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-21-ago-2026-14_22_32.png\");\n\n  background-size:cover;\n  background-position:center center;\n  background-repeat:no-repeat;\n  background-attachment:fixed;\n}\n\n.orlive-page::before{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:1;\n  pointer-events:none;\n\n  background:\n    radial-gradient(\n      circle at 12% 18%,\n      rgba(0,174,255,.18),\n      transparent 28%\n    ),\n    radial-gradient(\n      circle at 88% 18%,\n      rgba(255,0,204,.16),\n      transparent 30%\n    ),\n    radial-gradient(\n      circle at 50% 75%,\n      rgba(110,75,255,.12),\n      transparent 38%\n    );\n}\n\n.orlive-page::after{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:2;\n  pointer-events:none;\n\n  background-image:\n    url(\"https:\/\/ormusiclive.com\/wp-content\/uploads\/2026\/08\/or-music-logo-final.png\");\n\n  background-repeat:no-repeat;\n  background-position:center 70px;\n  background-size:118vw auto;\n\n  opacity:.045;\n\n  filter:\n    saturate(.9)\n    brightness(1.05);\n\n  mix-blend-mode:screen;\n}\n\n.orlive-wrap{\n  position:relative;\n  z-index:5;\n  width:100%;\n  max-width:1600px;\n  margin:0 auto;\n  padding:18px clamp(10px,2.2vw,34px) 46px;\n}\n\n\n\/* =========================================================\n   CABECERA\n========================================================= *\/\n\n.orlive-header{\n  display:flex;\n  align-items:center;\n  justify-content:flex-end;\n  position:relative;\n  min-height:44px;\n  padding:0 0 4px;\n  border-bottom:0;\n}\n\n.orlive-home{\n  position:static;\n  transform:none;\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  min-height:44px;\n  padding:10px 18px;\n  border-radius:999px;\n  text-decoration:none!important;\n  color:#fff!important;\n  background:rgba(255,255,255,.05);\n  border:1px solid rgba(255,255,255,.16);\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1px;\n  backdrop-filter:blur(8px);\n}\n\n\n\/* =========================================================\n   INTRO\n========================================================= *\/\n\n.orlive-intro{\n  max-width:1150px;\n  margin:4px auto 24px;\n  text-align:center;\n}\n\n.orlive-intro small{\n  display:block;\n  margin-bottom:8px;\n  color:#ff67df;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:3px;\n}\n\n.orlive-intro h1{\n  margin:0 0 12px!important;\n  font-size:clamp(42px,5.3vw,80px)!important;\n  line-height:1!important;\n  font-weight:900!important;\n  letter-spacing:-1px;\n\n  background:\n    linear-gradient(\n      90deg,\n      #29caff 0%,\n      #6e74ff 30%,\n      #c550ec 62%,\n      #ff4dc2 100%\n    );\n\n  -webkit-background-clip:text;\n  -webkit-text-fill-color:transparent;\n  background-clip:text;\n}\n\n.orlive-intro p{\n  max-width:940px;\n  margin:0 auto!important;\n  color:#d3d9e2!important;\n  font-size:clamp(13px,1.05vw,16px)!important;\n  line-height:1.7!important;\n}\n\n\n\/* =========================================================\n   VIDEO + CHAT\n========================================================= *\/\n\n.orlive-main{\n  width:100%;\n  max-width:1480px;\n  margin:0 auto;\n\n  display:grid;\n  grid-template-columns:minmax(0,1fr) 350px;\n  gap:16px;\n  align-items:start;\n}\n\n\n\/* =========================================================\n   PLAYER\n========================================================= *\/\n\n.orlive-player-shell{\n  position:relative;\n  padding:16px;\n  border-radius:24px;\n  overflow:hidden;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(6,11,23,.88),\n      rgba(10,6,22,.88)\n    );\n\n  border:1px solid rgba(255,255,255,.16);\n\n  box-shadow:\n    0 24px 60px rgba(0,0,0,.46),\n    0 0 30px rgba(25,155,255,.10),\n    0 0 45px rgba(255,46,210,.08);\n\n  backdrop-filter:blur(10px);\n}\n\n.orlive-player-topline{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:10px;\n  margin-bottom:14px;\n}\n\n\n\/* =========================================================\n   ESTADO\n========================================================= *\/\n\n.orlive-badge{\n  display:inline-flex;\n  align-items:center;\n  gap:8px;\n  min-height:34px;\n  padding:8px 14px;\n  border-radius:999px;\n  background:rgba(0,0,0,.45);\n  border:1px solid rgba(255,255,255,.14);\n  color:#fff;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1.2px;\n}\n\n.orlive-status-dot{\n  width:8px;\n  height:8px;\n  border-radius:50%;\n  background:#768291;\n}\n\n.orlive-badge.is-live .orlive-status-dot{\n  background:#ff255d;\n  box-shadow:0 0 10px rgba(255,37,93,.90);\n  animation:orDotPulse 1.5s ease-in-out infinite;\n}\n\n.orlive-badge.is-offline .orlive-status-dot{\n  background:#39cfff;\n  box-shadow:0 0 10px rgba(57,207,255,.55);\n}\n\n@keyframes orDotPulse{\n  0%,100%{opacity:.55;}\n  50%{opacity:1;}\n}\n\n.orlive-player-note{\n  color:#9fb0c5;\n  font-size:10px;\n  font-weight:800;\n  letter-spacing:1px;\n  text-transform:uppercase;\n}\n\n\n\/* =========================================================\n   VIDEO\n========================================================= *\/\n\n.orlive-video-frame{\n  position:relative;\n  width:100%;\n  aspect-ratio:16\/9;\n  overflow:hidden;\n  border-radius:18px;\n  background:#000;\n\n  border:2px solid rgba(62,207,255,.70);\n\n  box-shadow:\n    inset 0 0 0 1px rgba(255,255,255,.06),\n    0 0 18px rgba(56,194,255,.28),\n    0 0 38px rgba(121,80,255,.26),\n    0 0 65px rgba(255,49,211,.18);\n}\n\n.orlive-video-frame mux-player{\n  position:absolute;\n  inset:0;\n  width:100%;\n  height:100%;\n  border:0;\n  background:#000;\n  z-index:2;\n}\n\n\n\/* =========================================================\n   FONDO WEB PARA SE\u00d1AL VERTICAL \u00b7 PANEL V2\n   Solo afecta la presentaci\u00f3n WEB.\n   No toca Mux, OBS, retransmisiones ni apps.\n========================================================= *\/\n\n.orlive-video-frame.or-vertical-web{\n  background-color:#000;\n  background-size:cover;\n  background-position:center center;\n  background-repeat:no-repeat;\n}\n\n.orlive-video-frame.or-vertical-web mux-player#orLiveFrame{\n  inset:auto!important;\n  top:0!important;\n  bottom:0!important;\n  left:50%!important;\n  right:auto!important;\n\n  width:\n    var(\n      --or-live-vertical-width,\n      31.640625%\n    )!important;\n\n  height:100%!important;\n\n  transform:\n    translateX(-50%)!important;\n\n  background:#000!important;\n}\n\n\/* MODO TV \u00b7 BLOQUEA PAUSA\/SEEK SOLO EN RETRANSMISION *\/\n.or-tv-control-shield{\n  position:absolute;\n  inset:0;\n  z-index:3;\n  display:none;\n  background:transparent;\n  cursor:default;\n}\n\n\n\/* =========================================================\n   ACTIVAR SONIDO\n========================================================= *\/\n\n.or-sound-overlay{\n  position:absolute;\n  left:50%;\n  bottom:25px;\n  transform:translateX(-50%);\n  z-index:20;\n  display:none;\n}\n\n.or-sound-button{\n  min-height:52px;\n  padding:12px 24px;\n  border:1px solid rgba(255,255,255,.40);\n  border-radius:999px;\n  cursor:pointer;\n\n  color:#fff;\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:1px;\n\n  background:\n    linear-gradient(\n      90deg,\n      #169edc,\n      #7355ef,\n      #df42c4\n    );\n\n  box-shadow:\n    0 8px 28px rgba(0,0,0,.58),\n    0 0 28px rgba(39,198,255,.30),\n    0 0 36px rgba(255,62,215,.22);\n\n  animation:orSoundPulse 1.8s ease-in-out infinite;\n}\n\n@keyframes orSoundPulse{\n  0%,100%{\n    transform:scale(1);\n  }\n\n  50%{\n    transform:scale(1.04);\n  }\n}\n\n\n\/* =========================================================\n   PANTALLA SIN CONTENIDO AL AIRE\n========================================================= *\/\n\n.orlive-offline-screen{\n  position:absolute;\n  inset:0;\n  z-index:10;\n\n  display:flex;\n  flex-direction:column;\n  align-items:center;\n  justify-content:center;\n\n  padding:30px;\n  text-align:center;\n\n  background:\n    radial-gradient(\n      circle at 50% 30%,\n      rgba(49,185,255,.17),\n      transparent 30%\n    ),\n    radial-gradient(\n      circle at 65% 70%,\n      rgba(255,55,207,.14),\n      transparent 34%\n    ),\n    linear-gradient(\n      145deg,\n      #050a14,\n      #0b0716\n    );\n}\n\n.orlive-offline-logo{\n  position:absolute;\n  left:50%;\n  top:50%;\n  transform:translate(-50%,-50%);\n\n  width:96%;\n  height:96%;\n  max-width:none;\n  max-height:none;\n\n  object-fit:contain;\n  margin:0;\n\n  opacity:.075;\n  z-index:0;\n  pointer-events:none;\n\n  filter:\n    drop-shadow(0 0 34px rgba(75,190,255,.16))\n    saturate(.9)\n    brightness(1.05);\n}\n\n.orlive-offline-screen > small,\n.orlive-offline-screen > h2,\n.orlive-offline-screen > p{\n  position:relative;\n  z-index:2;\n}\n\n.orlive-offline-screen small{\n  color:#ff61dc;\n  font-size:9px;\n  font-weight:900;\n  letter-spacing:2px;\n}\n\n.orlive-offline-screen h2{\n  margin:9px 0 8px!important;\n  color:#fff!important;\n  font-size:clamp(24px,3vw,44px)!important;\n  font-weight:900!important;\n}\n\n.orlive-offline-screen p{\n  margin:0!important;\n  max-width:610px;\n  color:#aeb9c7!important;\n  font-size:clamp(11px,1vw,14px)!important;\n  line-height:1.65!important;\n}\n\n\n\/* =========================================================\n   TEXTO\n========================================================= *\/\n\n.orlive-player-caption{\n  margin-top:14px;\n  display:grid;\n  grid-template-columns:1fr auto;\n  gap:14px;\n  align-items:center;\n}\n\n.orlive-player-caption-text small{\n  display:block;\n  margin-bottom:6px;\n  color:#ff6ddd;\n  font-size:9px;\n  font-weight:900;\n  letter-spacing:2px;\n}\n\n.orlive-player-caption-text h2{\n  margin:0 0 6px!important;\n  color:#fff!important;\n  font-size:clamp(28px,2.8vw,42px)!important;\n  line-height:1!important;\n  font-weight:900!important;\n}\n\n.orlive-player-caption-text p{\n  margin:0!important;\n  max-width:800px;\n  color:#c6cfda!important;\n  font-size:clamp(12px,.98vw,15px)!important;\n  line-height:1.7!important;\n}\n\n.orlive-player-state{\n  min-width:150px;\n  text-align:right;\n}\n\n.orlive-player-state span{\n  display:inline-flex;\n  align-items:center;\n  gap:8px;\n\n  min-height:36px;\n  padding:8px 14px;\n\n  border-radius:999px;\n\n  background:rgba(0,0,0,.40);\n  border:1px solid rgba(255,255,255,.14);\n\n  color:#49d9ff;\n\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1px;\n}\n\n.orlive-player-state span.is-live{\n  color:#4cffb5;\n}\n\n\n\/* =========================================================\n   CONTROLES\n========================================================= *\/\n\n.orlive-volume-control{\n  margin-top:12px;\n  display:none;\n  align-items:center;\n  gap:12px;\n  padding:10px 14px;\n  border-radius:14px;\n  background:rgba(7,12,24,.88);\n  border:1px solid rgba(255,255,255,.12);\n}\n\n.orlive-volume-control strong{\n  flex:0 0 auto;\n  color:#fff;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1px;\n}\n\n.orlive-volume-control input[type=\"range\"]{\n  width:100%;\n  min-width:120px;\n  cursor:pointer;\n}\n\n.orlive-volume-value{\n  min-width:42px;\n  text-align:right;\n  color:#9fdcff;\n  font-size:10px;\n  font-weight:900;\n}\n\n.orlive-actions{\n  margin-top:14px;\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:12px;\n}\n\n.orlive-btn{\n  min-height:72px;\n  display:grid;\n  grid-template-columns:48px 1fr;\n  align-items:center;\n  gap:12px;\n  padding:12px 14px;\n  border-radius:16px;\n  cursor:pointer;\n  color:#fff;\n  text-align:left;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(8,15,30,.94),\n      rgba(13,8,24,.94)\n    );\n\n  transition:.2s ease;\n}\n\n.orlive-btn:hover{\n  transform:translateY(-1px);\n}\n\n.orlive-btn.blue{\n  border:1px solid rgba(45,198,255,.38);\n}\n\n.orlive-btn.pink{\n  border:1px solid rgba(255,73,214,.38);\n}\n\n.orlive-btn-icon{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n\n  width:48px;\n  height:48px;\n\n  border-radius:12px;\n  background:rgba(255,255,255,.04);\n  font-size:22px;\n}\n\n.orlive-btn.blue .orlive-btn-icon{\n  color:#41d1ff;\n}\n\n.orlive-btn.pink .orlive-btn-icon{\n  color:#ff63de;\n}\n\n.orlive-btn strong{\n  display:block;\n  margin-bottom:4px;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1px;\n}\n\n.orlive-btn small{\n  display:block;\n  color:#a8b4c2;\n  font-size:8px;\n  line-height:1.45;\n}\n\n\n\/* =========================================================\n   CONTIN\u00daA ESCUCHANDO\n========================================================= *\/\n\n.orlive-continue{\n  margin-top:16px;\n  padding:18px;\n  border-radius:18px;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(5,12,24,.82),\n      rgba(14,7,25,.82)\n    );\n\n  border:1px solid rgba(255,255,255,.10);\n}\n\n.orlive-continue.is-hidden{\n  display:none!important;\n}\n\n.orlive-continue-title{\n  margin-bottom:14px;\n  text-align:center;\n  color:#b9c5d2;\n  font-size:9px;\n  font-weight:900;\n  letter-spacing:2px;\n}\n\n.orlive-radio-buttons{\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:12px;\n}\n\n.orlive-radio-link{\n  min-height:70px;\n\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  gap:12px;\n\n  padding:12px 16px;\n\n  border-radius:15px;\n\n  text-decoration:none!important;\n  color:#fff!important;\n\n  font-size:12px;\n  font-weight:900;\n  letter-spacing:.7px;\n\n  transition:\n    transform .2s ease,\n    filter .2s ease;\n}\n\n.orlive-radio-link:hover{\n  transform:translateY(-2px);\n  filter:brightness(1.08);\n}\n\n.orlive-radio-link.radio247{\n  background:\n    linear-gradient(\n      90deg,\n      rgba(20,150,230,.90),\n      rgba(60,102,242,.90)\n    );\n\n  border:1px solid rgba(87,211,255,.40);\n}\n\n.orlive-radio-link.mixes{\n  background:\n    linear-gradient(\n      90deg,\n      rgba(107,74,237,.90),\n      rgba(224,55,194,.90)\n    );\n\n  border:1px solid rgba(255,106,225,.40);\n}\n\n.orlive-radio-icon{\n  font-size:25px;\n}\n\n\n\/* =========================================================\n   CHAT\n========================================================= *\/\n\n.orlive-chat{\n  position:relative;\n  overflow:hidden;\n  border-radius:24px;\n\n  background:\n    linear-gradient(\n      160deg,\n      rgba(8,15,30,.96),\n      rgba(15,7,27,.96)\n    );\n\n  border:1px solid rgba(255,255,255,.15);\n\n  box-shadow:\n    0 24px 60px rgba(0,0,0,.42),\n    0 0 30px rgba(40,190,255,.08),\n    0 0 40px rgba(255,55,214,.07);\n\n  backdrop-filter:blur(12px);\n}\n\n.orlive-chat-head{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:10px;\n  min-height:58px;\n  padding:13px 16px;\n\n  border-bottom:1px solid rgba(255,255,255,.09);\n\n  background:\n    linear-gradient(\n      90deg,\n      rgba(9,20,36,.96),\n      rgba(22,8,31,.96)\n    );\n}\n\n.orlive-chat-title{\n  display:flex;\n  align-items:center;\n  gap:8px;\n  color:#fff;\n  font-size:12px;\n  font-weight:900;\n  letter-spacing:.7px;\n}\n\n.orlive-chat-title i{\n  width:9px;\n  height:9px;\n  border-radius:50%;\n  display:inline-block;\n  background:#29cbff;\n  box-shadow:0 0 9px rgba(41,203,255,.8);\n}\n\n.orlive-chat-live{\n  color:#4cffb5;\n  font-size:8px;\n  font-weight:900;\n  letter-spacing:1px;\n}\n\n.orlive-chat-access{\n  padding:15px 16px;\n  text-align:center;\n\n  background:\n    linear-gradient(\n      90deg,\n      rgba(25,170,230,.13),\n      rgba(115,75,235,.14),\n      rgba(236,67,198,.13)\n    );\n\n  border-bottom:1px solid rgba(255,255,255,.09);\n}\n\n.orlive-chat-access strong{\n  display:block;\n  margin-bottom:5px;\n  color:#ff71de;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1.4px;\n}\n\n.orlive-chat-access span{\n  display:block;\n  color:#d5dce5;\n  font-size:10px;\n  line-height:1.5;\n}\n\n.orlive-chat-access b{\n  color:#4ed8ff;\n}\n\n.orlive-chat-window{\n  position:relative;\n  width:100%;\n  height:625px;\n  background:#080c14;\n  overflow:hidden;\n}\n\n.orlive-chat-window iframe{\n  display:block;\n  width:100%;\n  height:100%;\n  border:0;\n  background:#080c14!important;\n}\n\n\n\/* =========================================================\n   CHAT BLOQUEADO \u00b7 DISE\u00d1O PROFESIONAL MAC \/ WINDOWS\n========================================================= *\/\n\n.orlive-chat-window.is-locked iframe{\n  filter:blur(7px) brightness(.42) saturate(.72);\n  transform:scale(1.035);\n  pointer-events:none;\n  user-select:none;\n}\n\n.orlive-chat-lock{\n  position:absolute;\n  inset:0;\n  z-index:5;\n\n  display:flex;\n  align-items:center;\n  justify-content:center;\n\n  padding:22px;\n\n  background:\n    linear-gradient(\n      180deg,\n      rgba(3,6,16,.18),\n      rgba(3,6,16,.40)\n    );\n\n  backdrop-filter:blur(1.5px);\n  -webkit-backdrop-filter:blur(1.5px);\n}\n\n.orlive-chat-lock-card{\n  width:min(330px,88%);\n\n  padding:30px 25px 26px;\n\n  text-align:center;\n\n  border-radius:24px;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(13,18,38,.94),\n      rgba(8,12,27,.96)\n    );\n\n  border:1px solid rgba(255,72,199,.48);\n\n  box-shadow:\n    0 0 0 1px rgba(71,122,255,.16),\n    0 0 26px rgba(255,0,213,.17),\n    0 20px 55px rgba(0,0,0,.48);\n}\n\n.orlive-chat-lock-eyebrow{\n  margin-bottom:12px;\n  color:#ff67cf;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:1.8px;\n}\n\n.orlive-chat-lock-icon{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n\n  width:72px;\n  height:72px;\n\n  margin:0 auto 16px;\n\n  border-radius:50%;\n\n  color:#ff69df;\n  font-size:34px;\n\n  border:1px solid rgba(255,92,225,.72);\n\n  box-shadow:\n    0 0 20px rgba(255,0,213,.26),\n    inset 0 0 18px rgba(72,93,255,.13);\n}\n\n.orlive-chat-lock-title{\n  margin:0 0 13px!important;\n  color:#fff!important;\n  font-size:27px!important;\n  font-weight:900!important;\n}\n\n.orlive-chat-lock-main{\n  margin:0 0 10px!important;\n  color:#fff!important;\n  font-size:15px!important;\n  font-weight:800!important;\n  line-height:1.45!important;\n}\n\n.orlive-chat-lock-sub{\n  margin:0!important;\n  color:#aeb9ca!important;\n  font-size:12px!important;\n  line-height:1.6!important;\n}\n\n.orlive-chat-lock-status{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n\n  min-height:42px;\n\n  margin-top:19px;\n  padding:0 20px;\n\n  border-radius:999px;\n\n  color:#ff67cf;\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:.7px;\n\n  border:1px solid rgba(255,72,199,.48);\n\n  background:rgba(255,0,213,.055);\n}\n\n@media (max-width:760px){\n\n  .orlive-chat-lock{\n    padding:14px;\n  }\n\n  .orlive-chat-lock-card{\n    width:min(320px,92%);\n    padding:24px 18px 22px;\n    border-radius:20px;\n  }\n\n  .orlive-chat-lock-title{\n    font-size:23px!important;\n  }\n\n  .orlive-chat-lock-icon{\n    width:62px;\n    height:62px;\n    font-size:29px;\n  }\n}\n\n\n\/* =========================================================\n   INFORMACI\u00d3N\n========================================================= *\/\n\n.orlive-info{\n  width:100%;\n  max-width:1480px;\n  margin:18px auto 0;\n\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:14px;\n}\n\n.orlive-card{\n  min-height:155px;\n  padding:22px;\n  border-radius:18px;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(8,13,25,.82),\n      rgba(11,7,22,.82)\n    );\n\n  border:1px solid rgba(255,255,255,.10);\n  box-shadow:0 18px 40px rgba(0,0,0,.22);\n  backdrop-filter:blur(8px);\n}\n\n.orlive-card:nth-child(1){\n  border-color:rgba(42,200,255,.24);\n}\n\n.orlive-card:nth-child(2){\n  border-color:rgba(183,83,255,.24);\n}\n\n.orlive-card:nth-child(3){\n  border-color:rgba(255,74,210,.24);\n}\n\n.orlive-card small{\n  display:block;\n  margin-bottom:8px;\n  font-size:8px;\n  font-weight:900;\n  letter-spacing:1.7px;\n}\n\n.orlive-card:nth-child(1) small{\n  color:#48d1ff;\n}\n\n.orlive-card:nth-child(2) small{\n  color:#bf6aff;\n}\n\n.orlive-card:nth-child(3) small{\n  color:#ff6cde;\n}\n\n.orlive-card h3{\n  margin:0 0 9px!important;\n  color:#fff!important;\n  font-size:clamp(20px,2vw,30px)!important;\n  line-height:1.1!important;\n  font-weight:900!important;\n}\n\n.orlive-card p{\n  margin:0!important;\n  color:#c3cdda!important;\n  font-size:12px!important;\n  line-height:1.68!important;\n}\n\n\n\/* =========================================================\n   REDES\n========================================================= *\/\n\n.or-social-info{\n  width:100%;\n  max-width:1480px;\n  margin:22px auto 0;\n  padding:24px;\n  border-radius:20px;\n  text-align:center;\n\n  background:\n    linear-gradient(\n      145deg,\n      rgba(7,12,24,.90),\n      rgba(14,7,24,.90)\n    );\n\n  border:1px solid rgba(255,255,255,.10);\n  box-shadow:0 18px 45px rgba(0,0,0,.25);\n}\n\n.or-social-title{\n  color:#fff;\n  font-size:clamp(18px,2vw,26px);\n  font-weight:900;\n  letter-spacing:1px;\n}\n\n.or-social-subtitle{\n  margin-top:6px;\n  margin-bottom:18px;\n  color:#8e9aa8;\n  font-size:10px;\n  letter-spacing:1px;\n}\n\n.or-social-grid{\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:12px;\n}\n\n.or-social-card{\n  min-height:78px;\n\n  display:flex;\n  align-items:center;\n  justify-content:center;\n\n  gap:12px;\n  padding:14px;\n\n  border-radius:15px;\n\n  background:rgba(255,255,255,.035);\n  border:1px solid rgba(255,255,255,.09);\n}\n\n.or-social-icon{\n  width:42px;\n  height:42px;\n\n  display:flex;\n  align-items:center;\n  justify-content:center;\n\n  border-radius:50%;\n\n  background:rgba(255,255,255,.06);\n\n  font-size:12px;\n  font-weight:900;\n}\n\n.or-social-icon svg{\n  width:22px;\n  height:24px;\n  display:block;\n  fill:currentColor;\n}\n\n.or-social-card.instagram .or-social-icon{\n  color:#ff65d8;\n}\n\n.or-social-card.tiktok .or-social-icon{\n  color:#5de4ff;\n}\n\n.or-social-card.gmail .or-social-icon{\n  color:#ff6a90;\n}\n\n.or-social-copy{\n  text-align:left;\n}\n\n.or-social-copy span{\n  display:block;\n  color:#9ca8b6;\n  font-size:8px;\n  font-weight:900;\n  letter-spacing:1px;\n  text-transform:uppercase;\n}\n\n.or-social-copy strong{\n  display:block;\n  margin-top:4px;\n  color:#fff;\n  font-size:12px;\n}\n\n\n\/* =========================================================\n   FOOTER\n========================================================= *\/\n\n.or-legal-footer{\n  width:100%;\n  max-width:1480px;\n  margin:15px auto 0;\n  padding:25px 18px 8px;\n\n  border-top:1px solid rgba(255,255,255,.08);\n\n  text-align:center;\n}\n\n.or-legal-links{\n  display:flex;\n  justify-content:center;\n  flex-wrap:wrap;\n  gap:8px 22px;\n  margin-bottom:15px;\n  color:#9ba5b1;\n  font-size:9px;\n  font-weight:800;\n  letter-spacing:.6px;\n}\n\n.or-copyright-main{\n  color:#d0d6dd;\n  font-size:10px;\n  font-weight:900;\n}\n\n.or-copyright-copy{\n  max-width:960px;\n  margin:10px auto 0;\n  color:#6f7b88;\n  font-size:8px;\n  line-height:1.65;\n}\n\n.or-creation-line{\n  margin-top:13px;\n  color:#778390;\n  font-size:8px;\n  letter-spacing:.6px;\n}\n\n.or-creation-line strong{\n  color:#aeb8c3;\n}\n\n\n\/* =========================================================\n   RESPONSIVE\n========================================================= *\/\n\n@media(max-width:1120px){\n\n  .orlive-main{\n    grid-template-columns:1fr;\n  }\n\n  .orlive-chat-window{\n    height:520px;\n  }\n\n  .orlive-info{\n    grid-template-columns:1fr;\n  }\n\n}\n\n@media(max-width:680px){\n\n  .orlive-page{\n    background-attachment:scroll;\n    background-position:center top;\n  }\n\n  .orlive-wrap{\n    padding:10px 8px 32px;\n  }\n\n  .orlive-header{\n    min-height:auto;\n    padding:2px 4px 4px;\n    justify-content:center;\n  }\n\n  .orlive-home{\n    position:static;\n    transform:none;\n  }\n\n  .orlive-intro{\n    margin:4px auto 20px;\n  }\n\n  .orlive-intro h1{\n    font-size:38px!important;\n  }\n\n  .orlive-page::after{\n    background-position:center 74px;\n    background-size:145vw auto;\n    opacity:.035;\n    mix-blend-mode:screen;\n  }\n\n  .orlive-offline-logo{\n    width:118%;\n    height:118%;\n    opacity:.06;\n  }\n\n  .orlive-player-caption{\n    grid-template-columns:1fr;\n  }\n\n  .orlive-player-state{\n    text-align:left;\n  }\n\n  .orlive-actions{\n    grid-template-columns:1fr;\n  }\n\n  .orlive-radio-buttons{\n    grid-template-columns:1fr;\n  }\n\n  .orlive-chat-window{\n    height:500px;\n  }\n\n  .or-social-grid{\n    grid-template-columns:1fr;\n  }\n\n  .or-social-card{\n    justify-content:flex-start;\n  }\n\n}\n\n\n\/* OR INTERNAL HOME PREMIUM START *\/\n\n.orlive-home{\n    position:relative !important;\n    display:inline-flex !important;\n    align-items:center !important;\n    justify-content:center !important;\n    gap:9px !important;\n\n    min-width:142px !important;\n    height:54px !important;\n    padding:0 20px !important;\n\n    border-radius:16px !important;\n    border:1px solid rgba(105,224,255,.40) !important;\n\n    background:\n      linear-gradient(\n        135deg,\n        rgba(10,17,35,.96),\n        rgba(23,14,42,.94)\n      ) !important;\n\n    color:#ffffff !important;\n    text-decoration:none !important;\n\n    font-size:12px !important;\n    line-height:1 !important;\n    font-weight:900 !important;\n    letter-spacing:.12em !important;\n\n    box-shadow:\n      0 14px 35px rgba(0,0,0,.38),\n      0 0 22px rgba(64,204,255,.10),\n      inset 0 1px 0 rgba(255,255,255,.08) !important;\n\n    backdrop-filter:blur(10px);\n    -webkit-backdrop-filter:blur(10px);\n\n    transition:\n      transform .20s ease,\n      border-color .20s ease,\n      box-shadow .20s ease,\n      background .20s ease !important;\n}\n\n.orlive-home::after{\n    content:\"\";\n    position:absolute;\n    left:18px;\n    right:18px;\n    bottom:-1px;\n    height:1px;\n\n    background:\n      linear-gradient(\n        90deg,\n        transparent,\n        rgba(84,225,255,.85),\n        rgba(181,92,255,.60),\n        transparent\n      );\n\n    box-shadow:0 0 12px rgba(74,213,255,.30);\n    pointer-events:none;\n}\n\n.orlive-home .or-home-svg{\n    width:20px !important;\n    height:20px !important;\n    display:block !important;\n    flex:0 0 20px !important;\n\n    color:#75e8ff !important;\n\n    filter:\n      drop-shadow(0 0 7px rgba(77,220,255,.30));\n}\n\n.orlive-home .or-home-text{\n    color:#ffffff !important;\n    white-space:nowrap !important;\n}\n\n.orlive-home:hover{\n    transform:translateY(-2px) !important;\n\n    border-color:rgba(116,232,255,.72) !important;\n\n    background:\n      linear-gradient(\n        135deg,\n        rgba(15,28,53,.98),\n        rgba(34,17,55,.97)\n      ) !important;\n\n    box-shadow:\n      0 18px 42px rgba(0,0,0,.45),\n      0 0 28px rgba(75,214,255,.16),\n      0 0 38px rgba(177,83,255,.08) !important;\n}\n\n.orlive-home:active{\n    transform:translateY(0) scale(.98) !important;\n}\n\n@media(max-width:700px){\n    .orlive-home{\n        min-width:124px !important;\n        height:48px !important;\n        padding:0 16px !important;\n        border-radius:14px !important;\n        font-size:11px !important;\n        gap:8px !important;\n    }\n\n    .orlive-home .or-home-svg{\n        width:18px !important;\n        height:18px !important;\n        flex-basis:18px !important;\n    }\n}\n\n\/* OR INTERNAL HOME PREMIUM END *\/\n\n\n\n\/* OR_WEB_TV_RECOVERY_V1: mismo marco y fondos; video contenido. *\/\n#orLiveFrame{display:block;--media-object-fit:contain;--media-object-position:center;}\n.orlive-player-shell{backdrop-filter:none;-webkit-backdrop-filter:none;}\n.orlive-chat-window.is-locked iframe{display:none!important;}\n\n<\/style>\n\n\n<div class=\"orlive-page\">\n\n<div class=\"orlive-wrap\">\n\n\n<!-- CABECERA -->\n\n<div class=\"orlive-header\">\n\n  <a class=\"orlive-home\" href=\"https:\/\/ormusiclive.com\/\">\n<svg class=\"or-home-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n  <path d=\"M3 11.5 12 4l9 7.5\"><\/path>\n  <path d=\"M5.5 10.5V20h13v-9.5\"><\/path>\n  <path d=\"M9.5 20v-6h5v6\"><\/path>\n<\/svg>\n<span class=\"or-home-text\">INICIO<\/span>\n<\/a>\n\n<\/div>\n\n\n<!-- INTRO -->\n\n<div class=\"orlive-intro\">\n\n  <small>\n    ORMUSICLIVE.COM \u00b7 SALA AUDIOVISUAL\n  <\/small>\n\n  <h1>\n    OR MUSIC LIVE TV\n  <\/h1>\n\n  <p>\n    Transmisiones en vivo, programas pregrabados, videos,\n    entrevistas y contenido audiovisual en general para tu disfrute.\n    Tambi\u00e9n encontrar\u00e1s sesiones de DJs, invitados, minitecas,\n    eventos y producciones especiales de OR Music Live.\n  <\/p>\n\n<\/div>\n\n\n<!-- VIDEO + CHAT -->\n\n<div class=\"orlive-main\">\n\n\n<div class=\"orlive-player-wrap\">\n\n<div class=\"orlive-player-shell\">\n\n\n<div class=\"orlive-player-topline\">\n\n  <div class=\"orlive-badge is-offline\" id=\"orLiveBadge\">\n\n    <span class=\"orlive-status-dot\"><\/span>\n\n    <b id=\"orLiveBadgeText\">\n      VERIFICANDO SE\u00d1AL\n    <\/b>\n\n  <\/div>\n\n  <div class=\"orlive-player-note\">\n    OR MUSIC LIVE TV\n  <\/div>\n\n<\/div>\n\n\n<!-- =========================================================\n     VIDEO\n========================================================= -->\n\n<div class=\"orlive-video-frame\">\n\n\n  <mux-player id=\"orLiveFrame\" playsinline muted preload=\"metadata\" max-resolution=\"720p\" no-volume-pref no-muted-pref accent-color=\"#49d9ff\" aria-label=\"OR Music Live TV\"><\/mux-player>\n\n\n  <!-- MODO TV: conserva el control central de pausa\/posicion en retransmisiones -->\n  <div class=\"or-tv-control-shield\" id=\"orTvControlShield\" aria-hidden=\"true\">\n  <\/div>\n\n\n  <div class=\"or-sound-overlay\" id=\"orSoundOverlay\">\n\n    <button type=\"button\" class=\"or-sound-button\" id=\"orSoundButton\">\n      \ud83d\udd0a ACTIVAR SONIDO\n    <\/button>\n\n  <\/div>\n\n\n  <div class=\"orlive-offline-screen\" id=\"orOfflineScreen\">\n\n    <img decoding=\"async\" class=\"orlive-offline-logo\" src=\"https:\/\/ormusiclive.com\/wp-content\/uploads\/2026\/08\/or-music-logo-final.png\" alt=\"OR Music Live\">\n\n    <small>\n      OR MUSIC LIVE\n    <\/small>\n\n    <h2>\n      PR\u00d3XIMA TRANSMISI\u00d3N\n    <\/h2>\n\n    <p>\n      En este momento no hay contenido\n      audiovisual al aire.\n\n      Mientras esperas nuestra pr\u00f3xima programaci\u00f3n audiovisual,\n      puedes continuar disfrutando Radio 24\/7\n      o nuestras mezclas y sesiones de DJs.\n    <\/p>\n\n  <\/div>\n\n\n<\/div>\n\n\n<!-- PUBLICIDAD -->\n\n<div class=\"orlive-player-caption\">\n\n  <div class=\"orlive-player-caption-text\">\n\n    <small>\n      MARCAS \u00b7 PRODUCTOS \u00b7 SERVICIOS \u00b7 EVENTOS\n    <\/small>\n\n    <h2>\n      Tu marca tambi\u00e9n puede estar aqu\u00ed\n    <\/h2>\n\n    <p>\n      OR Music Live abre este espacio audiovisual\n      para marcas, empresas, emprendimientos,\n      eventos y proyectos que quieran conectar\n      con nuestra audiencia.\n\n      Integra tu publicidad, promoci\u00f3n o mensaje\n      dentro de nuestras transmisiones\n      y contenidos especiales.\n    <\/p>\n\n  <\/div>\n\n\n  <div class=\"orlive-player-state\">\n\n    <span id=\"orLiveState\">\n      \u25cf SIN CONTENIDO AL AIRE\n    <\/span>\n\n  <\/div>\n\n<\/div>\n\n\n<!-- CONTROLES -->\n\n<div class=\"orlive-actions\" id=\"orLiveActions\" style=\"display:none;\">\n\n\n<button type=\"button\" class=\"orlive-btn blue\" id=\"orReloadLive\">\n\n  <div class=\"orlive-btn-icon\">\n    \u21bb\n  <\/div>\n\n  <div>\n\n    <strong>\n      RECARGAR SE\u00d1AL\n    <\/strong>\n\n    <small>\n      Reconecta el video si tu conexi\u00f3n se interrumpe.\n    <\/small>\n\n  <\/div>\n\n<\/button>\n\n\n<button type=\"button\" class=\"orlive-btn pink\" id=\"orFullscreenLive\">\n\n  <div class=\"orlive-btn-icon\">\n    \u26f6\n  <\/div>\n\n  <div>\n\n    <strong>\n      PANTALLA COMPLETA\n    <\/strong>\n\n    <small>\n      Ampl\u00eda la se\u00f1al sin abrir otra ventana.\n    <\/small>\n\n  <\/div>\n\n<\/button>\n\n\n<\/div>\n\n<div class=\"orlive-volume-control\" id=\"orVolumeControl\">\n\n  <strong>\n    \ud83d\udd0a VOLUMEN\n  <\/strong>\n\n  <input type=\"range\" id=\"orVolumeSlider\" min=\"0\" max=\"100\" step=\"1\" value=\"100\" aria-label=\"Volumen\">\n\n  <span class=\"orlive-volume-value\" id=\"orVolumeValue\">\n    100%\n  <\/span>\n\n<\/div>\n\n\n<!-- RADIOS CUANDO NO HAY CONTENIDO AL AIRE -->\n\n<div class=\"orlive-continue\" id=\"orContinueListening\">\n\n  <div class=\"orlive-continue-title\">\n    CONTIN\u00daA ESCUCHANDO OR MUSIC LIVE\n  <\/div>\n\n\n  <div class=\"orlive-radio-buttons\">\n\n\n    <a class=\"orlive-radio-link radio247\" href=\"https:\/\/ormusiclive.com\/?page_id=10\">\n\n      <span class=\"orlive-radio-icon\">\n        \ud83d\udcfb\n      <\/span>\n\n      <span>\n        IR A RADIO 24\/7\n      <\/span>\n\n    <\/a>\n\n\n    <a class=\"orlive-radio-link mixes\" href=\"https:\/\/ormusiclive.com\/?page_id=409\">\n\n      <span class=\"orlive-radio-icon\">\n        \ud83c\udfa7\n      <\/span>\n\n      <span>\n        IR A MIXES &amp; DJS\n      <\/span>\n\n    <\/a>\n\n\n  <\/div>\n\n<\/div>\n\n\n<\/div>\n\n<\/div>\n\n\n<!-- CHAT -->\n\n<div class=\"orlive-chat\">\n\n\n<div class=\"orlive-chat-head\">\n\n  <div class=\"orlive-chat-title\">\n\n    <i><\/i>\n\n    CHAT OR MUSIC LIVE\n\n  <\/div>\n\n  <div class=\"orlive-chat-live\">\n    \u25cf COMUNIDAD\n  <\/div>\n\n<\/div>\n\n\n<div class=\"orlive-chat-access\">\n\n  <strong>\n    CHAT OR MUSIC LIVE\n  <\/strong>\n\n  <span>\n    El chat se habilita \u00fanicamente durante transmisiones especiales.\n  <\/span>\n\n<\/div>\n\n\n<div class=\"orlive-chat-window is-locked\" id=\"orLiveChatWindow\">\n\n  <iframe data-src=\"https:\/\/organizations.minnit.chat\/247725476591154\/Main\" title=\"Chat OR Music Live\" allow=\"clipboard-write\" allowtransparency=\"true\"><\/iframe>\n\n  <div class=\"orlive-chat-lock\" id=\"orLiveChatLock\">\n\n    <div class=\"orlive-chat-lock-card\">\n\n      <div class=\"orlive-chat-lock-eyebrow\">\n        CHAT OR MUSIC LIVE\n      <\/div>\n\n      <div class=\"orlive-chat-lock-icon\" aria-hidden=\"true\">\n        \ud83d\udd12\n      <\/div>\n\n      <h3 class=\"orlive-chat-lock-title\">\n        Chat bloqueado\n      <\/h3>\n\n      <p class=\"orlive-chat-lock-main\">\n        Disponible solo durante transmisiones especiales.\n      <\/p>\n\n      <p class=\"orlive-chat-lock-sub\">\n        Cuando est\u00e9 habilitado podr\u00e1s participar en la conversaci\u00f3n en vivo.\n      <\/p>\n\n      <div class=\"orlive-chat-lock-status\">\n        BLOQUEADO\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- INFORMACI\u00d3N -->\n\n<div class=\"orlive-info\">\n\n\n<div class=\"orlive-card\">\n\n  <small>\n    VIVE OR MUSIC LIVE\n  <\/small>\n\n  <h3>\n    Mucho m\u00e1s que escuchar m\u00fasica\n  <\/h3>\n\n  <p>\n    Disfruta sesiones especiales de DJs,\n    minitecas, entrevistas, invitados,\n    eventos, programas y producciones audiovisuales\n    creadas para nuestra comunidad.\n  <\/p>\n\n<\/div>\n\n\n<div class=\"orlive-card\">\n\n  <small>\n    PUBLICIDAD &amp; PROMOCI\u00d3N\n  <\/small>\n\n  <h3>\n    Lleva tu marca a nuestra audiencia\n  <\/h3>\n\n  <p>\n    Si tienes una empresa,\n    producto, servicio,\n    emprendimiento o evento,\n    puedes formar parte de los espacios\n    promocionales de OR Music Live.\n  <\/p>\n\n<\/div>\n\n\n<div class=\"orlive-card\">\n\n  <small>\n    PARTICIPA CON NOSOTROS\n  <\/small>\n\n  <h3>\n    Una comunidad conectada\n  <\/h3>\n\n  <p>\n    Acompa\u00f1a nuestras transmisiones,\n    participa en el chat,\n    conoce a nuestros invitados\n    y comparte la experiencia\n    con seguidores de OR Music Live.\n  <\/p>\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- REDES -->\n\n<section class=\"or-social-info\">\n\n\n<div class=\"or-social-title\">\n  OR MUSIC LIVE \u00b7 REDES Y CONTACTO\n<\/div>\n\n<div class=\"or-social-subtitle\">\n  INFORMACI\u00d3N OFICIAL\n<\/div>\n\n\n<div class=\"or-social-grid\">\n\n\n<div class=\"or-social-card instagram\">\n\n  <div class=\"or-social-icon\">\n    IG\n  <\/div>\n\n  <div class=\"or-social-copy\">\n\n    <span>Instagram<\/span>\n\n    <strong>\n      @ormusiclive\n    <\/strong>\n\n  <\/div>\n\n<\/div>\n\n\n<div class=\"or-social-card tiktok\">\n\n  <div class=\"or-social-icon\" aria-label=\"TikTok\">\n    <svg viewBox=\"0 0 448 512\" role=\"img\" aria-hidden=\"true\">\n      <path d=\"M448 209.9a210.1 210.1 0 0 1-122.8-39.3v178.7A162.6 162.6 0 1 1 185 188.3v89.9a74.6 74.6 0 1 0 52.2 71.2V0h88a121.2 121.2 0 0 0 1.9 22.2A122.2 122.2 0 0 0 381 102.3a121.4 121.4 0 0 0 67 20.1z\"><\/path>\n    <\/svg>\n  <\/div>\n\n  <div class=\"or-social-copy\">\n\n    <span>TikTok<\/span>\n\n    <strong>\n      @or.music.live\n    <\/strong>\n\n  <\/div>\n\n<\/div>\n\n\n<div class=\"or-social-card gmail\">\n\n  <div class=\"or-social-icon\">\n    @\n  <\/div>\n\n  <div class=\"or-social-copy\">\n\n    <span>Contacto<\/span>\n\n    <strong>\n      ormusiclive@gmail.com\n    <\/strong>\n\n  <\/div>\n\n<\/div>\n\n\n<\/div>\n\n<\/section>\n\n\n<!-- FOOTER -->\n\n<footer class=\"or-legal-footer\">\n\n\n<div class=\"or-legal-links\">\n\n  <span>Derechos de Autor<\/span>\n\n  <span>Pol\u00edtica de Privacidad<\/span>\n\n  <span>Aviso Legal<\/span>\n\n  <span>Contacto<\/span>\n\n<\/div>\n\n\n<div class=\"or-copyright-main\">\n\n  \u00a9 2026 OR Music Live \u00b7\n  Todos los derechos reservados.\n\n<\/div>\n\n\n<div class=\"or-copyright-copy\">\n\n  El nombre OR Music Live, su identidad visual,\n  dise\u00f1o, contenidos originales, producciones\n  y elementos gr\u00e1ficos est\u00e1n protegidos\n  por las normas aplicables de propiedad intelectual.\n\n  Las marcas, nombres comerciales, im\u00e1genes,\n  composiciones y grabaciones musicales\n  pertenecientes a terceros son propiedad\n  de sus respectivos titulares.\n\n<\/div>\n\n\n<div class=\"or-creation-line\">\n\n  Concepto y creaci\u00f3n \u00b7\n\n  <strong>\n    Rances Olivero\n  <\/strong>\n\n  \u00b7 OR Music Live\n\n<\/div>\n\n\n<\/footer>\n\n\n<\/div>\n<\/div>\n\n\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@mux\/mux-player@3.13.4\" defer><\/script>\n<script>\n(function(){\nfunction initORTV(){\n  if(window.__OR_WEB_TV_RECOVERY_V1) return;\n  window.__OR_WEB_TV_RECOVERY_V1 = true;\nconst LIVE_STATUS_URL =\n\"https:\/\/video.ormusiclive.com:9444\/api\/tv\/public-status\";\n\nconst MUX_PLAYER_BASE =\n\"https:\/\/player.mux.com\/\";\n\nconst LIVE_CHAT_STATUS_URL =\n\"https:\/\/video.ormusiclive.com:9443\/api\/chat-live-status\";\n\n\nconst frame =\ndocument.getElementById(\n\"orLiveFrame\"\n);\n\nconst offline =\ndocument.getElementById(\n\"orOfflineScreen\"\n);\n\nconst soundOverlay =\ndocument.getElementById(\n\"orSoundOverlay\"\n);\n\nconst soundButton =\ndocument.getElementById(\n\"orSoundButton\"\n);\n\nconst badge =\ndocument.getElementById(\n\"orLiveBadge\"\n);\n\nconst badgeText =\ndocument.getElementById(\n\"orLiveBadgeText\"\n);\n\nconst state =\ndocument.getElementById(\n\"orLiveState\"\n);\n\nconst continueBox =\ndocument.getElementById(\n\"orContinueListening\"\n);\n\nconst actions =\ndocument.getElementById(\n\"orLiveActions\"\n);\n\nconst reloadButton =\ndocument.getElementById(\n\"orReloadLive\"\n);\n\nconst fullscreenButton =\ndocument.getElementById(\n\"orFullscreenLive\"\n);\n\nconst controlShield =\ndocument.getElementById(\n\"orTvControlShield\"\n);\n\nconst videoFrame =\ndocument.querySelector(\n\".orlive-video-frame\"\n);\n\n\nconst volumeControl =\ndocument.getElementById(\n\"orVolumeControl\"\n);\n\nconst volumeSlider =\ndocument.getElementById(\n\"orVolumeSlider\"\n);\n\nconst volumeValue =\ndocument.getElementById(\n\"orVolumeValue\"\n);\n\n\n\nconst liveChatWindow =\ndocument.getElementById(\"orLiveChatWindow\");\n\nconst liveChatLock =\ndocument.getElementById(\"orLiveChatLock\");\n\nconst liveChatPopupMode =\nnew URLSearchParams(window.location.search).get(\"or_chat_popup\") === \"live\";\n\n\n\nfunction renderLiveLargeChat(){\n\n  document.body.innerHTML = `\n    <div style=\"min-height:100vh;background:#050914;color:#fff;font-family:Arial,Helvetica,sans-serif;padding:12px;box-sizing:border-box;\">\n      <div style=\"max-width:1500px;margin:0 auto;\">\n        <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;\">\n          <div>\n            <div style=\"font-size:11px;letter-spacing:1.6px;color:#ff6cde;font-weight:900;\">OR MUSIC LIVE<\/div>\n            <div style=\"font-size:22px;font-weight:900;\">Chat de oyentes \u00b7 En Vivo<\/div>\n          <\/div>\n          <button type=\"button\" onclick=\"window.close()\" style=\"border:0;border-radius:10px;padding:10px 14px;background:#232b3a;color:#fff;font-weight:900;cursor:pointer;\">CERRAR VENTANA<\/button>\n        <\/div>\n\n        <div id=\"orLiveLargeChatNotice\"\n          style=\"display:none;min-height:78vh;border:1px solid rgba(255,255,255,.10);border-radius:16px;align-items:center;justify-content:center;text-align:center;padding:30px;box-sizing:border-box;background:#080d18;\">\n          <div>\n            <div style=\"font-size:40px;margin-bottom:12px;\">\ud83d\udd12<\/div>\n            <div style=\"font-size:24px;font-weight:900;\">Chat cerrado<\/div>\n            <div style=\"margin-top:8px;color:#aab4c3;\">El chat ya no est\u00e1 habilitado en la p\u00e1gina En Vivo.<\/div>\n          <\/div>\n        <\/div>\n\n        <iframe\n          id=\"orLiveLargeChatFrame\"\n          data-src=\"https:\/\/organizations.minnit.chat\/247725476591154\/Main\"\n          title=\"Chat OR Music Live\"\n          allow=\"clipboard-write\"\n          allowtransparency=\"true\"\n          style=\"display:block;width:100%;height:84vh;border:1px solid rgba(255,255,255,.10);border-radius:16px;background:#060814;\">\n        <\/iframe>\n      <\/div>\n    <\/div>`;\n\n  let largeChatBusy = false;\n  async function checkLargeLiveChat(){\n    if(largeChatBusy) return;\n    largeChatBusy = true;\n    try{\n      const data = await fetchJSON(LIVE_CHAT_STATUS_URL + \"?t=\" + Date.now(), 8000);\n      const enabled = !!(data && data.enabled);\n\n      const frame = document.getElementById(\"orLiveLargeChatFrame\");\n      const notice = document.getElementById(\"orLiveLargeChatNotice\");\n\n      if(frame){\n        frame.style.display = enabled ? \"block\" : \"none\";\n        if(enabled && !frame.hasAttribute(\"src\")) frame.src = frame.dataset.src;\n        if(!enabled) frame.removeAttribute(\"src\");\n      }\n\n      if(notice){\n        notice.style.display = enabled ? \"none\" : \"flex\";\n      }\n    }\n    catch(error){\n      const frame = document.getElementById(\"orLiveLargeChatFrame\");\n      const notice = document.getElementById(\"orLiveLargeChatNotice\");\n\n      if(frame){\n        frame.style.display = \"none\";\n        frame.removeAttribute(\"src\");\n      }\n\n      if(notice){\n        notice.style.display = \"flex\";\n      }\n    } finally { largeChatBusy = false; }\n  }\n\n  checkLargeLiveChat();\n  setInterval(checkLargeLiveChat,3000);\n}\n\n\nif(liveChatPopupMode){\n  renderLiveLargeChat();\n  return;\n}\n\n\n\nfunction clearWebPresentation(){\n\n  if(!videoFrame){\n    return;\n  }\n\n  videoFrame.classList.remove(\n    \"or-vertical-web\"\n  );\n\n  videoFrame.style.backgroundImage =\n    \"\";\n\n  videoFrame.style.removeProperty(\n    \"--or-live-vertical-width\"\n  );\n\n}\n\n\nfunction applyWebPresentation(data){\n\n  if(\n    !videoFrame ||\n    !data\n  ){\n    return;\n  }\n\n  const presentation =\n    data.web_presentation || {};\n\n  const isVertical =\n    presentation.orientation === \"vertical\";\n\n  const useBackground =\n    !!(\n      presentation.use_background &&\n      presentation.background_url &&\n      isVertical\n    );\n\n  if(!useBackground){\n\n    clearWebPresentation();\n    return;\n\n  }\n\n  let backgroundURL =\n    String(\n      presentation.background_url || \"\"\n    );\n\n  if(\n    backgroundURL &&\n    !\/^https?:\\\/\\\/\/i.test(\n      backgroundURL\n    )\n  ){\n\n    backgroundURL =\n      \"https:\/\/video.ormusiclive.com:9444\" +\n      (\n        backgroundURL.startsWith(\"\/\")\n          ? backgroundURL\n          : \"\/\" + backgroundURL\n      );\n\n  }\n\n  let ratioWidth = 9;\n  let ratioHeight = 16;\n\n  const ratioParts =\n    String(\n      presentation.aspect_ratio ||\n      \"9:16\"\n    ).split(\":\");\n\n  if(\n    ratioParts.length === 2 &&\n    Number(ratioParts[0]) > 0 &&\n    Number(ratioParts[1]) > 0\n  ){\n\n    ratioWidth =\n      Number(\n        ratioParts[0]\n      );\n\n    ratioHeight =\n      Number(\n        ratioParts[1]\n      );\n\n  }\n\n  \/*\n    El contenedor WEB es 16:9.\n    Calculamos cu\u00e1nto ocupa la se\u00f1al vertical\n    dentro de ese lienzo conservando su proporci\u00f3n.\n    Para 9:16 el resultado es 31.640625%.\n  *\/\n  const verticalWidthPercent =\n    (\n      (\n        ratioWidth \/\n        ratioHeight\n      ) \/\n      (\n        16 \/ 9\n      )\n    ) * 100;\n\n  videoFrame.classList.add(\n    \"or-vertical-web\"\n  );\n\n  videoFrame.style.backgroundImage =\n    'url(\"' +\n    backgroundURL +\n    '\")';\n\n  videoFrame.style.setProperty(\n    \"--or-live-vertical-width\",\n    Math.max(\n      10,\n      Math.min(\n        90,\n        verticalWidthPercent\n      )\n    ) + \"%\"\n  );\n\n}\n\n\n\n\/\/ OR_WEB_TV_RECOVERY_V1 \u2014 direct Mux element, single persistent player.\nlet isLive = null;\nlet currentTV = null;\nlet currentPlayerKey = '';\nlet currentSession = '';\nlet soundEnabled = false;\nlet statusBusy = false;\nlet mediaReady = false;\nlet receivedAt = 0;\nlet generation = 0;\nlet playAttempt = 0;\nlet awaitingGesture = false;\nlet lastProgress = performance.now();\nlet lastPosition = -1;\nlet lastSeek = 0;\nlet recoveryAt = 0;\nlet recoveryCount = 0;\nlet manualPause = false;\nlet syncing = false;\nlet loadingSource = false;\nlet waitingForData = false;\n\nasync function fetchJSON(url, timeout = 18000) {\n  const controller = new AbortController();\n  const timer = setTimeout(() => controller.abort(), timeout);\n  try {\n    const response = await fetch(url, {cache: 'no-store', signal: controller.signal});\n    if (!response.ok) throw new Error('HTTP ' + response.status);\n    return await response.json();\n  } finally { clearTimeout(timer); }\n}\n\nfunction statusAction(data) {\n  if (!data || data.ok === false || typeof data.available !== 'boolean') return 'unknown';\n  const mode = data.mode || 'live';\n  if (mode !== 'live' && mode !== 'replay') return 'unknown';\n  if (data.available) return data.playback_id ? 'play' : 'unknown';\n  if (mode === 'replay') {\n    return (data.replay?.ended === true || !data.playback_id) ? 'off' : 'unknown';\n  }\n  return ['idle','disabled','disconnected'].includes(data.live_status) ? 'off' : 'unknown';\n}\n\nfunction playerKey(data) {\n  return [data.mode || 'live', data.playback_id, data.replay?.asset_id || ''].join('|');\n}\n\nfunction showSoundButton(label) {\n  soundButton.textContent = label || '\ud83d\udd0a ACTIVAR SONIDO';\n  soundOverlay.style.display = 'block';\n}\n\nfunction updateSoundButton() {\n  if (!isLive) { soundOverlay.style.display = 'none'; return; }\n  if (awaitingGesture) { showSoundButton('\u25b6 REANUDAR CON SONIDO'); return; }\n  if (frame.muted && !soundEnabled) showSoundButton();\n  else soundOverlay.style.display = 'none';\n}\n\nfunction setMuxVolume(value) {\n  const volume = Math.max(0, Math.min(100, Number(value) || 0));\n  if (volumeValue) volumeValue.textContent = Math.round(volume) + '%';\n  if (mediaReady) frame.volume = volume \/ 100;\n}\n\n\/\/ play() is invoked immediately in the click stack, without reloading any URL.\nfunction playCurrent(userGesture = false) {\n  if (!isLive || !mediaReady) return;\n  const epoch = generation;\n  const attempt = ++playAttempt;\n  if (userGesture) {\n    soundEnabled = true;\n    awaitingGesture = false;\n    manualPause = false;\n    recoveryCount = 0;\n    if (Number(volumeSlider.value) === 0) volumeSlider.value = '100';\n    frame.muted = false;\n    setMuxVolume(volumeSlider.value);\n  }\n  let result;\n  try { result = frame.play(); }\n  catch (error) { playbackRejected(error, epoch, attempt, userGesture); return; }\n  Promise.resolve(result).then(() => {\n    if (epoch !== generation || attempt !== playAttempt || !isLive) return;\n    awaitingGesture = false;\n    updateSoundButton();\n  }).catch(error => playbackRejected(error, epoch, attempt, userGesture));\n}\n\nfunction playbackRejected(error, epoch, attempt, userGesture) {\n  if (epoch !== generation || attempt !== playAttempt || !isLive) return;\n  console.warn('OR TV play:', error.name || error);\n  if (error.name === 'NotAllowedError') {\n    awaitingGesture = true;\n    showSoundButton('\u25b6 REANUDAR CON SONIDO');\n    \/\/ A browser requiring a gesture must not trigger a reload loop.\n    if (!userGesture && !frame.muted) {\n      frame.muted = true;\n      Promise.resolve(frame.play()).catch(() => {});\n    }\n  } else if (error.name !== 'AbortError') {\n    showSoundButton('\u25b6 REINTENTAR REPRODUCCI\u00d3N');\n  }\n}\n\nfunction replayPosition() {\n  if (!currentTV || currentTV.mode !== 'replay') return 0;\n  const elapsed = Math.max(0, (performance.now() - receivedAt) \/ 1000);\n  let position = Math.max(0, Number(currentTV.replay?.position) || 0) + elapsed;\n  const duration = Number(frame.duration);\n  if (Number.isFinite(duration) && duration > 0) {\n    position = currentTV.replay?.loop ? position % duration : Math.min(position, Math.max(0,duration - .25));\n  }\n  return position;\n}\n\nfunction syncReplay(force = false) {\n  if (!isLive || !mediaReady || currentTV?.mode !== 'replay' || frame.readyState < 1) return;\n  if (performance.now() - receivedAt > 30000) return;\n  if (!force && (waitingForData || frame.seeking || performance.now() - lastSeek < 5000)) return;\n  const target = replayPosition();\n  if (force || Math.abs(Number(frame.currentTime) - target) >= 6) {\n    try {\n      syncing = true;\n      frame.currentTime = target;\n      lastSeek = performance.now();\n    } catch (error) { console.warn('OR TV sync:', error); }\n    finally { syncing = false; }\n  }\n}\n\nfunction activateLive(data) {\n  const newKey = playerKey(data);\n  const session = String(data.replay?.started_at || '');\n  const changed = isLive !== true || newKey !== currentPlayerKey;\n  const sessionChanged = session !== currentSession;\n  currentTV = data;\n  receivedAt = performance.now();\n  currentSession = session;\n  isLive = true;\n  applyWebPresentation(data);\n  badge.classList.remove('is-offline');\n  badge.classList.add('is-live');\n  badgeText.textContent = 'AL AIRE';\n  state.textContent = data.mode === 'replay' ? '\u25cf RETRANSMISI\u00d3N ACTIVA' : '\u25cf TRANSMISI\u00d3N ACTIVA';\n  state.classList.add('is-live');\n  offline.style.display = 'none';\n  continueBox.classList.add('is-hidden');\n  actions.style.display = 'grid';\n  volumeControl.style.display = 'flex';\n  const replay = data.mode === 'replay';\n  controlShield.style.display = replay ? 'block' : 'none';\n  frame.toggleAttribute('nohotkeys', replay);\n  frame.tabIndex = replay ? -1 : 0;\n  if (replay) frame.style.setProperty('--controls', 'none');\n  else frame.style.removeProperty('--controls');\n  if (!mediaReady) return;\n  frame.loop = replay && data.replay?.loop === true;\n  if (changed) {\n    generation++;\n    currentPlayerKey = newKey;\n    manualPause = false;\n    awaitingGesture = false;\n    recoveryCount = 0;\n    lastProgress = performance.now();\n    lastPosition = -1;\n    frame.muted = !soundEnabled;\n    setMuxVolume(volumeSlider.value);\n    frame.setAttribute('stream-type', replay ? 'on-demand' : 'live');\n    if (replay) frame.setAttribute('start-time', String(Math.max(0,Number(data.replay?.position) || 0)));\n    else frame.removeAttribute('start-time');\n    loadingSource = true;\n    frame.setAttribute('playback-id', String(data.playback_id));\n    playCurrent();\n    updateSoundButton();\n  } else {\n    syncReplay(sessionChanged);\n  }\n}\n\nfunction activateNormal() {\n  if (isLive === false) return;\n  generation++;\n  isLive = false;\n  currentTV = null;\n  currentPlayerKey = '';\n  currentSession = '';\n  manualPause = false;\n  if (mediaReady) {\n    frame.pause();\n    frame.removeAttribute('playback-id');\n    frame.removeAttribute('start-time');\n  }\n  clearWebPresentation();\n  badge.classList.remove('is-live');\n  badge.classList.add('is-offline');\n  badgeText.textContent = 'SIN CONTENIDO AL AIRE';\n  state.textContent = '\u25cf SIN CONTENIDO AL AIRE';\n  state.classList.remove('is-live');\n  offline.style.display = 'flex';\n  continueBox.classList.remove('is-hidden');\n  actions.style.display = 'none';\n  volumeControl.style.display = 'none';\n  soundOverlay.style.display = 'none';\n  controlShield.style.display = 'none';\n}\n\nasync function checkLive() {\n  if (statusBusy) return false;\n  statusBusy = true;\n  try {\n    const data = await fetchJSON(LIVE_STATUS_URL + '?check=' + Date.now());\n    const action = statusAction(data);\n    if (action === 'play') { activateLive(data); return true; }\n    if (action === 'off') { activateNormal(); return true; }\n    throw new Error('Estado temporalmente no confirmado');\n  } catch (error) {\n    console.warn('OR TV estado:', error.message);\n    \/\/ HTTP errors and unknown Mux status do not destroy a working player.\n    if (isLive !== true) {\n      badgeText.textContent = 'VERIFICANDO SE\u00d1AL';\n      state.textContent = '\u25cf REINTENTANDO CONEXI\u00d3N';\n    }\n    return false;\n  } finally { statusBusy = false; }\n}\n\nfunction reloadCurrent() {\n  if (!isLive || !mediaReady) return;\n  generation++;\n  manualPause = false;\n  lastProgress = performance.now();\n  recoveryAt = performance.now();\n  loadingSource = true;\n  frame.load();\n  playCurrent();\n}\n\nsoundButton.addEventListener('click', () => playCurrent(true));\nvolumeSlider.addEventListener('input', () => {\n  setMuxVolume(volumeSlider.value);\n  if (Number(volumeSlider.value) > 0 && frame.muted) playCurrent(true);\n});\nreloadButton.addEventListener('click', () => {\n  recoveryCount = 0;\n  reloadCurrent();\n  checkLive();\n});\nfullscreenButton.addEventListener('click', async () => {\n  if (!isLive) return;\n  try {\n    if (document.fullscreenElement) await document.exitFullscreen();\n    else if (videoFrame.requestFullscreen) await videoFrame.requestFullscreen();\n    else if (videoFrame.webkitRequestFullscreen) videoFrame.webkitRequestFullscreen();\n    else if (frame.media?.webkitEnterFullscreen) frame.media.webkitEnterFullscreen();\n  } catch (error) { console.warn('OR TV pantalla completa:', error); }\n});\n\nframe.addEventListener('loadedmetadata', () => {\n  if (!isLive) return;\n  syncReplay(true);\n});\nframe.addEventListener('timeupdate', () => {\n  if (!isLive || frame.seeking) return;\n  const position = Number(frame.currentTime);\n  if (position !== lastPosition) {\n    lastPosition = position;\n    lastProgress = performance.now();\n    recoveryCount = 0;\n  }\n});\nframe.addEventListener('waiting', () => { waitingForData = true; });\nframe.addEventListener('stalled', () => { waitingForData = true; });\nframe.addEventListener('playing', () => {\n  loadingSource = false;\n  waitingForData = false;\n  if (!isLive) return;\n  manualPause = false;\n  awaitingGesture = false;\n  lastProgress = performance.now();\n  updateSoundButton();\n});\nframe.addEventListener('pause', () => {\n  if (!isLive || syncing || loadingSource || frame.ended || frame.error) return;\n  if (currentTV?.mode === 'live' && frame.readyState >= 2 && !awaitingGesture) manualPause = true;\n});\nframe.addEventListener('ended', () => { checkLive(); });\nframe.addEventListener('error', () => {\n  if (!isLive) return;\n  console.warn('OR TV media:', frame.error);\n  showSoundButton('\u25b6 REINTENTAR REPRODUCCI\u00d3N');\n});\n\nfunction onReturn() {\n  if (document.hidden) return;\n  lastProgress = performance.now();\n  checkLive().then(() => {\n    if (isLive && frame.paused && !manualPause && !awaitingGesture) playCurrent();\n  });\n}\ndocument.addEventListener('visibilitychange', onReturn);\nwindow.addEventListener('pageshow', onReturn);\nwindow.addEventListener('online', onReturn);\n\nsetInterval(() => {\n  if (!isLive || !mediaReady || document.hidden || awaitingGesture || manualPause || frame.ended) return;\n  const now = performance.now();\n  if (now-lastProgress < 30000 || now-recoveryAt < 30000) return;\n  if (recoveryCount >= 3) {\n    showSoundButton('\u25b6 REINTENTAR REPRODUCCI\u00d3N');\n    return;\n  }\n  recoveryCount++;\n  reloadCurrent();\n}, 5000);\n\nconst readyWarning = setTimeout(() => {\n  if (!mediaReady) {\n    state.textContent = '\u25cf NO SE PUDO CARGAR EL REPRODUCTOR';\n    showSoundButton('CARGANDO REPRODUCTOR\u2026');\n  }\n}, 15000);\ncustomElements.whenDefined('mux-player').then(() => {\n  clearTimeout(readyWarning);\n  mediaReady = true;\n  if (currentTV) activateLive(currentTV);\n  else checkLive();\n});\ncheckLive();\nsetInterval(checkLive, 5000);\n\nconst liveChatAccess =\ndocument.createElement(\"div\");\n\nliveChatAccess.id = \"orLiveChatAccess\";\nliveChatAccess.style.cssText =\n\"display:none;position:absolute;inset:0;z-index:6;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;background:linear-gradient(145deg,rgba(5,9,20,.97),rgba(22,9,26,.97));\";\n\nliveChatAccess.innerHTML = `\n  <div style=\"width:min(520px,92%);padding:28px 24px;border-radius:18px;border:1px solid rgba(255,108,222,.28);background:rgba(18,12,28,.94);text-align:center;box-shadow:0 20px 55px rgba(0,0,0,.35);\">\n    <div style=\"font-size:11px;letter-spacing:1.8px;color:#ff6cde;font-weight:900;margin-bottom:8px;\">CHAT OR MUSIC LIVE<\/div>\n    <div style=\"font-size:26px;font-weight:900;color:#fff;margin-bottom:8px;\">Chat habilitado<\/div>\n    <div style=\"font-size:13px;line-height:1.55;color:#aab4c3;margin-bottom:20px;\">Entra a la sala en una ventana grande para seguir c\u00f3modamente toda la conversaci\u00f3n durante la transmisi\u00f3n.<\/div>\n    <button\n      type=\"button\"\n      id=\"orLiveChatEnterButton\"\n      style=\"width:100%;min-height:52px;border:0;border-radius:12px;background:linear-gradient(135deg,#a51b83,#7130a8);color:#fff;font-size:15px;font-weight:900;letter-spacing:.5px;cursor:pointer;\">\n      \u2197 ENTRAR AL CHAT\n    <\/button>\n  <\/div>`;\n\nif(liveChatWindow){\n  liveChatWindow.appendChild(liveChatAccess);\n}\n\nconst liveChatEnterButton =\ndocument.getElementById(\"orLiveChatEnterButton\");\n\n\nfunction setLiveChatState(enabled){\n\n  if(!liveChatWindow || !liveChatLock){\n    return;\n  }\n\n  const chatIframe =\n    liveChatWindow.querySelector(\"iframe\");\n\n  if(enabled){\n\n    liveChatWindow.classList.remove(\"is-locked\");\n    liveChatLock.style.display = \"none\";\n\n    if(chatIframe){\n      chatIframe.style.display = \"none\";\n    }\n\n    if(liveChatAccess){\n      liveChatAccess.style.display = \"flex\";\n    }\n\n  }\n  else{\n\n    liveChatWindow.classList.add(\"is-locked\");\n    liveChatLock.style.display = \"\";\n\n    if(chatIframe){\n      chatIframe.style.display = \"block\";\n    }\n\n    if(liveChatAccess){\n      liveChatAccess.style.display = \"none\";\n    }\n\n  }\n\n}\n\n\nlet chatBusy = false;\nasync function updateLiveChatState(){\n  if(chatBusy) return;\n  chatBusy = true;\n\n  try{\n\n    const data = await fetchJSON(LIVE_CHAT_STATUS_URL + \"?t=\" + Date.now(), 8000);\n\n    setLiveChatState(\n      !!(\n        data &&\n        data.enabled\n      )\n    );\n\n  }\n  catch(error){\n\n    \/* Seguridad: si no se puede consultar el panel,\n       el chat permanece bloqueado. *\/\n    setLiveChatState(false);\n\n  } finally { chatBusy = false; }\n\n}\n\n\nif(liveChatEnterButton){\n\n  liveChatEnterButton.addEventListener(\n    \"click\",\n    function(){\n\n      const url =\n        new URL(window.location.href);\n\n      url.searchParams.set(\n        \"or_chat_popup\",\n        \"live\"\n      );\n\n      window.open(\n        url.toString(),\n        \"ORMusicLiveChatLive\",\n        \"width=1180,height=850,resizable=yes,scrollbars=yes\"\n      );\n\n    }\n  );\n\n}\n\n\n\nupdateLiveChatState();\nsetInterval(updateLiveChatState, 5000);\n}\nif(document.readyState === 'loading') document.addEventListener('DOMContentLoaded',initORTV,{once:true});\nelse initORTV();\n})();\n<\/script>\n\n\n<style id=\"or-global-site-background-logo\">\n\/* OR-GLOBAL-SITE-BACKGROUND-LOGO *\/<\/p>\n<p>body{<br \/>\n  background-color:#050607!important;<br \/>\n}<\/p>\n<p>body::before{<br \/>\n  content:\"\";<br \/>\n  position:fixed;<br \/>\n  inset:0;<br \/>\n  background-image:url('https:\/\/ormusiclive.com\/wp-content\/uploads\/2026\/08\/or-music-logo-final.png');<br \/>\n  background-repeat:no-repeat;<br \/>\n  background-position:center 140px;<br \/>\n  background-size:min(1400px, 92vw);<br \/>\n  opacity:0.18;<br \/>\n  pointer-events:none;<br \/>\n  z-index:0;<br \/>\n}<\/p>\n<p>.wp-site-blocks,<br \/>\n.wp-block-post-content,<br \/>\n.entry-content,<br \/>\nmain,<br \/>\n.site-main,<br \/>\n.site-content,<br \/>\n.site,<br \/>\nheader,<br \/>\nfooter{<br \/>\n  position:relative;<br \/>\n  z-index:1;<br \/>\n}<\/p>\n<p>@media (max-width: 768px){<br \/>\n  body::before{<br \/>\n    background-size:115vw;<br \/>\n    background-position:center 100px;<br \/>\n    opacity:0.14;<br \/>\n  }<br \/>\n}<\/p>\n<p>\/* OR INTERNAL HEADER SPACING 411 *\/<\/p>\n<p>.orlive-header{<br \/>\n    width:100% !important;<br \/>\n    display:flex !important;<br \/>\n    justify-content:flex-end !important;<br \/>\n    align-items:center !important;<br \/>\n}<\/p>\n<p>.orlive-home{<br \/>\n    position:relative !important;<br \/>\n    top:auto !important;<br \/>\n    right:auto !important;<br \/>\n    left:auto !important;<br \/>\n    margin-left:auto !important;<br \/>\n}<\/p>\n<p>\/* OR HOME BUTTON FIXED LOWER 411 *\/<\/p>\n<p>.orlive-home{<br \/>\n    transform:translateY(12px) !important;<br \/>\n}<\/p>\n<p>.orlive-home:hover{<br \/>\n    transform:translateY(12px) !important;<br \/>\n}<\/p>\n<p>.orlive-home:active{<br \/>\n    transform:translateY(12px) scale(.98) !important;<br \/>\n}<\/p>\n<p>@media(max-width:700px){<br \/>\n    .orlive-home{<br \/>\n        transform:translateY(7px) !important;<br \/>\n    }<\/p>\n<p>    .orlive-home:hover{<br \/>\n        transform:translateY(7px) !important;<br \/>\n    }<\/p>\n<p>    .orlive-home:active{<br \/>\n        transform:translateY(7px) scale(.98) !important;<br \/>\n    }<br \/>\n}<\/p>\n<\/style>","protected":false},"excerpt":{"rendered":"<p>INICIO ORMUSICLIVE.COM \u00b7 SALA AUDIOVISUAL OR MUSIC LIVE TV Transmisiones en vivo, programas pregrabados, videos, entrevistas y contenido audiovisual en general para tu disfrute. Tambi\u00e9n encontrar\u00e1s sesiones de DJs, invitados, minitecas, eventos y producciones especiales de OR Music Live. VERIFICANDO SE\u00d1AL OR MUSIC LIVE TV \ud83d\udd0a ACTIVAR SONIDO OR MUSIC LIVE PR\u00d3XIMA TRANSMISI\u00d3N En este [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":223,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-411","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/pages\/411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ormusiclive.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=411"}],"version-history":[{"count":5,"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/pages\/411\/revisions"}],"predecessor-version":[{"id":660,"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/pages\/411\/revisions\/660"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ormusiclive.com\/index.php?rest_route=\/wp\/v2\/media\/223"}],"wp:attachment":[{"href":"https:\/\/ormusiclive.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}