

No hay nada en cache, vamos por los datos<p>"<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<script>\n(function () {\n    \/\/ Only act inside an Ajaxpress iframe (background or content frame).\n    \/\/ Top window: let GTM load normally.\n    if (window.self === window.top) return;\n\n    \/\/ Site Kit outputs the standard GTM snippet which inserts the gtm.js loader\n    \/\/ script via `f.parentNode.insertBefore(j, f)`. Intercepting that one call\n    \/\/ prevents the gtm.js network request entirely, which in turn prevents GTM\n    \/\/ from firing tags (GA4 config, Meta Pixel, etc.) inside the iframe.\n    \/\/\n    \/\/ Why this is safe: every analytics event dispatched from the iframe already\n    \/\/ uses window.top.dataLayer.push() &mdash; e.g. grc_iframe_ready, grc_scroll &mdash;\n    \/\/ so the top window's GTM instance receives and processes all events correctly.\n    \/\/ The iframe's own dataLayer is just a dead-letter queue with no consumer.\n    var _insertBefore = Node.prototype.insertBefore;\n    Node.prototype.insertBefore = function (newNode, refNode) {\n        if (newNode && newNode.tagName === 'SCRIPT') {\n            var src = newNode.src || '';\n            if (src.indexOf('googletagmanager.com\/gtm.js') !== -1) {\n                return newNode; \/\/ drop &mdash; gtm.js does not load in this context\n            }\n        }\n        return _insertBefore.call(this, newNode, refNode);\n    };\n\n    \/\/ Fallback: some GTM integrations use appendChild instead of insertBefore.\n    var _appendChild = Node.prototype.appendChild;\n    Node.prototype.appendChild = function (child) {\n        if (child && child.tagName === 'SCRIPT') {\n            var src = child.src || '';\n            if (src.indexOf('googletagmanager.com\/gtm.js') !== -1) {\n                return child;\n            }\n        }\n        return _appendChild.call(this, child);\n    };\n\n})();\n<\/script>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<meta name=\"robots\" content=\"noindex, follow\">\n    <script async src=\"https:\/\/securepubads.g.doubleclick.net\/tag\/js\/gpt.js\" crossorigin=\"anonymous\"><\/script>\n\n    <script>\n      \/\/ &#9472;&#9472;&#9472; Truvid frameElement spoof &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n      \/\/ Truvid detects iframes and, when it finds one, collapses its own container\n      \/\/ to 1 px so the creative does not load. Overriding frameElement to null makes\n      \/\/ it believe it is running in a top-level context inside the Ajaxpress iframe.\n      if (window.self !== window.top) {\n          try {\n              Object.defineProperty(window, 'frameElement', { get: function() { return null; } });\n          } catch(e) {}\n      }\n\n      \/\/ &#9472;&#9472;&#9472; GAM bootstrap &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n      window.googletag = window.googletag || {cmd: []};\n\n      \/\/ Top-level slot references. Set during slot definitions; reused across functions.\n      var slotTop06;\n      var slotInt;\n\n      \/\/ Tracks which ad div IDs have had googletag.display() called on them.\n      \/\/ display() must be called exactly once per slot lifecycle; after a full\n      \/\/ destroySlots() + redefine cycle the flag is reset so display() fires again.\n      var renderedSlots = {};\n\n      \/\/ All timer and observer handles in one place.\n      var playerRefreshTimer  = null;  \/\/ 3-min refresh for slotTop06 (radio player banner)\n      var idleRefreshTimer    = null;  \/\/ 60-s refresh for content slots\n      var intRefreshTimer     = null;  \/\/ 5-min teardown cycle for slotInt (Truvid)\n      var _intDismissObserver = null;  \/\/ MutationObserver watching for Truvid dismiss\n\n      \/\/ PHP-rendered once at page load. Controls which window context owns which slots.\n      var isAjaxpressActive = true;\n\n      \/\/ Skip Truvid interstitial and preroll on constrained devices (TVs, budget phones).\n      \/\/ UA strings cover Smart TV browsers (WebKit-based &mdash; no deviceMemory API):\n      \/\/   Tizen (Samsung), webOS (LG), BRAVIA (Sony), HbbTV (EU standard),\n      \/\/   SmartTV\/SMART-TV (generic), CrKey (Chromecast), AFTS (Fire TV), AppleTV.\n      \/\/ deviceMemory &le;1 GB catches low-RAM Chrome devices (budget phones, Android TV).\n      \/\/ Safari\/Firefox leave deviceMemory undefined &mdash; treated as capable.\n      var _isTVBrowser = \/Tizen|Web0S|webOS|BRAVIA|SmartTV|SMART-TV|HbbTV|NetCast|CrKey|AFTS|AppleTV\/i.test(navigator.userAgent);\n      var _isLowMemory = _isTVBrowser || (typeof navigator.deviceMemory !== 'undefined' && navigator.deviceMemory <= 1);\n      if (_isLowMemory) { console.log('GRC: constrained device (TV=' + _isTVBrowser + ' mem=' + (navigator.deviceMemory || 'n\/a') + ') &mdash; Truvid and preroll disabled.'); }\n\n      \/\/ Per-site slot configuration: prefix, player slot path\/div, top slot count,\n      \/\/ mobile size breakpoint. All other ad logic is site-agnostic.\n      var GRC_ADS_CONFIG = {\"prefix\":\"alfa-default\",\"playerSlot\":\"\\\/39772251\\\/Alfa_Player_Top\",\"playerDiv\":\"div-gpt-ad-t-06\",\"topCount\":4,\"mobileSizes\":[[320,50],[320,100],[300,250]],\"prerollSlot\":null};\n\n      \/\/ &#9472;&#9472;&#9472; GAM targeting helpers &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\n      \/\/ Derives GAM targeting values (seccion, tipo_pagina, url) from a URL path.\n      function getGrCTargeting(path) {\n          var cleanPath = path.replace(\/^\\\/|\\\/$\/g, '');\n          var segments  = cleanPath ? cleanPath.split('\/') : [];\n          var target    = { seccion: 'otras', tipo_pagina: 'otra', url: '\/' + cleanPath };\n\n          if (segments.length === 0) {\n              target.seccion     = 'home';\n              target.tipo_pagina = 'portada';\n          } else {\n              var cpts = ['notas', 'videos', 'galerias', 'locutores', 'programas', 'podcasts', 'canciones'];\n              var singularToPlural = {\n                  nota: 'notas', video: 'videos', galeria: 'galerias',\n                  locutor: 'locutores', programa: 'programas', podcast: 'podcasts',\n                  cancion: 'canciones', track: 'canciones'\n              };\n\n              var base          = segments[0];\n              var mappedSection = (cpts.indexOf(base) !== -1) ? base : singularToPlural[base];\n\n              if (mappedSection) {\n                  target.seccion = mappedSection;\n                  if      (segments.length === 1)                                        { target.tipo_pagina = 'portada';  }\n                  else if (segments[1] === 'category' || segments[1] === 'categoria')    { target.tipo_pagina = 'categoria'; }\n                  else                                                                    { target.tipo_pagina = 'articulo'; }\n              } else if (base.indexOf('categoria-de-') === 0) {\n                  target.seccion     = base.replace('categoria-de-', '') + 's';\n                  target.tipo_pagina = 'categoria';\n              } else if (base === 'tipo-de-cancion') {\n                  target.seccion     = 'canciones';\n                  target.tipo_pagina = 'categoria';\n              } else {\n                  target.seccion     = 'paginas';\n                  target.tipo_pagina = 'articulo';\n              }\n          }\n          return target;\n      }\n\n      \/\/ Writes targeting to both pubads (sent with every ad request) and each slot\n      \/\/ object (needed for per-slot targeting in Publisher Console during QA).\n      function applyTargetingToPubadsAndSlots(pageType, grcTargeting, path) {\n          googletag.setConfig({ targeting: {\n              page_type:   pageType,\n              seccion:     grcTargeting.seccion,\n              tipo_pagina: grcTargeting.tipo_pagina,\n              url:         grcTargeting.url,\n          }});\n          googletag.pubads().set('page_url', window.location.origin + path); \/\/ pubads().set() deprecated but no valid setConfig replacement yet\n\n          googletag.pubads().getSlots().forEach(function(slot) {\n              slot.setConfig({ targeting: {\n                  page_type:   pageType,\n                  seccion:     grcTargeting.seccion,\n                  tipo_pagina: grcTargeting.tipo_pagina,\n                  url:         grcTargeting.url,\n              }});\n          });\n      }\n\n      \/\/ Sets targeting from the current window.location (or a given path).\n      \/\/ page_type for the initial load comes from PHP (accurate); SPA navigations\n      \/\/ derive it from the path pattern in handleSpaNavigation().\n      function setGrcTargeting(path) {\n          path = path || window.location.pathname;\n          applyTargetingToPubadsAndSlots(\n              'other',\n              getGrCTargeting(path),\n              path\n          );\n          console.log('GRC setTargeting: path=' + path + ' isIframe=' + (window.self !== window.top));\n      }\n\n      \/\/ &#9472;&#9472;&#9472; GAM slot definitions &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n      googletag.cmd.push(function() {\n          \/\/ Base ad unit path for this site, e.g. '\/39772251\/laz-default'.\n          \/\/ Slot suffixes: -i (interstitial), -t-01&hellip;-t-N (top), -b-01&hellip;-b-05 (box).\n          var adUnit = '\/39772251\/' + GRC_ADS_CONFIG.prefix;\n\n          var mapping = googletag.sizeMapping()\n              .addSize([0,    0], GRC_ADS_CONFIG.mobileSizes)\n              .addSize([768,  0], [[728,  90], [728, 250]])\n              .addSize([1000, 0], [[728,  90], [970,  90], [970, 250], [970, 66], [728, 250]])\n              .build();\n\n          var isIframe = window.self !== window.top;\n\n          \/\/ Persistent slots live in the top window only &mdash; they survive SPA navigations\n          \/\/ and must not be inside the Ajaxpress content iframe.\n          if (!isIframe) {\n              if (!_isLowMemory) {\n                  slotInt = googletag.defineSlot(adUnit + '-i', [1, 1], 'div-gpt-ad-int')\n                      .addService(googletag.pubads());\n                  slotInt.setConfig({ safeFrame: { forceSafeFrame: false, sandbox: false } });\n              }\n\n              slotTop06 = googletag.defineSlot(\n                  GRC_ADS_CONFIG.playerSlot,\n                  [[320, 50], [320, 100], [728, 90], [970, 66], [970, 90]],\n                  GRC_ADS_CONFIG.playerDiv\n              ).defineSizeMapping(mapping).addService(googletag.pubads());\n          }\n\n          \/\/ Content slots live inside the Ajaxpress iframe. When Ajaxpress is disabled\n          \/\/ (e.g. for logged-in admins) they fall back to the top window.\n          if (isIframe || !isAjaxpressActive) {\n              var contentSizes = [[320, 50], [320, 100], [728, 90], [728, 250], [970, 90], [970, 66], [970, 250]];\n\n              \/\/ Define only as many top slots as this site has configured.\n              ['01', '02', '03', '04', '05'].slice(0, GRC_ADS_CONFIG.topCount).forEach(function(n) {\n                  googletag.defineSlot(adUnit + '-t-' + n, contentSizes, 'div-gpt-ad-top' + n)\n                      .defineSizeMapping(mapping).addService(googletag.pubads());\n              });\n\n              googletag.defineSlot(adUnit + '-b-01', [[300, 250], [336, 280]],                          'div-gpt-ad-box01').addService(googletag.pubads());\n              googletag.defineSlot(adUnit + '-b-02', [[300, 250], [300, 600], [336, 280], [160, 600]], 'div-gpt-ad-box02').addService(googletag.pubads());\n              googletag.defineSlot(adUnit + '-b-03', [[300, 250], [300, 600], [336, 280], [160, 600]], 'div-gpt-ad-box03').addService(googletag.pubads());\n              googletag.defineSlot(adUnit + '-b-04', [[300, 250], [300, 600], [336, 280], [160, 600]], 'div-gpt-ad-box04').addService(googletag.pubads());\n              googletag.defineSlot(adUnit + '-b-05', [[1, 1], [300, 250], [336, 280]],                 'div-gpt-ad-box05').addService(googletag.pubads());\n          }\n\n          \/\/ enableLazyLoad() is intentionally NOT used here.\n          \/\/ This page uses disableInitialLoad() + explicit refresh() to control fetch timing,\n          \/\/ so GPT's lazy loader adds no value. Worse, inside the Ajaxpress iframe GPT's\n          \/\/ IntersectionObserver evaluates slot positions relative to the iframe's own\n          \/\/ viewport, which may be clipped or off-screen during Ajaxpress transitions.\n          \/\/ This causes fetchMarginPercent to defer ALL fetches indefinitely &mdash; refresh()\n          \/\/ is accepted but no GAM request is ever sent (slotRenderEnded never fires).\n          \/\/ Without enableLazyLoad(), refresh() fires a single SRM request immediately,\n          \/\/ as expected.\n          googletag.setConfig({ singleRequest: true, disableInitialLoad: true });\n          googletag.pubads().collapseEmptyDivs();\n          googletag.enableServices();\n\n          if (!isIframe) {\n              \/\/ 3-minute refresh timer for the radio-player banner (slotTop06).\n              playerRefreshTimer = setInterval(function() {\n                  if (slotTop06) { googletag.pubads().refresh([slotTop06]); }\n              }, 180000);\n\n              \/\/ When the interstitial delivers a non-empty creative, wait 2 s for Truvid\n              \/\/ to inject its player DOM, then start watching for a dismiss gesture.\n              if (!_isLowMemory) {\n                  googletag.pubads().addEventListener('slotRenderEnded', function(event) {\n                      if (event.slot !== slotInt || event.isEmpty) return;\n                      setTimeout(watchForTruvidDismiss, 2000);\n                  });\n              }\n          }\n\n          \/\/ Detect and collapse blank passback fills.\n          \/\/ GAM reports these as \"filled\" (isEmpty=false) because it delivered the passback\n          \/\/ tag. But the passback network (TheMoneytizer, Smart AdServer, etc.) may win the\n          \/\/ auction and render nothing visible &mdash; just script tags, empty container divs, and\n          \/\/ nested iframes with no visual content. After 2.5 s, recursively scan the GPT\n          \/\/ friendly iframe and all accessible (same-origin) nested iframes for any element\n          \/\/ that would produce visible pixels: img, video, canvas, svg, or a CSS\n          \/\/ background-image. Cross-origin iframes cannot be inspected and are skipped (they\n          \/\/ are treated as blank &mdash; if they turn out to have content, the slot collapses, but\n          \/\/ this is preferable to leaving persistent blank space). If nothing renderable is\n          \/\/ found &rarr; hide the slot div so its space collapses.\n          \/\/ Persistent slots are excluded: the interstitial (Truvid) renders its player as\n          \/\/ floating DOM nodes outside the slot div, so the check would always return false.\n          function _hasVisualContent(doc, depth) {\n              if (!doc || !doc.body || depth > 5) return false;\n              var body = doc.body;\n              \/\/ Only explicit visual media elements count. CSS background-image is\n              \/\/ intentionally excluded: ad networks set background-image data URIs on\n              \/\/ their container divs as tracking beacons during framework init, even when\n              \/\/ they have no actual ad to display. These false-positives would prevent\n              \/\/ blank fills from collapsing. A real visible creative will always contain\n              \/\/ at least one <img>, <video>, <canvas>, or <svg> with positive dimensions\n              \/\/ somewhere in the accessible iframe chain.\n              if (Array.from(body.querySelectorAll('img, video, canvas, svg')).some(function(el) {\n                  return el.offsetWidth > 0 && el.offsetHeight > 0;\n              })) return true;\n              \/\/ Recurse into same-origin nested iframes only. Cross-origin iframes\n              \/\/ (SafeFrame, TheMoneytizer ad delivery) cannot be inspected &mdash; they are\n              \/\/ treated as blank, which is preferable to leaving persistent blank space.\n              return Array.from(body.querySelectorAll('iframe')).some(function(f) {\n                  if (f.offsetWidth <= 0 || f.offsetHeight <= 0) return false;\n                  try {\n                      var d = f.contentDocument;\n                      return d && _hasVisualContent(d, depth + 1);\n                  } catch(e) { return false; }\n              });\n          }\n\n          googletag.pubads().addEventListener('slotRenderEnded', function(event) {\n              if (event.isEmpty) return;\n              var slotId = event.slot.getSlotElementId();\n              if (slotId === 'div-gpt-ad-int' || slotId === GRC_ADS_CONFIG.playerDiv) return;\n              var slotEl = document.getElementById(slotId);\n              if (!slotEl) return;\n\n              setTimeout(function() {\n                  var friendlyIframe = slotEl.querySelector('iframe');\n                  if (!friendlyIframe) return;\n                  var idoc;\n                  try { idoc = friendlyIframe.contentDocument; } catch(e) { return; }\n                  if (!idoc) return;\n\n                  if (!_hasVisualContent(idoc, 0)) {\n                      console.log('GRC blank-passback: collapsing ' + slotEl.id);\n                      slotEl.style.display = 'none';\n                  }\n              }, 2500);\n          });\n      });\n\n      \/\/ &#9472;&#9472;&#9472; Truvid lifecycle &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\n      \/\/ Removes all Truvid DOM nodes and resets its global state. Called before each\n      \/\/ full GPT destroySlots() cycle so that:\n      \/\/   - .trv-player-container nodes injected outside div-gpt-ad-int are removed\n      \/\/   - blob: MediaSource URLs are revoked (releases MSE SourceBuffers + decoded frames)\n      \/\/   - window.trv_players hard refs that block GC are cleared\n      \/\/   - window.__tcfapiEventListeners dead closures (~50 MB\/min heap growth) are purged\n      function cleanupTruvidScripts() {\n          if (window.self !== window.top) return;\n\n          document.querySelectorAll('.trv-player-container, [id^=\"br_video_player_\"]').forEach(function(el) {\n              el.querySelectorAll('video').forEach(function(v) {\n                  try {\n                      v.pause();\n                      if (v.src && v.src.startsWith('blob:')) { URL.revokeObjectURL(v.src); }\n                      v.src = ''; v.load();\n                  } catch(e) {}\n              });\n              if (el.parentNode) { el.parentNode.removeChild(el); }\n          });\n\n          document.querySelectorAll('script[src*=\"trvdp.com\"], script[src*=\"truvidplayer.com\"]').forEach(function(s) {\n              if (s.parentNode) { s.parentNode.removeChild(s); }\n          });\n\n          try { if (Array.isArray(window.trv_players))            { window.trv_players = []; }            } catch(e) {}\n          try { if (window.truvid_protected)                      { window.truvid_protected = undefined; } } catch(e) {}\n          try { if (Array.isArray(window.__tcfapiEventListeners)) { window.__tcfapiEventListeners = []; }  } catch(e) {}\n      }\n\n      \/\/ Full teardown-and-reload cycle for the Truvid interstitial, run every 5 minutes.\n      \/\/ A plain googletag.pubads().refresh() replaces the creative visually but leaves the\n      \/\/ old IMA SDK instance alive with its HLS buffers and video decoder intact, causing\n      \/\/ the multi-GB RAM growth observed in long-lived tabs.\n      \/\/ Instead: destroy slot &rarr; cleanup Truvid DOM\/globals &rarr; redefine slot &rarr; display &rarr; refresh.\n      function startIntRefresh() {\n          if (window.self !== window.top) return;\n          if (intRefreshTimer) { clearInterval(intRefreshTimer); }\n\n          intRefreshTimer = setInterval(function() {\n              googletag.cmd.push(function() {\n                  console.log('GAM: 5-min interstitial teardown cycle.');\n\n                  \/\/ Disconnect dismiss watcher before teardown; the slotRenderEnded listener\n                  \/\/ will re-arm it once the new creative loads.\n                  if (_intDismissObserver) { _intDismissObserver.disconnect(); _intDismissObserver = null; }\n\n                  \/\/ Revoke blob: URLs on all video elements before removing their DOM nodes.\n                  document.querySelectorAll('video').forEach(function(v) {\n                      try {\n                          v.pause();\n                          if (v.src && v.src.startsWith('blob:')) { URL.revokeObjectURL(v.src); }\n                          v.src = ''; v.load();\n                      } catch(e) {}\n                  });\n\n                  \/\/ Attempt Truvid's own teardown API before removing its DOM.\n                  try {\n                      if (window.truvidPlayer && typeof window.truvidPlayer.destroy === 'function') {\n                          window.truvidPlayer.destroy();\n                      }\n                  } catch(e) {}\n\n                  cleanupTruvidScripts();\n\n                  \/\/ Destroying the GPT slot triggers IMA SDK destruction.\n                  if (slotInt) { googletag.destroySlots([slotInt]); slotInt = null; }\n\n                  \/\/ Redefine from scratch using the current site's prefix.\n                  slotInt = googletag.defineSlot('\/39772251\/' + GRC_ADS_CONFIG.prefix + '-i', [1, 1], 'div-gpt-ad-int')\n                      .addService(googletag.pubads());\n                  slotInt.setConfig({ safeFrame: { forceSafeFrame: false, sandbox: false } });\n\n                  \/\/ Carry current page-level targeting values over to the new slot instance.\n                  var _tgt = {};\n                  ['page_type', 'seccion', 'tipo_pagina', 'url'].forEach(function(k) {\n                      var v = googletag.pubads().getTargeting(k);\n                      if (v && v.length) { _tgt[k] = v[0]; }\n                  });\n                  slotInt.setConfig({ targeting: _tgt });\n\n                  \/\/ Reset the display flag: destroySlots() invalidated the previous display()\n                  \/\/ call, so it must be called again before refresh().\n                  renderedSlots['div-gpt-ad-int'] = false;\n                  googletag.display('div-gpt-ad-int');\n                  renderedSlots['div-gpt-ad-int'] = true;\n                  googletag.pubads().refresh([slotInt]);\n              });\n          }, 300000); \/\/ 5 minutes\n      }\n\n      \/\/ Watches for the user dismissing the Truvid player and cancels intRefreshTimer\n      \/\/ so no further Truvid instances load this session.\n      \/\/ Truvid hides (or removes) .trv-player-container when the user clicks close\/skip.\n      function watchForTruvidDismiss() {\n          if (window.self !== window.top) return;\n          if (_intDismissObserver) { _intDismissObserver.disconnect(); _intDismissObserver = null; }\n\n          \/\/ Poll until Truvid injects its player container (up to 10 s after creative load).\n          var _attempts = 0;\n          var _poll = setInterval(function() {\n              var container = document.querySelector('.trv-player-container');\n              if (!container) {\n                  if (++_attempts >= 20) { clearInterval(_poll); }\n                  return;\n              }\n              clearInterval(_poll);\n\n              var _isHidden = function() {\n                  var el = document.querySelector('.trv-player-container');\n                  return !el\n                      || el.offsetParent === null\n                      || getComputedStyle(el).display    === 'none'\n                      || getComputedStyle(el).visibility === 'hidden';\n              };\n\n              _intDismissObserver = new MutationObserver(function() {\n                  if (!_isHidden()) return;\n                  console.log('GAM: Truvid dismissed &mdash; stopping interstitial auto-refresh.');\n                  if (intRefreshTimer)     { clearInterval(intRefreshTimer);     intRefreshTimer     = null; }\n                  if (_intDismissObserver) { _intDismissObserver.disconnect();   _intDismissObserver = null; }\n              });\n\n              \/\/ Watch the container for style\/class changes (Truvid hides via CSS).\n              _intDismissObserver.observe(container, { attributes: true, attributeFilter: ['style', 'class'] });\n              \/\/ Also watch the parent in case Truvid removes the node entirely.\n              if (container.parentNode) {\n                  _intDismissObserver.observe(container.parentNode, { childList: true });\n              }\n          }, 500);\n      }\n\n      \/\/ &#9472;&#9472;&#9472; Ad refresh &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\n      \/\/ Refreshes all content slots every 60 s (except slotTop06 and slotInt which\n      \/\/ have their own dedicated timers).\n      function startIdleRefresh() {\n          if (idleRefreshTimer) { clearInterval(idleRefreshTimer); }\n          idleRefreshTimer = setInterval(function() {\n              googletag.cmd.push(function() {\n                  var slots = googletag.pubads().getSlots().filter(function(slot) {\n                      var id = slot.getSlotElementId();\n                      return id !== GRC_ADS_CONFIG.playerDiv && id !== 'div-gpt-ad-int';\n                  });\n                  if (slots.length > 0) {\n                      console.log('GAM: 60-s idle refresh for ' + slots.length + ' slots.');\n                      googletag.pubads().refresh(slots);\n                  }\n              });\n          }, 60000);\n      }\n\n      \/\/ Calls googletag.display() on each ad div that hasn't been displayed yet, then\n      \/\/ fires a single refresh() for all slots owned by this window context.\n      \/\/ Also creates #div-gpt-ad-int here (at DOMContentLoaded) rather than in wp_footer\n      \/\/ so that #ajaxpress-persist is guaranteed to exist before we append to it.\n      function refreshGrcAds() {\n          if (window.self === window.top && !document.getElementById('div-gpt-ad-int')) {\n              var _intDiv  = document.createElement('div');\n              _intDiv.id   = 'div-gpt-ad-int';\n              var _persist = document.getElementById('ajaxpress-persist');\n              (_persist || document.body).appendChild(_intDiv);\n          }\n\n          \/\/ In the Ajaxpress iframe the player slot is defined in the top window only.\n          \/\/ The PHP shortcode still renders div-gpt-ad-top06 (player) into the iframe DOM,\n          \/\/ leaving unfilled 50 px divs. Hide every instance and its wrapper immediately.\n          if (window.self !== window.top) {\n              document.querySelectorAll('[id=\"' + GRC_ADS_CONFIG.playerDiv + '\"]').forEach(function(el) {\n                  var wrapper = el.closest('.grc-ad-wrapper');\n                  if (wrapper) { wrapper.style.display = 'none'; }\n                  else         { el.style.display = 'none'; }\n              });\n          }\n\n          googletag.cmd.push(function() {\n              var isIframe = window.self !== window.top;\n              var slots    = [];\n\n              document.querySelectorAll(\n                  '.grc-ad-wrapper div[id^=\"div-gpt-ad-\"], #div-gpt-ad-int, #' + GRC_ADS_CONFIG.playerDiv\n              ).forEach(function(ad) {\n                  var isPersistent = (ad.id === 'div-gpt-ad-int' || ad.id === GRC_ADS_CONFIG.playerDiv);\n                  if (isIframe  &&  isPersistent)                    return; \/\/ top-window-only slots\n                  if (!isIframe && isAjaxpressActive && !isPersistent) return; \/\/ iframe-only slots\n\n                  if (!renderedSlots[ad.id]) {\n                      googletag.display(ad.id);\n                      renderedSlots[ad.id] = true;\n                  }\n\n                  var slotObj = googletag.pubads().getSlots().find(function(s) {\n                      return s.getSlotElementId() === ad.id;\n                  });\n                  if (slotObj) { slots.push(slotObj); }\n              });\n\n              if (slots.length > 0) {\n                  console.log('GRC refreshGrcAds: page_type=' + googletag.pubads().getTargeting('page_type')\n                      + ' slots=' + slots.map(function(s) { return s.getSlotElementId(); }).join(','));\n                  googletag.pubads().refresh(slots);\n              }\n\n              startIdleRefresh();\n              if (!_isLowMemory) startIntRefresh();\n          });\n      }\n\n      \/\/ &#9472;&#9472;&#9472; Initialisation &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n      document.addEventListener('DOMContentLoaded', function() {\n          \/\/ Ajaxpress creates #ajaxpress-container before DOMContentLoaded; set its\n          \/\/ title so screen readers and Lighthouse don't flag it as unlabelled.\n          if (window.self === window.top) {\n              var _ac = document.getElementById('ajaxpress-container');\n              if (_ac && !_ac.title) _ac.title = 'Contenido';\n\n          }\n\n          googletag.cmd.push(function() {\n              setGrcTargeting();\n\n              \/\/ Wait until this frame is the active Ajaxpress container before loading ads.\n              \/\/ During prefetch this window runs as #ajaxpress-background; polling every\n              \/\/ 100 ms catches the moment Ajaxpress promotes it to #ajaxpress-container.\n              (function checkAndRefresh() {\n                  var isBg = false;\n                  try {\n                      if (window.self !== window.top) {\n                          var frames = window.top.document.querySelectorAll('iframe');\n                          for (var i = 0; i < frames.length; i++) {\n                              if (frames[i].contentWindow === window.self) {\n                                  isBg = frames[i].id === 'ajaxpress-background';\n                                  break;\n                              }\n                          }\n                      }\n                  } catch(e) {}\n\n                  if (isBg) {\n                      setTimeout(checkAndRefresh, 100);\n                  } else {\n                      refreshGrcAds();\n                      if (window.dataLayer) { window.dataLayer.push({ event: 'grc_iframe_ready' }); }\n                  }\n              }());\n\n              \/\/ Cancel the idle refresh timer when Ajaxpress navigates away from this\n              \/\/ iframe. Without this, the timer fires in the old (background) JS context\n              \/\/ until the GC eventually collects it.\n              if (window.self !== window.top) {\n                  window.addEventListener('beforeunload', function() {\n                      if (idleRefreshTimer) { clearInterval(idleRefreshTimer); idleRefreshTimer = null; }\n                  });\n              }\n          });\n      });\n\n      \/\/ &#9472;&#9472;&#9472; SPA navigation (top window only) &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n      if (window.self === window.top) {\n\n          \/\/ Pause all refresh timers while the tab is hidden; resume when visible again.\n          \/\/ setInterval keeps firing in background tabs &mdash; each hidden-tab interstitial\n          \/\/ refresh loads a full Truvid video player into memory, never freeing it.\n          document.addEventListener('visibilitychange', function() {\n              if (document.hidden) {\n                  if (idleRefreshTimer)    { clearInterval(idleRefreshTimer);    idleRefreshTimer    = null; }\n                  if (playerRefreshTimer)  { clearInterval(playerRefreshTimer);  playerRefreshTimer  = null; }\n                  if (intRefreshTimer)     { clearInterval(intRefreshTimer);     intRefreshTimer     = null; }\n                  if (_intDismissObserver) { _intDismissObserver.disconnect();   _intDismissObserver = null; }\n              } else {\n                  googletag.cmd.push(function() {\n                      startIdleRefresh();\n                      if (!_isLowMemory) startIntRefresh();\n                      if (!_isLowMemory) watchForTruvidDismiss();\n                      if (!playerRefreshTimer) {\n                          playerRefreshTimer = setInterval(function() {\n                              if (slotTop06) { googletag.pubads().refresh([slotTop06]); }\n                          }, 180000);\n                      }\n                  });\n              }\n          });\n\n          \/\/ Track the last path we refreshed ads for. Ajaxpress calls pushState on init\n          \/\/ (to re-push or set up state for the current URL), which would otherwise trigger\n          \/\/ handleSpaNavigation and overwrite the PHP-accurate page_type with 'other'.\n          var _lastRefreshedPath = window.location.pathname;\n\n          function handleSpaNavigation() {\n              googletag.cmd.push(function() {\n                  var newPath = window.location.pathname;\n                  if (newPath === _lastRefreshedPath) {\n                      console.log('GRC handleSpaNavigation: skipped (same path)');\n                      return;\n                  }\n                  _lastRefreshedPath = newPath;\n                  console.log('GRC handleSpaNavigation: ' + newPath);\n\n                  var pageType     = newPath.indexOf('\/notas\/') !== -1 ? 'post' : 'other';\n                  var grcTargeting = getGrCTargeting(newPath);\n                  applyTargetingToPubadsAndSlots(pageType, grcTargeting, newPath);\n\n                  if (slotInt) { googletag.pubads().refresh([slotInt]); }\n\n                  startIdleRefresh();\n                  if (!_isLowMemory) startIntRefresh();\n                  scheduleBackgroundFrameCleanup();\n              });\n          }\n\n          \/\/ Hook into the History API to detect Ajaxpress SPA navigations.\n          var _origPushState = history.pushState;\n          history.pushState = function() {\n              var result = _origPushState.apply(this, arguments);\n              setTimeout(handleSpaNavigation, 200); \/\/ let Ajaxpress finish DOM work first\n              return result;\n          };\n\n          window.addEventListener('popstate', function() {\n              setTimeout(handleSpaNavigation, 200);\n          });\n\n          \/\/ &#9472;&#9472;&#9472; Ajaxpress background-frame memory management &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n          \/\/ After each SPA navigation the previous page lives in #ajaxpress-background.\n          \/\/ We free the heavy sub-resources (ad iframes, video, audio) but keep the\n          \/\/ page HTML intact so Ajaxpress can swap the frame back into view on a\n          \/\/ back-navigation without needing a network reload.\n          \/\/\n          \/\/ Do NOT set bg.src = 'about:blank': that fires Ajaxpress's load listener\n          \/\/ which calls history.pushState for the current URL, adding a phantom history\n          \/\/ entry that makes the back button require extra presses.\n          \/\/\n          \/\/ Do NOT null img.src: images are part of the page content Ajaxpress reuses\n          \/\/ on back-navigation.\n          \/\/\n          \/\/ IMPORTANT: Never replace the <iframe> element itself. Ajaxpress stores a\n          \/\/ direct JS reference to it at init; replaceChild() breaks all navigation.\n          function scheduleBackgroundFrameCleanup() {\n              var bg = document.getElementById('ajaxpress-background');\n              if (!bg || !bg.src || bg.src === 'about:blank') return;\n\n              console.log('Releasing ajaxpress-background (' + (bg.src.split('\/').pop() || bg.src) + ').');\n\n              try {\n                  var doc = bg.contentDocument;\n                  if (doc && doc.body) {\n                      doc.querySelectorAll('iframe').forEach(function(f) { f.remove(); });\n                      doc.querySelectorAll('video').forEach(function(v) {\n                          try {\n                              v.pause();\n                              if (v.src && v.src.startsWith('blob:')) { URL.revokeObjectURL(v.src); }\n                              v.src = ''; v.load(); v.remove();\n                          } catch(e) {}\n                      });\n                      doc.querySelectorAll('audio').forEach(function(a) {\n                          try { a.pause(); a.src = ''; a.load(); a.remove(); } catch(e) {}\n                      });\n                  }\n              } catch(e) {}\n          }\n\n      } \/\/ end top-window-only block\n\n      \/\/ &#9472;&#9472;&#9472; Radio preroll (top window only) &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n      \/\/ #persistent-radio-container is a position:fixed widget in the TOP WINDOW\n      \/\/ that floats above the Ajaxpress content iframe. It is always in the top\n      \/\/ window regardless of whether Ajaxpress is active for the current user.\n      \/\/\n      \/\/ A transparent overlay sits inside the container. The first time the user\n      \/\/ clicks the widget, the overlay captures the click, plays the VAST preroll\n      \/\/ via IMA SDK, and removes itself. Subsequent clicks reach the radio iframe\n      \/\/ directly.\n      \/\/\n      \/\/ Design notes:\n      \/\/   - IMA SDK is preloaded eagerly so adDisplayContainer.initialize() fires\n      \/\/     synchronously inside the click handler &mdash; required on iOS Safari.\n      \/\/   - Any IMA error (no fill, load failure, ad blocker) silently removes the\n      \/\/     overlay so the radio always remains usable. The preroll is enhancement-only.\n      \/\/   - _prerollDone persists in the top-window context; the preroll fires at\n      \/\/     most once per full page load (not once per SPA navigation).\n      if (GRC_ADS_CONFIG.prerollSlot && window.self === window.top && !_isLowMemory) {\n          (function() {\n              \/\/ On iOS the overlay intercepts the first tap but audio can only start\n              \/\/ from a direct user gesture on the Flutter iframe itself &mdash; postMessage\n              \/\/ from an async preroll teardown does not carry gesture context across\n              \/\/ frame boundaries. Skip the overlay so the tap reaches Flutter directly.\n              \/\/ The preroll is also blocked by Safari's default content blocker on iOS,\n              \/\/ so skipping it has no revenue impact.\n              if (\/iPhone|iPad|iPod\/.test(navigator.userAgent)) return;\n\n              var _prerollDone = false;\n              var _imaLoaded   = false;\n              var _imaLoading  = false;\n              var _overlay     = null;\n\n              \/\/ Load IMA SDK lazily on first hover\/touch of the radio container.\n              \/\/ Eager page-load injection added ~200 KB of JS parse+compile on every\n              \/\/ visit even when the user never touches the radio widget. On hover the\n              \/\/ SDK typically finishes loading before the subsequent click, so the\n              \/\/ preroll still fires. If the user clicks before load completes,\n              \/\/ _onFirstClick falls through to the existing silent-skip path.\n              function _loadIMA() {\n                  if (_imaLoaded || _imaLoading) return;\n                  _imaLoading = true;\n                  var s = document.createElement('script');\n                  s.src = 'https:\/\/imasdk.googleapis.com\/js\/sdkloader\/ima3.js';\n                  s.onload = function() { _imaLoaded = true; };\n                  document.head.appendChild(s);\n              }\n\n              function _attachOverlay() {\n                  var container = document.getElementById('persistent-radio-container');\n                  if (!container || _overlay || _prerollDone) return;\n\n                  \/\/ Start loading IMA SDK when the user first approaches the widget.\n                  container.addEventListener('pointerenter', _loadIMA, { once: true });\n                  container.addEventListener('touchstart',   _loadIMA, { once: true, passive: true });\n\n                  \/\/ The container is position:fixed from the theme &mdash; no need to change\n                  \/\/ its position. The overlay fills it with position:absolute; inset:0\n                  \/\/ and sits above the cross-origin radio iframe (z-index 1 suffices).\n                  _overlay = document.createElement('div');\n                  _overlay.id = 'grc-preroll-overlay';\n                  _overlay.style.cssText = 'position:absolute;inset:0;z-index:1;cursor:pointer;pointer-events:auto;';\n                  container.appendChild(_overlay);\n                  _overlay.addEventListener('click', _onFirstClick, { once: true });\n              }\n\n              function _removeOverlay() {\n                  if (_overlay) { _overlay.remove(); _overlay = null; }\n              }\n\n              function _onFirstClick() {\n                  _prerollDone = true;\n                  _removeOverlay();\n                  if (typeof window._grcPauseYouTube === 'function') window._grcPauseYouTube();\n                  \/\/ Pause podcasts immediately &mdash; same pattern as the 'radio-playing' handler\n                  \/\/ in grc-audio-manager.php. Without this, podcasts keep playing during the\n                  \/\/ preroll and only pause later when 'radio-playing' fires post-teardown.\n                  try {\n                      var _ac = document.getElementById('ajaxpress-container');\n                      if (_ac && _ac.contentWindow._grcPausePodcasts) _ac.contentWindow._grcPausePodcasts();\n                  } catch(e) {}\n                  if (typeof window._grcPausePodcasts === 'function') window._grcPausePodcasts();\n                  \/\/ If IMA SDK did not finish loading (or is blocked), skip silently.\n                  if (!_imaLoaded || typeof google === 'undefined' || !google.ima) { return; }\n                  _showPreroll();\n              }\n\n              function _showPreroll() {\n                  \/\/ Full-screen shell in the top window.\n                  var shell = document.createElement('div');\n                  shell.id = 'grc-preroll-shell';\n                  shell.style.cssText = 'position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,0.85);display:flex;align-items:center;justify-content:center;';\n\n                  var adContainer = document.createElement('div');\n                  adContainer.id = 'grc-preroll-ad-container';\n                  \/\/ 4:3 matches the 640&times;480 ad unit; max-width keeps it inside viewport.\n                  adContainer.style.cssText = 'position:relative;width:640px;max-width:100vw;max-height:75vh;aspect-ratio:4\/3;overflow:hidden;';\n\n                  var video = document.createElement('video');\n                  video.id = 'grc-preroll-video';\n                  video.style.cssText = 'width:100%;height:100%;background:#000;';\n                  video.playsInline = true;\n\n                  adContainer.appendChild(video);\n                  shell.appendChild(adContainer);\n                  document.body.appendChild(shell);\n\n                  function _teardown() {\n                      if (shell.parentNode) { shell.parentNode.removeChild(shell); }\n\n                      \/\/ Signal the GRC radio widget to start playing.\n                      \/\/ postMessage('play') fires from an async callback &mdash; no user gesture.\n                      \/\/ iOS is excluded from this entire IIFE (early return above), so all\n                      \/\/ remaining code here runs on non-iOS platforms only.\n                      var _container = document.getElementById('persistent-radio-container');\n                      if (_container) {\n                          var _rf = _container.querySelector('iframe');\n                          if (_rf) {\n                              try { _rf.contentWindow.postMessage('play', 'https:\/\/app.grc.mx'); } catch(e) {}\n                          }\n                          \/\/ Visual cue: pulse the widget 3&times; so the user knows it's ready.\n                          _container.style.animation = 'none';\n                          _container.offsetWidth; \/\/ force reflow to restart animation\n                          _container.style.animation = 'grc-preroll-pulse 0.5s ease-in-out 3';\n                      }\n                  }\n\n                  \/\/ adDisplayContainer.initialize() MUST be called synchronously from a\n                  \/\/ user gesture. _onFirstClick() is the click handler, so we are here.\n                  var adDisplayContainer = new google.ima.AdDisplayContainer(adContainer, video);\n                  adDisplayContainer.initialize();\n\n                  var adsLoader = new google.ima.AdsLoader(adDisplayContainer);\n\n                  adsLoader.addEventListener(\n                      google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n                      function(evt) {\n                          var adsManager = evt.getAdsManager(video);\n                          [\n                              google.ima.AdEvent.Type.ALL_ADS_COMPLETED,\n                              google.ima.AdEvent.Type.SKIPPED,\n                          ].forEach(function(t) { adsManager.addEventListener(t, _teardown); });\n                          adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, _teardown);\n                          try {\n                              var adW = adContainer.offsetWidth  || 640;\n                              var adH = adContainer.offsetHeight || 480;\n                              adsManager.init(adW, adH, google.ima.ViewMode.NORMAL);\n                              adsManager.start();\n                          } catch(e) { _teardown(); }\n                      }\n                  );\n\n                  adsLoader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, _teardown);\n\n                  var req = new google.ima.AdsRequest();\n                  req.adTagUrl = 'https:\/\/pubads.g.doubleclick.net\/gampad\/ads'\n                      + '?iu='              + encodeURIComponent(GRC_ADS_CONFIG.prerollSlot)\n                      + '&description_url=' + encodeURIComponent(window.location.href)\n                      + '&tfcd=0&npa=0'\n                      + '&sz=640x480%7C400x300'\n                      + '&gdfp_req=1&output=vast'\n                      + '&unviewed_position_start=1'\n                      + '&env=vp&impl=s'\n                      + '&correlator='      + Date.now();\n                  req.linearAdSlotWidth     = 640;\n                  req.linearAdSlotHeight    = 480;\n                  req.nonLinearAdSlotWidth  = 640;\n                  req.nonLinearAdSlotHeight = 150;\n\n                  adsLoader.requestAds(req);\n              }\n\n              \/\/ Attach overlay once the DOM is ready.\n              if (document.readyState !== 'loading') {\n                  _attachOverlay();\n              } else {\n                  document.addEventListener('DOMContentLoaded', _attachOverlay);\n              }\n              \/\/ Handle deferred container creation (requestIdleCallback in grc-radio-player.php).\n              document.addEventListener('grc:radio-container-ready', _attachOverlay);\n          }());\n      }\n    <\/script>\n\n    <style>\n        \/* Truvid player floats above all page content. *\/\n        .trv-player-container > .trv-wrapper { z-index: 999999; }\n        \/* Ad wrappers stretch to the full content column width. *\/\n        .grc-ad-wrapper { width: 100%; }\n        \/* Collapse the wrapper when GPT has hidden the inner slot div.\n           GPT sets display:none on the slot div itself; without this rule\n           the wrapper block still occupies vertical space in the layout. *\/\n        .grc-ad-wrapper:has(> div[style*=\"display: none\"]),\n        .grc-ad-wrapper:has(> div[style*=\"display:none\"]) { display: none; }\n        \/* Pulse animation shown on the radio widget after a preroll ends,\n           inviting the user to tap if postMessage autoplay is not yet supported. *\/\n        @keyframes grc-preroll-pulse {\n            0%, 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); }\n            50%       { box-shadow: 0 0 0 6px rgba(255,255,255,0.7); }\n        }\n    <\/style>\n    <script>\nwindow.dataLayer = window.dataLayer || [];\nfunction gtag(){ dataLayer.push(arguments); }\ngtag('consent', 'update', {\n    analytics_storage:   'granted',\n    ad_storage:          'granted',\n    ad_user_data:        'granted',\n    ad_personalization:  'granted'\n});\n<\/script>\n    \n\t<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n\t<meta property=\"og:locale\" content=\"es_MX\">\n\t<meta property=\"og:title\" content=\"Page not found - Alfa 91.3 FM\">\n\t<meta property=\"og:site_name\" content=\"Alfa 91.3 FM\">\n\t<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/alfaenlinea.com\\\/#website\",\"url\":\"https:\\\/\\\/alfaenlinea.com\\\/\",\"name\":\"Alfa 91.3 FM\",\"description\":\"Donde todo nace\",\"publisher\":{\"@id\":\"https:\\\/\\\/alfaenlinea.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/alfaenlinea.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/alfaenlinea.com\\\/#organization\",\"name\":\"Alfa 91.3 FM\",\"url\":\"https:\\\/\\\/alfaenlinea.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/alfaenlinea.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/grc-media.nyc3.cdn.digitaloceanspaces.com\\\/uploads\\\/sites\\\/4\\\/2026\\\/05\\\/play_250_250.webp\",\"contentUrl\":\"https:\\\/\\\/grc-media.nyc3.cdn.digitaloceanspaces.com\\\/uploads\\\/sites\\\/4\\\/2026\\\/05\\\/play_250_250.webp\",\"width\":250,\"height\":250,\"caption\":\"Alfa 91.3 FM\"},\"image\":{\"@id\":\"https:\\\/\\\/alfaenlinea.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n\t<!-- \/ Yoast SEO plugin. -->\n\n\n<title>&iexcl;Ups! Esta p&aacute;gina no existe<\/title>\n<link rel=\"dns-prefetch\" href=\"\/\/www.googletagmanager.com\">\n<link rel=\"dns-prefetch\" href=\"\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\">\n<link rel=\"alternate\" type=\"application\/rss+xml\" title=\"Alfa 91.3 FM &raquo; Feed\" href=\"https:\/\/alfaenlinea.com\/feed\/\">\n<link rel=\"alternate\" type=\"application\/rss+xml\" title=\"Alfa 91.3 FM &raquo; RSS de los comentarios\" href=\"https:\/\/alfaenlinea.com\/comments\/feed\/\">\n<style id=\"wp-img-auto-sizes-contain-inline-css\">\nimg:is([sizes=auto i],[sizes^=\"auto,\" i]){contain-intrinsic-size:3000px 1500px}\n\/*# sourceURL=wp-img-auto-sizes-contain-inline-css *\/\n<\/style>\n<style id=\"wp-block-image-inline-css\">\n.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image\/svg+xml;utf8,<svg viewBox=\"0 0 100 100\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><circle cx=\"50\" cy=\"50\" r=\"50\"\/>');mask-image:url('data:image\/svg+xml;utf8,<svg viewBox=\"0 0 100 100\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><circle cx=\"50\" cy=\"50\" r=\"50\"\/>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:#5a5a5a40;border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto #5a5a5a40;outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:#5a5a5a40;border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))\/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))\/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/image\/style.min.css *\/\n<\/style>\n<style id=\"tw-block-image-inline-css\">\n.wp-block-image[style*=\"--shape\"] img{-webkit-clip-path:var(--shape);clip-path:var(--shape)}.wp-block-image.tw-caption-large figcaption{font-size:inherit}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/image\/style.css *\/\n<\/style>\n<style id=\"wp-block-group-inline-css\">\n.wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/group\/style.min.css *\/\n<\/style>\n<style id=\"tw-block-group-inline-css\">\n:where(.tw-has-hover-bg,.tw-has-hover-text,.tw-has-hover-border,.tw-has-hover-shadow){transition:background-color .2s,color .2s,box-shadow .2s,border-color .2s}.tw-has-hover-bg:is(:hover,:focus-within){background-color:var(--hover-background-color)!important}.tw-has-hover-text:is(:hover,:focus-within){color:var(--hover-text-color)!important}.tw-has-hover-text:is(:hover,:focus-within) a{color:var(--hover-text-color)}.tw-has-hover-border:is(:hover,:focus-within){border-color:var(--hover-border-color)!important}.tw-has-hover-shadow:is(:hover,:focus-within){box-shadow:var(--hover-box-shadow)!important}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/group\/style.css *\/\n<\/style>\n<style id=\"wp-block-search-inline-css\">\n.wp-block-search__button{margin-left:10px;word-break:normal}.wp-block-search__button.has-icon{line-height:0}.wp-block-search__button svg{fill:currentColor;height:1.25em;min-height:24px;min-width:24px;vertical-align:text-bottom;width:1.25em}:where(.wp-block-search__button){border:1px solid #ccc;padding:6px 10px}.wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search__label{width:100%}.wp-block-search.wp-block-search__button-only .wp-block-search__button{box-sizing:border-box;display:flex;flex-shrink:0;justify-content:center;margin-left:0;max-width:100%}.wp-block-search.wp-block-search__button-only .wp-block-search__inside-wrapper{min-width:0!important;transition-property:width}.wp-block-search.wp-block-search__button-only .wp-block-search__input{flex-basis:100%;transition-duration:.3s}.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden,.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{overflow:hidden}.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden .wp-block-search__input{border-left-width:0!important;border-right-width:0!important;flex-basis:0;flex-grow:0;margin:0;min-width:0!important;padding-left:0!important;padding-right:0!important;width:0!important}:where(.wp-block-search__input){appearance:none;border:1px solid #949494;flex-grow:1;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin-left:0;margin-right:0;min-width:3rem;padding:8px;text-decoration:unset!important;text-transform:inherit}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){background-color:#fff;border:1px solid #949494;box-sizing:border-box;padding:4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{border:none;border-radius:0;padding:0 4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{outline:none}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){padding:4px 8px}.wp-block-search.aligncenter .wp-block-search__inside-wrapper{margin:auto}.wp-block[data-align=right] .wp-block-search.wp-block-search__button-only .wp-block-search__inside-wrapper{float:right}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/search\/style.min.css *\/\n<\/style>\n<style id=\"tw-block-search-inline-css\">\n.wp-block-search:not(.wp-block-search__button-inside).is-style-tw-underline .wp-block-search__input{border:none;border-bottom:1px solid var(--tw-block-border-color);border-top:1px solid transparent!important}.wp-block-search.wp-block-search__button-inside.is-style-tw-underline .wp-block-search__inside-wrapper{border:none;border-bottom:1px solid var(--tw-block-border-color);padding:0}.wp-block-search.is-style-tw-underline .wp-block-search__input{background:transparent;color:currentcolor;padding-inline-start:0;border-radius:0}.wp-block-search.is-style-tw-underline .wp-block-search__input:focus{outline:none}.wp-block-search__button-inside.is-style-tw-underline.wp-block-search__icon-button .wp-block-search__button:not(.has-background){padding:0;background:transparent;color:currentcolor;border:0}.wp-block-search__button-only.is-style-tw-underline .wp-block-search__button:not(.has-background){background:transparent;color:currentcolor}.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{width:auto!important}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/search\/style.css *\/\n<\/style>\n<style id=\"wp-block-navigation-link-inline-css\">\n.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{outline:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/navigation-link\/style.min.css *\/\n<\/style>\n<link rel=\"stylesheet\" id=\"wp-block-navigation-css\" href=\"https:\/\/alfaenlinea.com\/wp-includes\/blocks\/navigation\/style.min.css?ver=7.0\" media=\"all\">\n<link rel=\"stylesheet\" id=\"tw-block-navigation-css\" href=\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/navigation\/style.css?ver=7.0\" media=\"all\">\n<style id=\"wp-block-heading-inline-css\">\nh1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/heading\/style.min.css *\/\n<\/style>\n<style id=\"wp-block-paragraph-inline-css\">\n.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*=\"writing-mode:vertical-lr\"],p.has-text-align-right[style*=\"writing-mode:vertical-rl\"]{rotate:180deg}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/paragraph\/style.min.css *\/\n<\/style>\n<style id=\"wp-block-button-inline-css\">\n.wp-block-button__link{align-content:center;box-sizing:border-box;cursor:pointer;display:inline-block;height:100%;text-align:center;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}:root :where(.wp-block-button .wp-block-button__link.is-style-outline),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link){border:2px solid;padding:.667em 1.333em}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color)){color:currentColor}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background)){background-color:initial;background-image:none}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/button\/style.min.css *\/\n<\/style>\n<style id=\"tw-block-button-inline-css\">\n.wp-block-button.tw-has-icon .wp-block-button__link,.wp-block-button__link:has(img){display:flex;align-items:center;gap:.375em}.wp-block-button.tw-has-icon.has-text-align-center .wp-block-button__link,.wp-block-button__link:has(img).has-text-align-center{justify-content:center}.wp-block-button.tw-has-icon svg{fill:currentColor;height:1.25em;width:1.25em;position:relative}.wp-block-button:is(.has-icon__chevron-left,.has-icon__chevron-right) .wp-block-button__link{gap:0}.wp-block-button:has(.screen-reader-text) img{border-radius:inherit}dialog.tw-lightbox-video{background:unset;border:none;overflow:hidden;position:fixed;inset:0;width:100%;height:100%;padding:48px var(--wp--style--root--padding-left,16px);z-index:100000;max-width:100%;max-height:100%;box-sizing:border-box}.tw-lightbox-video-container{max-width:var(--wp--style--global--wide-size,980px);margin:auto;z-index:9999999999;height:100%;display:flex;justify-content:center;align-items:center;position:relative}.tw-lightbox-video-container :is(iframe,video){width:100%;max-height:100%;border:0;aspect-ratio:16\/9}.tw-lightbox-9-16 :is(iframe,video){aspect-ratio:9\/16;width:auto}@media(orientation:landscape){.tw-lightbox-full .tw-lightbox-video-container{max-width:none}.tw-lightbox-full .tw-lightbox-video-container :is(iframe,video){width:auto;height:100%;max-width:100%}}.tw-lightbox-video .tw-lightbox-close-button{align-items:center;cursor:pointer;display:flex;justify-content:center;min-height:40px;min-width:40px;padding:0;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000;fill:var(--wp--preset--color--contrast,#000);background:none!important;border:none}.tw-lightbox-video::backdrop{background-color:var(--wp--preset--color--base,#fff)}.tw-lightbox-dark .tw-lightbox-close-button{fill:#fff}.tw-lightbox-dark::backdrop{background-color:#000}html:has(dialog.tw-lightbox-video[open]){overflow:hidden}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/button\/style.css *\/\n<\/style>\n<style id=\"wp-block-buttons-inline-css\">\n.wp-block-buttons{box-sizing:border-box}.wp-block-buttons.is-vertical{flex-direction:column}.wp-block-buttons.is-vertical>.wp-block-button:last-child{margin-bottom:0}.wp-block-buttons>.wp-block-button{display:inline-block;margin:0}.wp-block-buttons.is-content-justification-left{justify-content:flex-start}.wp-block-buttons.is-content-justification-left.is-vertical{align-items:flex-start}.wp-block-buttons.is-content-justification-center{justify-content:center}.wp-block-buttons.is-content-justification-center.is-vertical{align-items:center}.wp-block-buttons.is-content-justification-right{justify-content:flex-end}.wp-block-buttons.is-content-justification-right.is-vertical{align-items:flex-end}.wp-block-buttons.is-content-justification-space-between{justify-content:space-between}.wp-block-buttons.aligncenter{text-align:center}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{margin-left:auto;margin-right:auto;width:100%}.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons .wp-block-button__link{width:100%}.wp-block-button.aligncenter{text-align:center}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/buttons\/style.min.css *\/\n<\/style>\n<style id=\"wp-block-post-featured-image-inline-css\">\n.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image :where(img){box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:initial}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/post-featured-image\/style.min.css *\/\n<\/style>\n<style id=\"tw-block-post-featured-image-inline-css\">\n.wp-block-post-featured-image[style*=\"--shape\"] :where(img,span),.wp-block-post-featured-image[style*=\"--shape\"].tw-hover-zoom{-webkit-clip-path:var(--shape);clip-path:var(--shape)}.wp-block-post-featured-image.tw-hover-fade :where(img,span){transition:opacity .2s}.tw-stretched-link:hover .wp-block-post-featured-image.tw-hover-fade img,.wp-block-post-featured-image.tw-hover-fade:where(:hover,:focus-within) img{opacity:.9}.wp-block-post-featured-image.tw-hover-zoom{overflow:hidden}.wp-block-post-featured-image.tw-hover-zoom img{transition:transform .4s}.tw-stretched-link:hover .wp-block-post-featured-image.tw-hover-zoom img,.wp-block-post-featured-image.tw-hover-zoom:where(:hover,:focus-within) img{transform:scale(1.05)}.wp-block-post-featured-image[style*=\"--shape\"].tw-hover-zoom img{-webkit-clip-path:none;clip-path:none}.wp-block-post-featured-image.tw-hover-overlay span{transition:opacity .2s}.tw-stretched-link:not(:hover):not(:focus-within)>.wp-block-post-featured-image.tw-hover-overlay span,:not(.tw-stretched-link)>.wp-block-post-featured-image.tw-hover-overlay:not(:hover):not(:focus-within) span{opacity:0}.wp-block-post-featured-image.tw-hover-radius :where(img,span){transition:border-radius .2s}.tw-stretched-link:hover .wp-block-post-featured-image.tw-hover-radius :where(img,span),.wp-block-post-featured-image.tw-hover-radius:where(:hover,:focus-within) :where(img,span){border-radius:40px!important}:where(.wp-block-post-featured-image) .wp-element-caption{margin-top:.5em}.wp-block-post-featured-image .wp-element-caption a{display:unset}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/post-featured-image\/style.css *\/\n<\/style>\n<style id=\"wp-block-post-title-inline-css\">\n.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title :where(a){display:inline-block;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/post-title\/style.min.css *\/\n<\/style>\n<style id=\"wp-block-post-template-inline-css\">\n.wp-block-post-template{list-style:none;margin-block:0;max-width:100%;padding:0}@media(max-width:767px){.wp-block-post-template:where(.is-layout-grid):not(.tw-is-responsive){grid-template-columns:1fr}}@media(min-width:768px)and (max-width:1023px){.wp-block-post-template:where(.is-layout-grid):where(.columns-4,.columns-5,.columns-6):not(.tw-is-responsive){grid-template-columns:repeat(2,minmax(0,1fr))}}.wp-block-post-template.is-flex-container{display:grid;gap:var(--tw-gap-y,var(--wp--style--block-gap)) var(--tw-gap-x,var(--wp--style--block-gap))}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}:where(.wp-block-post-template.is-layout-flow):not(.is-flex-container)>*+*{margin-block-start:var(--tw-gap-y,var(--wp--style--block-gap))}@media(min-width:768px){.wp-block-post-template.is-flex-container{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.wp-block-post-template.columns-3.is-flex-container{grid-template-columns:repeat(3,minmax(0,1fr))}.wp-block-post-template.columns-4.is-flex-container{grid-template-columns:repeat(4,minmax(0,1fr))}.wp-block-post-template.columns-5.is-flex-container{grid-template-columns:repeat(5,minmax(0,1fr))}.wp-block-post-template.columns-6.is-flex-container{grid-template-columns:repeat(6,minmax(0,1fr))}}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/post-template\/block.css *\/\n<\/style>\n<style id=\"tw-block-post-template-inline-css\">\n.wp-block-post-template.tw-valign-top{align-items:flex-start}.wp-block-post-template.tw-valign-center{align-items:center}.wp-block-post-template.tw-valign-bottom{align-items:flex-end}@media(max-width:1023px){.tw-md-columns-2 .wp-block-post:nth-child(3){display:none}}@media(max-width:767px){.wp-block-post-template.is-flex-container{column-gap:min(var(--tw-gap-x,var(--wp--style--block-gap,1.25em)),20px)}.wp-block-post-template-is-layout-grid.tw-cols-small,.wp-block-post-template.is-flex-container.tw-cols-small{grid-template-columns:repeat(2,minmax(0,1fr))!important}.wp-block-post-template.tw-alt-spacer:not(.tw-cols-small) .wp-block-post .wp-block-spacer{display:none}}@media(min-width:768px){.wp-block-post-template.tw-cols-small.columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}.wp-block-post-template.tw-cols-small.columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(width >= 768px)and (width < 1024px){.wp-block-post-template.tw-cols-large.columns-2{grid-template-columns:repeat(1,minmax(0,1fr))}.wp-block-post-template.tw-cols-large.columns-3,.wp-block-post-template.tw-md-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}.wp-block-post-template.tw-cols-small:is(.columns-5,.columns-6){grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1024px)and (max-width:1199px){.wp-block-post-template.tw-cols-large.columns-4{grid-template-columns:repeat(3,minmax(0,1fr))}.wp-block-post-template.tw-cols-large.columns-5,.wp-block-post-template:is(.tw-cols-small,.tw-cols-large).columns-6{grid-template-columns:repeat(4,minmax(0,1fr))}}.wp-block-query .tw-stretched-link :where(.wp-block-post-terms:not(.tw-no-link),.wp-block-post-author__name,.wp-block-read-more,.wp-block-gallery,.wp-block-video,.wp-block-embed,.wp-block-audio){position:relative;z-index:2}.wp-block-query .wp-block-post .tw-stretched-link a::after{content:none}.wp-block-query .wp-block-post .tw-stretched-link :where(.wp-block-post-title,.wp-block-post-excerpt__more-text) a::after{content:\"\"}.wp-block-post-template.tw-alt-columns .wp-block-post:nth-child(even) .wp-block-columns{flex-direction:row-reverse}.wp-block-post-template.tw-alt-spacer .wp-block-post:nth-child(odd) .wp-block-spacer{display:none}.wp-block-post-template.tw-alt-grid>.wp-block-post:nth-child(3n+1){grid-column:1\/-1}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/post-template\/style.css *\/\n<\/style>\n<style id=\"wp-interactivity-router-animations-inline-css\">\n\t\t\t.wp-interactivity-router-loading-bar {\n\t\t\t\tposition: fixed;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100vw;\n\t\t\t\tmax-width: 100vw !important;\n\t\t\t\theight: 4px;\n\t\t\t\tbackground-color: #000;\n\t\t\t\topacity: 0\n\t\t\t}\n\t\t\t.wp-interactivity-router-loading-bar.start-animation {\n\t\t\t\tanimation: wp-interactivity-router-loading-bar-start-animation 30s cubic-bezier(0.03, 0.5, 0, 1) forwards\n\t\t\t}\n\t\t\t.wp-interactivity-router-loading-bar.finish-animation {\n\t\t\t\tanimation: wp-interactivity-router-loading-bar-finish-animation 300ms ease-in\n\t\t\t}\n\t\t\t@keyframes wp-interactivity-router-loading-bar-start-animation {\n\t\t\t\t0% { transform: scaleX(0); transform-origin: 0 0; opacity: 1 }\n\t\t\t\t100% { transform: scaleX(1); transform-origin: 0 0; opacity: 1 }\n\t\t\t}\n\t\t\t@keyframes wp-interactivity-router-loading-bar-finish-animation {\n\t\t\t\t0% { opacity: 1 }\n\t\t\t\t50% { opacity: 1 }\n\t\t\t\t100% { opacity: 0 }\n\t\t\t}\n\/*# sourceURL=wp-interactivity-router-animations-inline-css *\/\n<\/style>\n<style id=\"wp-block-site-logo-inline-css\">\n.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}:root :where(.wp-block-site-logo.is-style-rounded){border-radius:9999px}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/site-logo\/style.min.css *\/\n<\/style>\n<style id=\"wp-block-site-tagline-inline-css\">\n.wp-block-site-tagline{box-sizing:border-box}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/site-tagline\/style.min.css *\/\n<\/style>\n<style id=\"wp-block-columns-inline-css\">\n.wp-block-columns{align-items:normal!important;box-sizing:border-box;display:flex;flex-wrap:wrap!important}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start!important}.wp-block-columns.are-vertically-aligned-center{align-items:center!important}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end!important}@media(min-width:768px){.wp-block-columns{flex-wrap:nowrap!important}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}@media(max-width:767px){.wp-block-columns:not(.is-not-stacked-on-mobile):not(.tw-cols-stack-sm-2)>.wp-block-column{flex-basis:100%!important}.wp-block-columns.tw-cols-stack-sm-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}.wp-block-column{flex-grow:1;min-width:0;word-break:break-word;overflow-wrap:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/columns\/block.css *\/\n<\/style>\n<style id=\"tw-block-columns-inline-css\">\n.tw-stretched-blocks>.wp-block-column,.wp-block-column.tw-stack{display:flex;flex-direction:column}.tw-stretched-blocks>.wp-block-column>:is(.wp-block-image,.wp-block-post-featured-image,.wp-block-group:only-child,.wp-block-cover,.wp-block-columns,.wp-block-gallery){flex-grow:1}.tw-stretched-blocks>.wp-block-column>:is(.wp-block-image,.wp-block-post-featured-image) img,.wp-block-column.is-vertically-aligned-stretch .wp-block-image:only-child img{min-height:100%;object-fit:cover}.tw-stretched-blocks>.wp-block-column>:is(.wp-block-image,.wp-block-post-featured-image) a,.wp-block-column.is-vertically-aligned-stretch .wp-block-image:only-child{height:100%}.wp-block-columns[style*=radius]{overflow:hidden}@media(min-width:768px)and (max-width:1023px){.wp-block-columns.tw-cols-stack-md-2:not(.tw-justify-center){display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.wp-block-columns.tw-cols-stack-md-2.tw-justify-center{flex-wrap:wrap!important}.wp-block-columns.tw-cols-stack-md-2.tw-justify-center>.wp-block-column{flex-basis:calc(50% - 16px);flex-grow:0}}@media(max-width:1023px){.wp-block-columns.tw-cols-stack-md{flex-wrap:wrap!important}.wp-block-columns.tw-cols-stack-md>.wp-block-column{flex-basis:100%!important}}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/columns\/style.css *\/\n<\/style>\n<style id=\"wp-block-spacer-inline-css\">\n.wp-block-spacer{clear:both}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/blocks\/spacer\/style.min.css *\/\n<\/style>\n<style id=\"wp-emoji-styles-inline-css\">\n\n\timg.wp-smiley, img.emoji {\n\t\tdisplay: inline !important;\n\t\tborder: none !important;\n\t\tbox-shadow: none !important;\n\t\theight: 1em !important;\n\t\twidth: 1em !important;\n\t\tmargin: 0 0.07em !important;\n\t\tvertical-align: -0.1em !important;\n\t\tbackground: none !important;\n\t\tpadding: 0 !important;\n\t}\n\/*# sourceURL=wp-emoji-styles-inline-css *\/\n<\/style>\n<style id=\"wp-block-library-inline-css\">\n:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}\n\/*# sourceURL=\/wp-includes\/css\/dist\/block-library\/common.min.css *\/\n<\/style>\n<link rel=\"stylesheet\" id=\"twentig-blocks-css\" href=\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/common.css?ver=986d0f8995a973a9f696\" media=\"all\">\n<style id=\"twentig-blocks-inline-css\">\n@media (width < 768px) { .tw-sm-hidden { display: none !important; }}@media (768px <= width < 1024px) { .tw-md-hidden { display: none !important; }}@media (width >= 1024px) { .tw-lg-hidden { display: none !important; }}\n\/*# sourceURL=twentig-blocks-inline-css *\/\n<\/style>\n<link rel=\"stylesheet\" id=\"twentig-blocks-compat-css\" href=\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/twentig\/dist\/blocks\/compat.css?ver=986d0f8995a973a9f696\" media=\"all\">\n<style id=\"global-styles-inline-css\">\n:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4\/3;--wp--preset--aspect-ratio--3-4: 3\/4;--wp--preset--aspect-ratio--3-2: 3\/2;--wp--preset--aspect-ratio--2-3: 2\/3;--wp--preset--aspect-ratio--16-9: 16\/9;--wp--preset--aspect-ratio--9-16: 9\/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--base: #FFFFFF;--wp--preset--color--contrast: #111111;--wp--preset--color--accent-1: #FFEE58;--wp--preset--color--accent-2: #F6CFF4;--wp--preset--color--accent-3: #503AA8;--wp--preset--color--accent-4: #686868;--wp--preset--color--accent-5: #FBFAF3;--wp--preset--color--accent-6: color-mix(in srgb, currentColor 20%, transparent);--wp--preset--color--custom-fondo: #000000;--wp--preset--color--custom-fondo-2: #444444;--wp--preset--color--custom-highlight: #180426;--wp--preset--color--custom-off-white: #eae8ed;--wp--preset--color--custom-highlight-2: #03ddcf;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 0.875rem;--wp--preset--font-size--medium: clamp(1rem, 1rem + ((1vw - 0.2rem) * 0.196), 1.125rem);--wp--preset--font-size--large: clamp(1.125rem, 1.125rem + ((1vw - 0.2rem) * 0.392), 1.375rem);--wp--preset--font-size--x-large: clamp(1.75rem, 1.75rem + ((1vw - 0.2rem) * 0.392), 2rem);--wp--preset--font-size--xx-large: clamp(2.15rem, 2.15rem + ((1vw - 0.2rem) * 1.333), 3rem);--wp--preset--font-family--manrope: Manrope, sans-serif;--wp--preset--font-family--fira-code: \"Fira Code\", monospace;--wp--preset--spacing--20: 10px;--wp--preset--spacing--30: 20px;--wp--preset--spacing--40: 30px;--wp--preset--spacing--50: clamp(30px, 5vw, 50px);--wp--preset--spacing--60: clamp(30px, 7vw, 70px);--wp--preset--spacing--70: clamp(50px, 7vw, 90px);--wp--preset--spacing--80: clamp(70px, 10vw, 140px);--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:root { --wp--style--global--content-size: 645px;--wp--style--global--wide-size: 1340px; }:where(body) { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 0rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 0rem; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 0rem;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 0rem;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 0rem;}:root :where(.is-layout-grid){gap: 0rem;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{background-color: var(--wp--preset--color--custom-off-white);color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--manrope);font-size: var(--wp--preset--font-size--large);font-weight: 300;letter-spacing: -0.1px;line-height: 1.4;--wp--style--root--padding-top: 0px;--wp--style--root--padding-right: var(--wp--preset--spacing--50);--wp--style--root--padding-bottom: 0px;--wp--style--root--padding-left: var(--wp--preset--spacing--50);}a:where(:not(.wp-element-button)){color: currentColor;text-decoration: none;}:root :where(a:where(:not(.wp-element-button)):hover){text-decoration: none;}h1, h2, h3, h4, h5, h6{font-weight: 400;letter-spacing: -0.1px;line-height: 1.125;}h1{font-size: var(--wp--preset--font-size--xx-large);}h2{font-size: var(--wp--preset--font-size--x-large);}h3{font-size: var(--wp--preset--font-size--large);}h4{font-size: var(--wp--preset--font-size--medium);}h5{font-size: var(--wp--preset--font-size--small);letter-spacing: 0.5px;}h6{font-size: var(--wp--preset--font-size--small);font-weight: 700;letter-spacing: 1.4px;text-transform: uppercase;}:root :where(.wp-element-button, .wp-block-button__link){background-color: var(--wp--preset--color--contrast);border-width: 0;color: var(--wp--preset--color--base);font-family: inherit;font-size: var(--wp--preset--font-size--medium);font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: 1rem;padding-right: 2.25rem;padding-bottom: 1rem;padding-left: 2.25rem;text-decoration: none;text-transform: inherit;}:root :where(.wp-element-button:hover, .wp-block-button__link:hover){background-color: color-mix(in srgb, var(--wp--preset--color--contrast) 85%, transparent);border-color: transparent;color: var(--wp--preset--color--base);}:root :where(.wp-element-button:focus, .wp-block-button__link:focus){outline-color: var(--wp--preset--color--accent-4);outline-offset: 2px;}:root :where(.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption){font-size: var(--wp--preset--font-size--small);line-height: 1.4;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-base-color{color: var(--wp--preset--color--base) !important;}.has-contrast-color{color: var(--wp--preset--color--contrast) !important;}.has-accent-1-color{color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-color{color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-color{color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-color{color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-color{color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-color{color: var(--wp--preset--color--accent-6) !important;}.has-custom-fondo-color{color: var(--wp--preset--color--custom-fondo) !important;}.has-custom-fondo-2-color{color: var(--wp--preset--color--custom-fondo-2) !important;}.has-custom-highlight-color{color: var(--wp--preset--color--custom-highlight) !important;}.has-custom-off-white-color{color: var(--wp--preset--color--custom-off-white) !important;}.has-custom-highlight-2-color{color: var(--wp--preset--color--custom-highlight-2) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-base-background-color{background-color: var(--wp--preset--color--base) !important;}.has-contrast-background-color{background-color: var(--wp--preset--color--contrast) !important;}.has-accent-1-background-color{background-color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-background-color{background-color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-background-color{background-color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-background-color{background-color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-background-color{background-color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-background-color{background-color: var(--wp--preset--color--accent-6) !important;}.has-custom-fondo-background-color{background-color: var(--wp--preset--color--custom-fondo) !important;}.has-custom-fondo-2-background-color{background-color: var(--wp--preset--color--custom-fondo-2) !important;}.has-custom-highlight-background-color{background-color: var(--wp--preset--color--custom-highlight) !important;}.has-custom-off-white-background-color{background-color: var(--wp--preset--color--custom-off-white) !important;}.has-custom-highlight-2-background-color{background-color: var(--wp--preset--color--custom-highlight-2) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-base-border-color{border-color: var(--wp--preset--color--base) !important;}.has-contrast-border-color{border-color: var(--wp--preset--color--contrast) !important;}.has-accent-1-border-color{border-color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-border-color{border-color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-border-color{border-color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-border-color{border-color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-border-color{border-color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-border-color{border-color: var(--wp--preset--color--accent-6) !important;}.has-custom-fondo-border-color{border-color: var(--wp--preset--color--custom-fondo) !important;}.has-custom-fondo-2-border-color{border-color: var(--wp--preset--color--custom-fondo-2) !important;}.has-custom-highlight-border-color{border-color: var(--wp--preset--color--custom-highlight) !important;}.has-custom-off-white-border-color{border-color: var(--wp--preset--color--custom-off-white) !important;}.has-custom-highlight-2-border-color{border-color: var(--wp--preset--color--custom-highlight-2) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-manrope-font-family{font-family: var(--wp--preset--font-family--manrope) !important;}.has-fira-code-font-family{font-family: var(--wp--preset--font-family--fira-code) !important;}\/* --- EXCLUSIVOS DE ALFA --- *\/\n.swiper-slide.swiper-slide-visible .wp-block-button {\n    border: 1px solid white;\n    border-radius: 32px;\n}\nmain#wp--skip-link--target {\n    margin-top: 50px;\n}\n#videos .wp-block-group.alignfull.is-layout-flow.wp-block-group-is-layout-flow {\n    margin-top: 0px !important;\n}\n#notas-side {\n    margin: 0 !important;\n}\n.loops .programas_filtrados .swiper-slide:hover img {\n    box-shadow: 0 0 32px rgba(0, 0, 0, 0);\n}\n\nbody{margin-top:50px;}\n\n\/* --- ESTILOS SHAPE ASIGNADOS --- *\/\n.shape-top.top-black::after{ background:black; }\n.shape-top.top-white::after{ background:#fff; }\n.shape-top.top-off-white::after{ background:#ece8e8; }\n.shape-bottom.bottom-off-white::before{ background:#ece8e8; z-index: 1; }\n.shape-bottom.bottom-white::before{ background:#ffffff; z-index: 1; }\n.shape-top.top-111::after{ background:#111111; z-index: 1; }\n.shape-top.top-686868::after{ background:#686868; z-index: 1; }\n.shape-top.top-grey::after{ background:var(--wp--preset--color--custom-fondo) !important; z-index: 1; }\n.shape-bottom.bottom-grey::before{ background:var(--wp--preset--color--custom-fondo) !important; z-index: 1; }\n.shape-bottom.bottom-111::before{ background:#111111; z-index: 1; }\n.shape-top.top-27::after{ background:var(--wp--preset--color--custom-fondo-2) !important; z-index: 1; }\n.shape-bottom.bottom-27::before{ background:#272727; }\n.shape-bottom.bottom-black::before{ background:#000; }\n.shape-top {\n    --mask-svg: url(\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A\/\/www.w3.org\/2000\/svg%27%20viewBox%3D%270%200%20397%2026%27%3E%3Cpath%20d%3D%27M320.82%201.88477C309.127%202.17599%20297.692%205.39272%20287.562%2011.2412L278.243%2016.6221C267.602%2022.7657%20255.531%2026%20243.243%2026H153.257C140.969%2026%20128.898%2022.7657%20118.257%2016.6221L108.938%2011.2412C98.8076%205.39272%2087.373%202.17599%2075.6797%201.88477L0%200H396.5L320.82%201.88477Z%27%20fill%3D%27%23fff%27\/%3E%3C\/svg%3E\");\n    position: relative;\n}\n.shape-top::after {\n    content: \"\"; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 397px; height: 26px; z-index: 1;\n    -webkit-mask-image: var(--mask-svg); -webkit-mask-size: 100% 100%; -webkit-mask-repeat: no-repeat;\n    mask-image: var(--mask-svg); mask-size: 100% 100%; mask-repeat: no-repeat;\n}\n.shape-bottom {\n    z-index: 1; position: relative;\n    --mask-svg: url(\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A\/\/www.w3.org\/2000\/svg%27%20viewBox%3D%270%200%20397%2026%27%3E%3Cpath%20d%3D%27M320.82%201.88477C309.127%202.17599%20297.692%205.39272%20287.562%2011.2412L278.243%2016.6221C267.602%2022.7657%20255.531%2026%20243.243%2026H153.257C140.969%2026%20128.898%2022.7657%20118.257%2016.6221L108.938%2011.2412C98.8076%205.39272%2087.373%202.17599%2075.6797%201.88477L0%200H396.5L320.82%201.88477Z%27%20fill%3D%27%23fff%27\/%3E%3C\/svg%3E\");\n}\n.shape-bottom::before {\n    content: \"\"; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%) rotate(180deg); width: 397px; height: 26px;\n    -webkit-mask-image: var(--mask-svg); -webkit-mask-size: 100% 100%; -webkit-mask-repeat: no-repeat;\n    mask-image: var(--mask-svg); mask-size: 100% 100%; mask-repeat: no-repeat;\n}\n:root :where(.wp-block-button .wp-block-button__link){background-color: var(--wp--preset--color--custom-highlight);border-top-color: var(--wp--preset--color--custom-off-white);border-top-width: 1px;border-top-style: solid;border-right-color: var(--wp--preset--color--custom-off-white);border-right-width: 1px;border-right-style: solid;border-bottom-color: var(--wp--preset--color--custom-off-white);border-bottom-width: 1px;border-bottom-style: solid;border-left-color: var(--wp--preset--color--custom-off-white);border-left-width: 1px;border-left-style: solid;}\n:root :where(.wp-block-columns-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-columns-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--50);margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-columns-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--50);margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-flex){gap: var(--wp--preset--spacing--50);}:root :where(.wp-block-columns-is-layout-grid){gap: var(--wp--preset--spacing--50);}\n:root :where(.wp-block-buttons-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-buttons-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-buttons-is-layout-flow) > *{margin-block-start: 16px;margin-block-end: 0;}:root :where(.wp-block-buttons-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-buttons-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-buttons-is-layout-constrained) > *{margin-block-start: 16px;margin-block-end: 0;}:root :where(.wp-block-buttons-is-layout-flex){gap: 16px;}:root :where(.wp-block-buttons-is-layout-grid){gap: 16px;}\n:root :where(.wp-block-post-title a:where(:not(.wp-element-button))){text-decoration: none;}\n:root :where(.wp-block-post-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;}\n:root :where(.wp-block-search .wp-block-search__label, .wp-block-search .wp-block-search__input, .wp-block-search .wp-block-search__button){font-size: var(--wp--preset--font-size--medium);line-height: 1.6;}:root :where(.wp-block-search .wp-block-search__input){border-radius:3.125rem;padding-left:1.5625rem;padding-right:1.5625rem;border-color:var(--wp--preset--color--accent-6);}\n:root :where(.wp-block-search .wp-element-button,.wp-block-search  .wp-block-button__link){border-radius: 3.125rem;margin-left: 1.125rem;}\n:root :where(.wp-block-search .wp-element-button:hover,.wp-block-search  .wp-block-button__link:hover){border-color: transparent;}\n:root :where(.wp-block-site-tagline){font-size: var(--wp--preset--font-size--medium);}\n:root :where(.wp-block-navigation){font-size: var(--wp--preset--font-size--medium);}\n:root :where(.wp-block-navigation a:where(:not(.wp-element-button))){text-decoration: none;}\n:root :where(.wp-block-navigation a:where(:not(.wp-element-button)):hover){text-decoration: underline;}\n:root :where(.wp-block-heading){padding-top: var(--wp--preset--spacing--20);padding-bottom: var(--wp--preset--spacing--20);}\n:root :where(.wp-block-group){margin-top: 0;margin-bottom: 0;padding-top: 0;padding-bottom: 0;}:root :where(.wp-block-group-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-group-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-group-is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--30);margin-block-end: 0;}:root :where(.wp-block-group-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-group-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-group-is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--30);margin-block-end: 0;}:root :where(.wp-block-group-is-layout-flex){gap: var(--wp--preset--spacing--30);}:root :where(.wp-block-group-is-layout-grid){gap: var(--wp--preset--spacing--30);}\n:root :where(.wp-block-column-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-column-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-column-is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--20);margin-block-end: 0;}:root :where(.wp-block-column-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-column-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-column-is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--20);margin-block-end: 0;}:root :where(.wp-block-column-is-layout-flex){gap: var(--wp--preset--spacing--20);}:root :where(.wp-block-column-is-layout-grid){gap: var(--wp--preset--spacing--20);}\n:root :where(.wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder){border-top-left-radius: 16px;border-top-right-radius: 16px;border-bottom-left-radius: 16px;border-bottom-right-radius: 16px;}\n:root :where(.wp-block-post-featured-image img, .wp-block-post-featured-image .block-editor-media-placeholder, .wp-block-post-featured-image .wp-block-post-featured-image__overlay){border-top-left-radius: 16px;border-top-right-radius: 16px;border-bottom-left-radius: 16px;border-bottom-right-radius: 16px;}\n\/*# sourceURL=global-styles-inline-css *\/\n<\/style>\n<style id=\"core-block-supports-inline-css\">\n.wp-elements-6c5e9b2164ad1cdd9b162e636cfefc16 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--custom-off-white);}.wp-container-content-c639590b{flex-basis:76px;}.wp-container-content-9cfa9a5a{flex-grow:1;}.wp-container-core-group-is-layout-f01089df{flex-wrap:nowrap;gap:var(--wp--preset--spacing--20);justify-content:flex-start;}.wp-container-core-group-is-layout-5bd8b199{flex-wrap:nowrap;gap:0;justify-content:flex-end;}.wp-container-core-group-is-layout-e10e6827 > .alignfull{margin-right:calc(0px * -1);margin-left:calc(0px * -1);}.wp-container-core-group-is-layout-371ed854{flex-direction:column;align-items:flex-end;}.wp-container-core-navigation-is-layout-24d5caba{gap:var(--wp--preset--spacing--30);justify-content:flex-end;}.wp-container-core-group-is-layout-83cd58f1{flex-wrap:nowrap;gap:0;justify-content:space-between;}.wp-container-core-group-is-layout-0d718681{flex-wrap:nowrap;justify-content:center;}.wp-container-core-buttons-is-layout-b890aaae{justify-content:center;}.wp-container-core-group-is-layout-1d6d875b > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-1d6d875b > * + *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-4f3bb7c5 > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-4f3bb7c5 > * + *{margin-block-start:4px;margin-block-end:0;}.wp-container-core-post-template-is-layout-23cec8fb{grid-template-columns:repeat(4, minmax(0, 1fr));gap:var(--wp--preset--spacing--40);}.wp-container-core-buttons-is-layout-f54139b1{justify-content:center;}.wp-container-core-group-is-layout-1124e277 > .alignfull{margin-right:calc(var(--wp--preset--spacing--50) * -1);margin-left:calc(var(--wp--preset--spacing--50) * -1);}.wp-container-core-group-is-layout-1124e277 > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-1124e277 > * + *{margin-block-start:var(--wp--preset--spacing--30);margin-block-end:0;}.wp-elements-0e4e937ff3d3c945e8068cca13115fe1 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--custom-off-white);}.wp-container-core-group-is-layout-b66d8864{flex-wrap:nowrap;gap:0;justify-content:center;}.wp-container-core-navigation-is-layout-f483d7ca{gap:var(--wp--preset--spacing--20);flex-direction:column;align-items:flex-end;}.wp-container-core-columns-is-layout-794e3cfa{flex-wrap:nowrap;}.wp-elements-424707879a9a4ae371189599c587ddf6 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--custom-fondo);}.wp-container-core-group-is-layout-cb0a7ccb{flex-wrap:nowrap;}.wp-container-core-group-is-layout-cf87bc72{gap:var(--wp--preset--spacing--20);justify-content:space-between;}.wp-container-core-group-is-layout-1341d353 > *{margin-block-start:0;margin-block-end:0;}.wp-container-core-group-is-layout-1341d353 > * + *{margin-block-start:0;margin-block-end:0;}\n\/*# sourceURL=core-block-supports-inline-css *\/\n<\/style>\n<style id=\"wp-block-template-skip-link-inline-css\">\n\/*! This file is auto-generated *\/\n.skip-link.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important;word-break:normal!important}.skip-link.screen-reader-text:focus{background-color:#eee;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}\n\/*# sourceURL=\/wp-includes\/css\/wp-block-template-skip-link.min.css *\/\n<\/style>\n<link rel=\"stylesheet\" id=\"ajaxpress-css\" href=\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/ajaxpress\/public\/css\/ajaxpress.min.css?ver=2.3.3\" media=\"all\">\n<style id=\"ajaxpress-inline-css\">\n\n\t\t\t:root {\n\t\t\t\t--ajaxpress-cursor-mode: wait;\n\t\t\t\t--ajaxpress-animation-duration: 0.3s;\n\t\t\t}\n\t\t\t.ajaxpress-animate-fade {\n\t\t\t\tanimation: ajaxpress-fade var(--ajaxpress-animation-duration) ease-in;\n\t\t\t}\n\t\t\t.ajaxpress-animate-slide-up {\n\t\t\t\tanimation: ajaxpress-slide-up var(--ajaxpress-animation-duration) ease-out;\n\t\t\t}\n\t\t\t.ajaxpress-animate-slide-down {\n\t\t\t\tanimation: ajaxpress-slide-down var(--ajaxpress-animation-duration) ease-out;\n\t\t\t}\n\n\t\t\t@keyframes ajaxpress-fade {\n\t\t\t\tfrom { opacity: 0; }\n\t\t\t\tto { opacity: 1; }\n\t\t\t}\n\t\t\t@keyframes ajaxpress-slide-up {\n\t\t\t\tfrom { transform: translateY(30px); opacity: 0; }\n\t\t\t\tto { transform: translateY(0); opacity: 1; }\n\t\t\t}\n\t\t\t@keyframes ajaxpress-slide-down {\n\t\t\t\tfrom { transform: translateY(-30px); opacity: 0; }\n\t\t\t\tto { transform: translateY(0); opacity: 1; }\n\t\t\t}\n\n\t\t\t.ajaxpress-animate-cursor {\n\t\t\t\tcursor: var(--ajaxpress-cursor-mode) !important;\n\t\t\t}\n\t\t\t.ajaxpress-animate-cursor * {\n\t\t\t\tcursor: var(--ajaxpress-cursor-mode) !important;\n\t\t\t}\n\t\t\t\n\/*# sourceURL=ajaxpress-inline-css *\/\n<\/style>\n<style id=\"grc-epg-styles-inline-css\">\n\n        .epg-mini-widget { width: 100%; background: transparent; font-family: sans-serif; }\n        .epg-mini-grid { display: flex; flex-wrap: wrap; gap: 15px 10px; }\n        .epg-mini-day-group { flex: 0 0 calc(50% - 5px); min-width: 120px; border-left: 2px solid #333; padding-left: 10px; box-sizing: border-box; }\n        .epg-mini-day-label { color: #888; font-size: 10px; text-transform: uppercase; font-weight: bold; letter-spacing: 0.5px; margin-bottom: 6px; }\n        .epg-mini-hours-list { display: flex; flex-wrap: wrap; gap: 5px; }\n        .epg-mini-hour-item { color: #fff; font-size: 12px; font-weight: 500; background: #222; padding: 3px 6px; border-radius: 4px; white-space: nowrap; }\n        .epg-mini-hour-item.is-live { color: var(--wp--preset--color--custom-highlight-2) !important; background: #331111; font-weight: bold; border: 1px solid var(--wp--preset--color--custom-highlight-2) !important; }\n        .epg-mini-dot { font-size: 7px; vertical-align: middle; animation: blink-dot 1.5s infinite; }\n        @keyframes blink-dot { 0% { opacity: 1; } 50% { opacity: 0.3; } 100% { opacity: 1; } }\n        .epg-v3-wrapper p, .epg-v3-wrapper br { display: none !important; }\n        .epg-v3-wrapper { width: 100%; background: #111; border: 1px solid #333; overflow: hidden; position: relative; font-family: sans-serif; margin: 20px 0; border-radius: 8px; }\n        .epg-v3-scroll-area { overflow-x: auto !important; overflow-y: hidden; padding-bottom: 10px; }\n        .epg-v3-table { position: relative; display: flex; flex-direction: column; }\n        .epg-v3-header { display: flex; position: sticky; top: 0; z-index: 100; background: #1a1a1a; border-bottom: 2px solid #333; }\n        .epg-v3-corner { min-width: 60px; background: #1a1a1a; position: sticky; left: 0; z-index: 110; padding: 15px; color: #666; font-size: 11px; text-transform: uppercase; border-right: 2px solid #333; }\n        .epg-v3-hours-track { display: flex; flex-direction: row !important; }\n        .epg-v3-hour { flex-shrink: 0; padding: 15px 0 15px 10px; font-size: 13px; color: #888; border-right: 1px solid #222; box-sizing: border-box; }\n        .epg-v3-row { display: flex; border-bottom: 1px solid #222; height: 60px; }\n        .epg-v3-day-fixed { min-width: 60px; background: #161616; color: #fff; padding: 0 15px; font-weight: bold; font-size: 13px; position: sticky; left: 0; z-index: 80; border-right: 2px solid #333; display: flex; align-items: center; }\n        .epg-v3-content-track { position: relative; flex-grow: 1; background-image: linear-gradient(to right, #222 1px, transparent 1px); box-sizing: border-box; }\n        .epg-v3-block { position: absolute !important; top: 8px; height: 44px; background: #2a2a2a; border: 1px solid #444; border-radius: 4px; text-decoration: none; overflow: hidden; display: block !important; z-index: 5; }\n        .epg-v3-block.epg-v3-is-live { background: #4a1a1a !important; border-color: var(--wp--preset--color--custom-highlight-2) !important !important; z-index: 10 !important; }\n        .epg-v3-block-content { display: flex; align-items: center; height: 100%; padding: 0 8px; gap: 8px; }\n        .epg-v3-text-group { display: flex; flex-direction: column; min-width: 0; flex: 1; }\n        .epg-v3-title { color: #fff; font-size: 11px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n        .epg-v3-time { color: #aaa; font-size: 10px; }\n        .epg-v3-badge { background: var(--wp--preset--color--custom-highlight-2) !important; color: #fff; font-size: 8px; padding: 1px 4px; border-radius: 3px; width: fit-content; font-weight: bold; }\n        .epg-v3-logo-container { width: 30px; height: 30px; flex-shrink: 0; }\n        .epg-v3-logo-img { max-width: 100%; max-height: 100%; object-fit: contain; }\n        .card-locutores-lista { font-size: .5em !important; color: #aaa; text-transform: uppercase; }\n        .render-horarios-loop { display: flex; flex-direction: column; gap: 6px; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 10px; }\n        .horario-row { display: flex; justify-content: space-between; align-items: center; }\n        .d-days { font-size: 10px; font-weight: 800; color: #efefef; }\n        .d-time { font-size: 12px; color: #888; font-weight: 700; }\n        .is-live .d-time { color: var(--wp--preset--color--custom-highlight-2) !important; }\n        .d-live-badge { font-size: 9px; color: var(--wp--preset--color--custom-highlight-2) !important; font-weight: 900; animation: live-blink 1.2s infinite; margin-left: 6px; }\n        @keyframes live-blink { 50% { opacity: 0; } }\n    \n\/*# sourceURL=grc-epg-styles-inline-css *\/\n<\/style>\n<link rel=\"stylesheet\" id=\"dashicons-css\" href=\"https:\/\/alfaenlinea.com\/wp-includes\/css\/dashicons.min.css?ver=7.0\" media=\"all\">\n<style id=\"twentytwentyfive-style-inline-css\">\na{text-decoration-thickness:1px!important;text-underline-offset:.1em}:where(.wp-site-blocks :focus){outline-style:solid;outline-width:2px}.wp-block-navigation .wp-block-navigation-submenu .wp-block-navigation-item:not(:last-child){margin-bottom:3px}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation-item__content{outline-offset:4px}.wp-block-navigation .wp-block-navigation-item ul.wp-block-navigation__submenu-container .wp-block-navigation-item__content{outline-offset:0}blockquote,caption,figcaption,h1,h2,h3,h4,h5,h6,p{text-wrap:pretty}.more-link{display:block}:where(pre){overflow-x:auto}\n\/*# sourceURL=https:\/\/alfaenlinea.com\/wp-content\/themes\/twentytwentyfive\/style.min.css *\/\n<\/style>\n<script id=\"jquery-core-js\" src=\"https:\/\/alfaenlinea.com\/wp-includes\/js\/jquery\/jquery.min.js?ver=3.7.1\"><\/script>\n<script id=\"jquery-core-js-after\">\njQuery(function($) {\n            $('a[href*=\"#\"]').on('click', function(e) {\n                var url = $(this).attr('href');\n                \n                \/\/ Get the part after the # (the fragment)\n                var hash = this.hash;\n                if (!hash) return;\n\n                \/\/ If the href has a path or full URL, ensure it's the same page\n                var currentUrl = window.location.origin + window.location.pathname;\n                var clickedUrl = this.href.split('#')[0];\n\n                if (clickedUrl === '' || clickedUrl === currentUrl) {\n                    var target = $(hash);\n                    if (target.length) {\n                        e.preventDefault();\n                        $('html, body').animate({\n                            scrollTop: target.offset().top\n                        }, 600);\n                    }\n                }\n            });\n        });\n    \n\/\/# sourceURL=jquery-core-js-after\n<\/script>\n\n<!-- Google tag (gtag.js) snippet added by Site Kit -->\n<!-- Fragmento de c&oacute;digo de Google Analytics a&ntilde;adido por Site Kit -->\n<script id=\"google_gtagjs-js\" src=\"https:\/\/www.googletagmanager.com\/gtag\/js?id=G-HFSQ5D9NT6\" async><\/script>\n<script id=\"google_gtagjs-js-after\">\nwindow.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}\ngtag(\"set\",\"linker\",{\"domains\":[\"alfaenlinea.com\"]});\ngtag(\"js\", new Date());\ngtag(\"set\", \"developer_id.dZTNiMT\", true);\ngtag(\"config\", \"G-HFSQ5D9NT6\");\n window._googlesitekit = window._googlesitekit || {}; window._googlesitekit.throttledEvents = []; window._googlesitekit.gtagEvent = (name, data) => { var key = JSON.stringify( { name, data } ); if ( !! window._googlesitekit.throttledEvents[ key ] ) { return; } window._googlesitekit.throttledEvents[ key ] = true; setTimeout( () => { delete window._googlesitekit.throttledEvents[ key ]; }, 5 ); gtag( \"event\", name, { ...data, event_source: \"site-kit\" } ); }; \n\/\/# sourceURL=google_gtagjs-js-after\n<\/script>\n<link rel=\"https:\/\/api.w.org\/\" href=\"https:\/\/alfaenlinea.com\/wp-json\/\"><link rel=\"EditURI\" type=\"application\/rsd+xml\" title=\"RSD\" href=\"https:\/\/alfaenlinea.com\/xmlrpc.php?rsd\">\n<meta name=\"generator\" content=\"WordPress 7.0\">\n    <script>\n    \/\/ Scroll-depth tracking. Fires grc_scroll events at 25 \/ 50 \/ 75 \/ 90 % depth.\n    \/\/\n    \/\/ Runs inside the Ajaxpress content iframe &mdash; that is where page scrolling happens\n    \/\/ and where GA4's gtag.js runs. _scrollFired resets naturally because each SPA\n    \/\/ navigation creates a fresh iframe JS context.\n    if (window.self !== window.top) {\n        var _scrollFired = {};\n        window.addEventListener('scroll', function() {\n            var scrollable = document.documentElement.scrollHeight - window.innerHeight;\n            if (scrollable <= 0) return;\n            var pct = Math.round(window.scrollY \/ scrollable * 100);\n            [25, 50, 75, 90].forEach(function(t) {\n                if (pct >= t && !_scrollFired[t]) {\n                    _scrollFired[t] = true;\n                    if (window.dataLayer) {\n                        window.dataLayer.push({ event: 'grc_scroll', percent_scrolled: t });\n                    }\n                }\n            });\n        }, { passive: true });\n    }\n    <\/script>\n    <style>\n\/* Site headers are position:fixed;top:0 &mdash; they ignore html{margin-top} and sit\n   behind the admin bar. top on non-positioned elements is a no-op, so targeting\n   all <header> elements is safe. html:not(:has(#ajaxpress-container)) excludes the\n   top-window shell so this only fires inside the content iframe. *\/\nhtml:not(:has(#ajaxpress-container)) body.admin-bar header {\n    top: var(--wp-admin--admin-bar--height, 32px) !important;\n}\n<\/style>\n    <meta name=\"generator\" content=\"Site Kit by Google 1.181.0\"><noscript><style>.tw-block-animation{opacity:1;transform:none;clip-path:none;}<\/style><\/noscript>\n\n\n<meta property=\"og:site_name\" content=\"Alfa 91.3 FM\">\n<meta property=\"og:title\" content=\"Ariana Grande revela su nueva era m&aacute;s &iacute;ntima\">\n<meta property=\"og:description\" content=\"Donde todo nace\">\n<meta property=\"og:image\" content=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1.png\">\n<meta property=\"og:url\" content=\"https:\/\/alfaenlinea.com\/\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:image:width\" content=\"1200\">\n<meta property=\"og:image:height\" content=\"630\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"Ariana Grande revela su nueva era m&aacute;s &iacute;ntima\">\n<meta name=\"twitter:description\" content=\"Donde todo nace\">\n<meta name=\"twitter:image\" content=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1.png\">\n\n\n<script id=\"wp-importmap\" type=\"importmap\">\n{\"imports\":{\"@wordpress\/interactivity\":\"https:\/\/alfaenlinea.com\/wp-includes\/js\/dist\/script-modules\/interactivity\/index.min.js?ver=efaa5193bbad9c60ffd1\",\"@wordpress\/interactivity-router\":\"https:\/\/alfaenlinea.com\/wp-includes\/js\/dist\/script-modules\/interactivity-router\/index.min.js?ver=71aa17bac91628a0f874\",\"@wordpress\/a11y\":\"https:\/\/alfaenlinea.com\/wp-includes\/js\/dist\/script-modules\/a11y\/index.min.js?ver=1c371cb517a97cdbcb9f\"}}\n<\/script>\n<link rel=\"modulepreload\" href=\"https:\/\/alfaenlinea.com\/wp-includes\/js\/dist\/script-modules\/interactivity\/index.min.js?ver=efaa5193bbad9c60ffd1\" id=\"@wordpress\/interactivity-js-modulepreload\" fetchpriority=\"low\">\n\n<!-- Metaetiquetas de Google AdSense a&ntilde;adidas por Site Kit -->\n<meta name=\"google-adsense-platform-account\" content=\"ca-host-pub-2644536267352236\">\n<meta name=\"google-adsense-platform-domain\" content=\"sitekit.withgoogle.com\">\n<!-- Acabar con las metaetiquetas de Google AdSense a&ntilde;adidas por Site Kit -->\n\n<!-- Fragmento de c&oacute;digo de Google Tag Manager a&ntilde;adido por Site Kit -->\n<script>\n\t\t\t( function( w, d, s, l, i ) {\n\t\t\t\tw[l] = w[l] || [];\n\t\t\t\tw[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} );\n\t\t\t\tvar f = d.getElementsByTagName( s )[0],\n\t\t\t\t\tj = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : '';\n\t\t\t\tj.async = true;\n\t\t\t\tj.src = 'https:\/\/www.googletagmanager.com\/gtm.js?id=' + i + dl;\n\t\t\t\tf.parentNode.insertBefore( j, f );\n\t\t\t} )( window, document, 'script', 'dataLayer', 'GTM-KLRQKXT' );\n\t\t\t\n<\/script>\n\n<!-- Final del fragmento de c&oacute;digo de Google Tag Manager a&ntilde;adido por Site Kit -->\n<style class=\"wp-fonts-local\">\n@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:fallback;src:url('https:\/\/alfaenlinea.com\/wp-content\/themes\/twentytwentyfive\/assets\/fonts\/manrope\/Manrope-VariableFont_wght.woff2') format('woff2');}\n@font-face{font-family:\"Fira Code\";font-style:normal;font-weight:300 700;font-display:fallback;src:url('https:\/\/alfaenlinea.com\/wp-content\/themes\/twentytwentyfive\/assets\/fonts\/fira-code\/FiraCode-VariableFont_wght.woff2') format('woff2');}\n<\/style>\n<link rel=\"icon\" href=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/cropped-logo_app_alfa-32x32.png\" sizes=\"32x32\">\n<link rel=\"icon\" href=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/cropped-logo_app_alfa-192x192.png\" sizes=\"192x192\">\n<link rel=\"apple-touch-icon\" href=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/cropped-logo_app_alfa-180x180.png\">\n<meta name=\"msapplication-TileImage\" content=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/cropped-logo_app_alfa-270x270.png\">\n\n<!-- GRC Global CSS -->\n<style type=\"text\/css\" id=\"grc-global-network-css\">\n#glightbox-body {\r\n    z-index: 999999999 !important;\r\n}\r\n\r\n\/* --- ESTILOS EXCLUSIVOS DE GLOBAL --- *\/\r\n#resultados_grid .type-tu-decides, #resultados_grid .type-banner, #resultados_grid .type-tu-decides, #resultados_grid .type-estacion {\r\n    display: none;\r\n}\r\n.modal-ad-side {\r\n    display: none !important;\r\n}\r\n.track-group p.has-small-font-size {\r\n    margin-block-start: 0;\r\n    margin-block-end: 0;\r\n}\r\n#loop .swiper-button-prev, #loop .swiper-button-next {\r\n    height: 44px;\r\n    width: 44px;\r\n    border-radius: 50%;\r\n   background: white;\r\n}\r\n:where(.wp-site-blocks :focus) {\r\n    outline-width: 0px !important;\r\n}\r\n.swiper-button-next:after, .swiper-rtl .swiper-button-prev:after,.swiper-button-prev:after {\r\n    font-size: 16px!important;\r\n    transform: translateX(0px) !important;\r\n}\r\n#taboola-below-article-thumbnails * {\r\n    color: black !important;\r\n}\r\n.grc-ad-wrapper * {\r\n    max-width: 100% !important;\r\n}\r\nhtml, body {\r\n    -webkit-overflow-scrolling: touch;\r\n}\r\n.grc-ad-wrapper {\r\n    min-height: 50px;\r\n}\r\nheader.\\.main_navbar.wp-block-template-part {\r\n    z-index: 9999999;\r\n}\r\nimg.attachment-64x64.size-64x64.wp-post-image {\r\n    background: var(--wp--preset--color--custom-highlight) !important;\r\n}\r\n#exclusivos .swiper {\r\n    height: 100dvh;\r\n    min-height: 780px;\r\n}\r\n\r\n\/* --- ESTILOS REPETIDOS RESTANTES --- *\/\r\n.gradiente-din { background: linear-gradient(45deg, var(--wp--preset--color--custom-fondo-2), transparent) !important; }\r\n.breadcrumb_last { display: inline-block; vertical-align: bottom; max-width: 16ch; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }\r\n.fecha-nota { display: none; }\r\n#wp-block-categories-1 { width: 100%; }\r\n#locutores { background: #ffffff42; border-radius: 8px; padding: var(--wp--preset--spacing--30); }\r\n.has-custom-rojo-color a { color: var(--wp--preset--color--custom-highlight) !important; }\r\n.yoast-breadcrumbs a { color: var(--wp--preset--color--custom-highlight) !important; }\r\nimg.attachment-64x64.size-64x64.wp-post-image { background:var(--wp--preset--color--custom-highlight) !important; }\r\n.grc-ad-wrapper { text-align: center; }\r\n.grc-ad-wrapper>div { margin: 0 !IMPORTANT; }\r\n#locutor-con { width: calc(100% - 16px); margin-top: -8px !important; z-index: 99; box-shadow: 0 0 20px #00000075; margin-left: 8px; }\r\n#galeria-side h2, #videos-side h2 { display: flex; align-items: center; }\r\n.boton_chart { text-align: center; }\r\nhtml { max-width:100%; overflow-x: auto; }\r\n.wp-site-blocks { max-width: 100dvw; overflow: clip; }\r\n.breadcrumb-item--current .breadcrumb-item-name { display: inline-block; vertical-align: middle; max-width: 32ch; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.epg-card-header { margin: 0 !important; }\r\n.episodio-wrapper p { margin: 0; }\r\nselect { border: 1px solid #000000; padding: 8px 16px; font-size: medium; border-radius: 56px; font-family: inherit; background: #ffffff70; }\r\n#locutor-con > div { width: 100%; }\r\n#locutor-con > div { width: 100%; border: 0 !important; }\r\n#locutor-con { display: flex; flex-direction: column; justify-content: space-between; }\r\n.d-time-wrapper { display: flex; align-items: baseline; flex-direction: row-reverse; gap: 4px; }\r\nmain { padding-top: 100px; }\r\n.titulo-locutor { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n.wp-block-search__button { padding: 0px 16px; }\r\n.boton_chart { padding: 8px 16px; border-radius: 50px; font-size: large; color: white; }\r\nheader { position: fixed; z-index: 999; width: 100%; top:0; }\r\n@media screen and (max-width: 480px) { #exclusivos .swiper { aspect-ratio: 3 \/ 4; max-height: none; min-height: 0; height: auto; } }\r\n#banner_z { position: fixed; z-index: 999; bottom: 0; width: 100%; }\r\n.loops .swiper-slide { transition: transform 0.3s ease, z-index 0s; z-index: 1; }\r\n.loops .swiper-slide img { transition: box-shadow 0.3s ease, opacity 0.3s ease, filter 0.3s ease; }\r\n.loops .swiper-slide:hover img { opacity: 1; filter: none; box-shadow: 0 0 32px rgba(0, 0, 0, 0.38); }\r\n.locutor-circulo { filter: grayscale(1); transition: filter 0.5s ease-in-out; }\r\n.locutor-circulo:hover { filter: none; }\r\n.loops figure.wp-block-post-featured-image img { transition: transform 0.4s ease; }\r\n#locutores figure.wp-block-post-featured-image { filter: grayscale(1); }\r\n#locutores figure.wp-block-post-featured-image:hover { filter: none; }\r\n.loops .swiper, .loops .swiper-wrapper { overflow: visible }\r\n.ultimo-post { position: relative; background: linear-gradient(0deg, #000, #272727); border-radius:32px; }\r\n.ultimo-post:before, .ultimo-post:after { content: ''; position: absolute; border-radius:32px; left: -2px; top: -2px; background: linear-gradient(45deg, #1a0000, #4d0000, #8b0000, #e10600, #ff3b3b, #ff7a18); background-size: 400%; width: calc(100% + 4px); height: calc(100% + 4px); z-index: -1; animation: steam 20s linear infinite; }\r\n@keyframes steam { 0% { background-position: 0 0; } 50% { background-position: 400% 0; } 100% { background-position: 0 0; } }\r\n.ultimo-post:after { filter: blur(50px); }\r\nbody { max-width:100vw; }\r\n#main_loop figure.wp-block-post-featured-image:hover { transform: scale(1.1); transition: transform 0.3s; }\r\n.shadow_css { box-shadow: 0 0 24px 4px #00000042; border-radius: 16px; }\r\n.swiper-button-prev, .swiper-button-next { color: var(--wp--preset--color--custom-highlight) !important; }\r\n#winner { overflow: hidden; }\r\n.loops .swiper-slide { width: 250px !important; overflow: visible; }\r\n.loops #videos .swiper-slide, .loops #galerias .swiper-slide { width: 320px !important; overflow: visible; }\r\n.gw-mm-item__dropdown { padding: 0px !important; }\r\n#main_hero .swiper-wrapper { align-items: anchor-center; }\r\n.swiper { overflow-y: visible !important; }\r\n.slider_max_100 { max-width:100vw !important; }\r\n.slider_max_80 { max-width:80vw !important; }\r\n.wrapper { width: 100%; position: absolute; top: 0; height: 100%; opacity: 40%; }\r\n#main_hero, .relative_pos { position: relative; }\r\nfigure.wp-block-video, div#embed_video iframe, .ultimo-post iframe { border-radius: 32px; overflow: clip; }\r\n.programa-thumb { border-radius: 16px; }\r\n.programa-link img { padding-right: 8px; border-radius: 8px; }\r\n#video_rezi { overflow: hidden; }\r\n#persistent-player { border-radius: 16px !important; overflow: hidden; height: 90px; z-index:999; }\r\n:root { --swiper-theme-color: #ffffff !important; }\r\n\r\n\/* Quitar el fondo gris por defecto del bloque contenedor para que luzca la imagen *\/\r\n.type-episodio .wp-block-group.has-background {\r\n    background: none !important;\r\n    padding: 0 !important;\r\n}\r\n\r\n\/* Forzar al contenedor de la imagen destacada a ocupar el 100% de la tarjeta *\/\r\n.type-episodio .wp-block-post-featured-image {\r\n    width: 100% !important;\r\n    height: 100% !important;\r\n    margin: 0 !important;\r\n    display: block;\r\n}\r\n\r\n\/* Hacer que el enlace interno ocupe todo el espacio disponible *\/\r\n.type-episodio .wp-block-post-featured-image a {\r\n    display: block;\r\n    width: 100% !important;\r\n    height: 100% !important;\r\n}\r\n\r\n\/* Forzar que la etiqueta  cubra por completo la tarjeta de esquina a esquina sin deformarse *\/\r\n.type-episodio .wp-block-post-featured-image img {\r\n    width: 100% !important;\r\n    height: 100% !important;\r\n    min-height: 250px; \/* Ajusta la altura m&iacute;nima a tu gusto *\/\r\n    object-fit: cover !important;\r\n    object-position: center !important;\r\n    display: block;\r\n}\n<\/style>\n<!-- \/GRC Global CSS -->\n<\/head>\n\n<body class=\"error404 wp-custom-logo wp-embed-responsive wp-theme-twentytwentyfive\">\n\t\t<!-- Fragmento de c&oacute;digo de Google Tag Manager (noscript) a&ntilde;adido por Site Kit -->\n\t\t<noscript>\n\t\t\t<iframe src=\"https:\/\/www.googletagmanager.com\/ns.html?id=GTM-KLRQKXT\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"><\/iframe>\n\t\t<\/noscript>\n\t\t<!-- Final del fragmento de c&oacute;digo de Google Tag Manager (noscript) a&ntilde;adido por Site Kit -->\n\t\t\n<a class=\"skip-link screen-reader-text\" id=\"wp-skip-link\" href=\"#wp--skip-link--target\">Saltar al contenido<\/a><div class=\"wp-site-blocks\"><header class=\"wp-block-template-part\">\n<div class=\"wp-block-group has-custom-off-white-color has-custom-fondo-background-color has-text-color has-background has-link-color wp-elements-6c5e9b2164ad1cdd9b162e636cfefc16 is-layout-flow wp-block-group-is-layout-flow\" style=\"border-top-left-radius:0px;border-top-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"wp-block-group has-custom-negro-background-color has-background is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-83cd58f1 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<div class=\"wp-block-group wp-container-content-9cfa9a5a is-content-justification-left is-nowrap is-layout-flex wp-container-core-group-is-layout-f01089df wp-block-group-is-layout-flex\" style=\"padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<figure class=\"wp-block-image size-medium wp-container-content-c639590b\"><a href=\"\/\"><img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/04\/Logo_Alfa_Mundial_26-1-300x300.png\" alt=\"\" class=\"wp-image-5353\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/04\/Logo_Alfa_Mundial_26-1-300x300.png 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/04\/Logo_Alfa_Mundial_26-1-1024x1024.png 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/04\/Logo_Alfa_Mundial_26-1-150x150.png 150w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/04\/Logo_Alfa_Mundial_26-1-768x768.png 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/04\/Logo_Alfa_Mundial_26-1.png 1419w\" sizes=\"(max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-right is-layout-flex wp-container-core-group-is-layout-371ed854 wp-block-group-is-layout-flex\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--30)\">\n<div id=\"redes-block\" class=\"wp-block-group is-content-justification-right is-nowrap is-layout-flex wp-container-core-group-is-layout-5bd8b199 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><style>\n        span.dashicons {\n            vertical-align: middle;\n        }\n    <\/style>\n<div class=\"redes-sociales-scf-container\" style=\"display: flex; gap: 16px; align-items: center;\"><a href=\"https:\/\/www.facebook.com\/Alfa913mx\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-facebook\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><span class=\"dashicons dashicons-facebook-alt\" style=\"font-size: 16px; width: 16px; height: 16px;\"><\/span><\/a><a href=\"https:\/\/www.instagram.com\/alfa913fm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-instagram\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><span class=\"dashicons dashicons-instagram\" style=\"font-size: 16px; width: 16px; height: 16px;\"><\/span><\/a><a href=\"https:\/\/www.youtube.com\/@Alfa913FM\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-youtube\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><span class=\"dashicons dashicons-youtube\" style=\"font-size: 16px; width: 16px; height: 16px;\"><\/span><\/a><a href=\"https:\/\/x.com\/alfa913fm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-x\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\" style=\"width: 16px; height: 16px; fill: currentColor; vertical-align: middle;\"><path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path><\/svg><\/a><a href=\"https:\/\/www.tiktok.com\/@alfa913fm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-tik_tok\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 448 512\" style=\"width: 16px; height: 16px; fill: currentColor; vertical-align: middle;\"><path d=\"M448 209.9a210.1 210.1 0 0 1 -122.8-39.3V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.6 74.6 0 1 0 52.2 71.2V0l88 0a121.2 121.2 0 0 0 1.9 22.2h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.1z\"><\/path><\/svg><\/a><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group tw-sm-hidden has-global-padding is-layout-constrained wp-container-core-group-is-layout-e10e6827 wp-block-group-is-layout-constrained\" style=\"padding-right:0;padding-left:0\"><form role=\"search\" method=\"get\" action=\"https:\/\/alfaenlinea.com\/\" style=\"margin-top:0;margin-bottom:0\" class=\"wp-block-search__button-inside wp-block-search__icon-button is-style-default wp-block-search wp-container-content-9cfa9a5a\"><label class=\"wp-block-search__label screen-reader-text\" for=\"wp-block-search__input-1\">Search<\/label><div class=\"wp-block-search__inside-wrapper\" style=\"width: 100%;border-top-left-radius: calc(32px + 4px);border-top-right-radius: calc(32px + 4px);border-bottom-left-radius: calc(32px + 4px);border-bottom-right-radius: calc(32px + 4px)\"><input class=\"wp-block-search__input has-small-font-size\" id=\"wp-block-search__input-1\" placeholder=\"Busca\" value=\"\" type=\"search\" name=\"s\" required style=\"border-top-left-radius: 32px;border-top-right-radius: 32px;border-bottom-left-radius: 32px;border-bottom-right-radius: 32px\"><button aria-label=\"Search\" class=\"wp-block-search__button has-background has-custom-highlight-background-color has-small-font-size has-icon wp-element-button\" type=\"submit\" style=\"border-top-left-radius: 32px;border-top-right-radius: 32px;border-bottom-left-radius: 32px;border-bottom-right-radius: 32px\"><svg class=\"search-icon\" viewbox=\"0 0 24 24\" width=\"24\" height=\"24\">\n\t\t\t\t\t<path d=\"M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z\"><\/path>\n\t\t\t\t<\/svg><\/button><\/div><\/form><\/div>\n\n\n<\/div>\n\n\n<nav style=\"font-style:normal;font-weight:700;text-transform:uppercase\" class=\"has-background has-custom-fondo-background-color has-medium-font-size is-responsive items-justified-right wp-block-navigation has-syne-font-family is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-24d5caba wp-block-navigation-is-layout-flex tw-icon-medium\" aria-label=\"Navegaci&oacute;n\" data-wp-interactive=\"core\/navigation\" data-wp-context='{\"overlayOpenedBy\":{\"click\":false,\"hover\":false,\"focus\":false},\"type\":\"overlay\",\"roleAttribute\":\"\",\"ariaLabel\":\"Men\\u00fa\"}'><button aria-haspopup=\"dialog\" aria-label=\"Abrir el men&uacute;\" class=\"wp-block-navigation__responsive-container-open always-shown\" data-wp-on--click=\"actions.openMenuOnClick\" data-wp-on--keydown=\"actions.handleMenuKeydown\"><svg width=\"24\" height=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\"><path d=\"M5 5v1.5h14V5H5z\"><\/path><path d=\"M5 12.8h14v-1.5H5v1.5z\"><\/path><path d=\"M5 19h14v-1.5H5V19z\"><\/path><\/svg><\/button>\n\t\t\t\t<div class=\"wp-block-navigation__responsive-container hidden-by-default has-text-color has-custom-off-white-color has-background has-custom-negro-background-color\" id=\"modal-2\" data-wp-class--has-modal-open=\"state.isMenuOpen\" data-wp-class--is-menu-open=\"state.isMenuOpen\" data-wp-watch=\"callbacks.initMenu\" data-wp-on--keydown=\"actions.handleMenuKeydown\" data-wp-on--focusout=\"actions.handleMenuFocusout\" tabindex=\"-1\">\n\t\t\t\t\t<div class=\"wp-block-navigation__responsive-close\" tabindex=\"-1\">\n\t\t\t\t\t\t<div class=\"wp-block-navigation__responsive-dialog\" data-wp-bind--aria-modal=\"state.ariaModal\" data-wp-bind--aria-label=\"state.ariaLabel\" data-wp-bind--role=\"state.roleAttribute\">\n\t\t\t\t\t\t\t<button aria-label=\"Cerrar el men&uacute;\" class=\"wp-block-navigation__responsive-container-close\" data-wp-on--click=\"actions.closeMenuOnClick\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z\"><\/path><\/svg><\/button>\n\t\t\t\t\t\t\t<div class=\"wp-block-navigation__responsive-container-content\" data-wp-watch=\"callbacks.focusFirstElement\" id=\"modal-2-content\">\n\t\t\t\t\t\t\t\t<ul style=\"font-style:normal;font-weight:700;text-transform:uppercase\" class=\"wp-block-navigation__container has-background has-custom-fondo-background-color has-medium-font-size is-responsive items-justified-right wp-block-navigation has-syne-font-family\"><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/\"><span class=\"wp-block-navigation-item__label\">Home<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"https:\/\/alfaenlinea.com\/notas\/\"><span class=\"wp-block-navigation-item__label\">Alfa News<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"https:\/\/alfaenlinea.com\/tipo-de-cancion\/estrenos\/\"><span class=\"wp-block-navigation-item__label\">Alfa Estrenos<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/alfa-conteo\"><span class=\"wp-block-navigation-item__label\">Alfa Conteo<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/videos\"><span class=\"wp-block-navigation-item__label\">Videos<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/galerias\"><span class=\"wp-block-navigation-item__label\">Galer&iacute;as<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/programas\"><span class=\"wp-block-navigation-item__label\">Programas<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/locutores\"><span class=\"wp-block-navigation-item__label\">Locutores<\/span><\/a><\/li><li class=\"has-medium-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/podcasts\"><span class=\"wp-block-navigation-item__label\">Podcasts<\/span><\/a><\/li><\/ul>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><\/nav><\/div>\n<\/div>\n<\/header>\n\n\n<main id=\"wp--skip-link--target\" class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\" style=\"margin-top:var(--wp--preset--spacing--70);padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-0d718681 wp-block-group-is-layout-flex\"><div class=\"grc-ad-wrapper\">\n<div id=\"div-gpt-ad-top01\" style=\"min-width:320px;display:flex;justify-content:center;margin:20px auto;\"><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<h1 class=\"wp-block-heading has-text-align-center\">P&aacute;gina no encontrada<\/h1>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">La p&aacute;gina que intentas consultar no existe.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-1d6d875b wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"margin-top:0;margin-right:0;margin-bottom:0;margin-left:0\"><img width=\"666\" height=\"374\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/T02E14Antonio-Esquinca-removebg-preview.png\" alt=\"\" class=\"wp-image-2906\" style=\"width:280px\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/T02E14Antonio-Esquinca-removebg-preview.png 666w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/T02E14Antonio-Esquinca-removebg-preview-300x168.png 300w\" sizes=\"(max-width: 666px) 100vw, 666px\"><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-b890aaae wp-block-buttons-is-layout-flex\" style=\"margin-top:-14px;margin-bottom:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-custom-rojo-background-color has-background wp-element-button\" href=\"\/\">Regresar al Home<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-0d718681 wp-block-group-is-layout-flex\"><div class=\"grc-ad-wrapper\">\n<div id=\"div-gpt-ad-box01\" style=\"min-width:300px;display:flex;justify-content:center;margin:20px auto;\"><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-custom-off-white-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-1124e277 wp-block-group-is-layout-constrained\" id=\"notas\" style=\"padding-top:var(--wp--preset--spacing--60);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-group alignwide loops has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:0;padding-bottom:0\">\n<div data-wp-context=\"{}\" data-wp-interactive=\"core\/query\" data-wp-key=\"0\" data-wp-router-region=\"query-0\" class=\"wp-block-query alignfull make-slider-id-slider2 overflowed mas-notas is-layout-flow wp-block-query-is-layout-flow\"><ul style=\"padding-top:0;padding-bottom:0\" class=\"columns-4 alignfull wp-block-post-template is-layout-grid wp-container-core-post-template-is-layout-23cec8fb wp-block-post-template-is-layout-grid tw-valign-top\"><li data-wp-key=\"post-template-item-51377\" class=\"wp-block-post post-51377 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-dj tag-djs tag-purple-disco-machine tag-steve-aoki\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/djs-y-experiencias-sensoriales-en-mixx-bunker-de-dos-equis\/\" target=\"_self\"><img width=\"300\" height=\"164\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2022\/11\/Experiencia-inmersiva-XX-300x164.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"DJ&rsquo;s y experiencias sensoriales, en MIXX Bunker de Dos Equis&reg;\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2022\/11\/Experiencia-inmersiva-XX-300x164.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2022\/11\/Experiencia-inmersiva-XX-1024x559.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2022\/11\/Experiencia-inmersiva-XX-768x419.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2022\/11\/Experiencia-inmersiva-XX.jpg 1320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/djs-y-experiencias-sensoriales-en-mixx-bunker-de-dos-equis\/\" target=\"_self\">DJ&rsquo;s y experiencias sensoriales, en MIXX Bunker de Dos Equis&reg;<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-72158\" class=\"wp-block-post post-72158 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-ariana-grande\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/ariana-grande-revela-su-nueva-era-mas-intima\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2024\/07\/Nota_20240711_Ariana_Grande-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Ariana Grande revela su nueva era m&aacute;s &iacute;ntima\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2024\/07\/Nota_20240711_Ariana_Grande-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2024\/07\/Nota_20240711_Ariana_Grande-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2024\/07\/Nota_20240711_Ariana_Grande-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2024\/07\/Nota_20240711_Ariana_Grande.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/ariana-grande-revela-su-nueva-era-mas-intima\/\" target=\"_self\">Ariana Grande revela su nueva era m&aacute;s &iacute;ntima<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-72155\" class=\"wp-block-post post-72155 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-imagine-dragons tag-mundial-2026\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/imagine-dragons-conquista-monterrey-con-un-inesperado-gesto-mexicano\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_draagond-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Imagine Dragons conquista Monterrey cantando cielito lindo\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_draagond-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_draagond-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_draagond-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_draagond.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/imagine-dragons-conquista-monterrey-con-un-inesperado-gesto-mexicano\/\" target=\"_self\">Imagine Dragons conquista Monterrey cantando cielito lindo<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-72152\" class=\"wp-block-post post-72152 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-adele tag-carrera tag-londres tag-nueva-musica tag-regreso tag-retomar\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/adele-reaparece-en-londres-y-enciende-los-rumores-de-un-nuevo-album-tras-dos-anos-de-ausencia\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260622_AdeleRegresaEscenarios-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Adele reaparece en Londres y enciende los rumores de un nuevo &aacute;lbum tras dos a&ntilde;os de ausencia\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260622_AdeleRegresaEscenarios-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260622_AdeleRegresaEscenarios-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260622_AdeleRegresaEscenarios-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260622_AdeleRegresaEscenarios.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/adele-reaparece-en-londres-y-enciende-los-rumores-de-un-nuevo-album-tras-dos-anos-de-ausencia\/\" target=\"_self\">Adele reaparece en Londres y enciende los rumores de un nuevo &aacute;lbum tras dos a&ntilde;os de ausencia<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-72150\" class=\"wp-block-post post-72150 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-katy-perry tag-lanzamiento tag-pop tag-song\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/katy-perry-anuncia-el-lanzamiento-de-watch-it-burn-su-nueva-cancion-mas-intensa\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/katy-perry-2-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Katy Perry anuncia el lanzamiento de &ldquo;Watch It Burn&rdquo;, su nueva canci&oacute;n m&aacute;s intensa\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/katy-perry-2-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/katy-perry-2-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/katy-perry-2-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/katy-perry-2.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/katy-perry-anuncia-el-lanzamiento-de-watch-it-burn-su-nueva-cancion-mas-intensa\/\" target=\"_self\">Katy Perry anuncia el lanzamiento de &ldquo;Watch It Burn&rdquo;, su nueva canci&oacute;n m&aacute;s intensa<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-72146\" class=\"wp-block-post post-72146 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-callum-turner tag-costa-amalfitana tag-dua-lipa tag-fotos tag-italia tag-luna-de-miel tag-tranquilidad tag-viral\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/dua-lipa-disfruta-su-romantica-luna-de-miel-entre-playas-de-ensueno-y-momentos-inolvidables\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260619_LunaDeMielDuaLipa_3-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Dua Lipa disfruta su rom&aacute;ntica luna de miel entre playas de ensue&ntilde;o y momentos inolvidables\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260619_LunaDeMielDuaLipa_3-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260619_LunaDeMielDuaLipa_3-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260619_LunaDeMielDuaLipa_3-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260619_LunaDeMielDuaLipa_3.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/dua-lipa-disfruta-su-romantica-luna-de-miel-entre-playas-de-ensueno-y-momentos-inolvidables\/\" target=\"_self\">Dua Lipa disfruta su rom&aacute;ntica luna de miel entre playas de ensue&ntilde;o y momentos inolvidables<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-72142\" class=\"wp-block-post post-72142 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-boda tag-boda-taylor-swift tag-taylor-swift tag-travis-kelce\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/taylor-swift-ya-se-caso-un-detalle-sobre-la-recepcion-desato-una-ola-de-rumores-entre-sus-seguidores\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_caso-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"&iquest;Taylor Swift ya se cas&oacute;? Un detalle sobre la recepci&oacute;n desat&oacute; una ola de rumores entre sus seguidores\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_caso-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_caso-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_caso-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_caso.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/taylor-swift-ya-se-caso-un-detalle-sobre-la-recepcion-desato-una-ola-de-rumores-entre-sus-seguidores\/\" target=\"_self\">&iquest;Taylor Swift ya se cas&oacute;? Un detalle sobre la recepci&oacute;n desat&oacute; una ola de rumores entre sus seguidores<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-71942\" class=\"wp-block-post post-71942 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-amigos tag-musica tag-oliver-tree tag-pop tag-post-malone\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/post-malone-dedica-concierto-a-oliver-tree-tras-su-muerte\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/oliver-tree-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Post Malone dedica concierto a Oliver Tree tras su muerte\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/oliver-tree-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/oliver-tree-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/oliver-tree-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/oliver-tree.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/post-malone-dedica-concierto-a-oliver-tree-tras-su-muerte\/\" target=\"_self\">Post Malone dedica concierto a Oliver Tree tras su muerte<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-71926\" class=\"wp-block-post post-71926 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-gira tag-imss tag-memes tag-mexico-2 tag-monterrey tag-reaccion tag-zayn-malik\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/zayn-malik-convierte-una-clinica-del-imss-en-la-foto-mas-comentada-de-su-paso-por-mexico\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260618_ZaynIMSS-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Zayn Malik convierte una cl&iacute;nica del IMSS en la foto m&aacute;s comentada de su paso por M&eacute;xico\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260618_ZaynIMSS-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260618_ZaynIMSS-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260618_ZaynIMSS-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260618_ZaynIMSS.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/zayn-malik-convierte-una-clinica-del-imss-en-la-foto-mas-comentada-de-su-paso-por-mexico\/\" target=\"_self\">Zayn Malik convierte una cl&iacute;nica del IMSS en la foto m&aacute;s comentada de su paso por M&eacute;xico<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-71928\" class=\"wp-block-post post-71928 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-bts tag-del-k-pop tag-jung-kook\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/jung-kook-rompe-el-molde-del-k-pop-y-revela-la-clave-detras-de-su-exito-global\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_Jung-Koo-2-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Jung Kook rompe el molde del K-pop y revela la clave detr&aacute;s de su &eacute;xito global\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_Jung-Koo-2-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_Jung-Koo-2-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_Jung-Koo-2-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_Jung-Koo-2.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/jung-kook-rompe-el-molde-del-k-pop-y-revela-la-clave-detras-de-su-exito-global\/\" target=\"_self\">Jung Kook rompe el molde del K-pop y revela la clave detr&aacute;s de su &eacute;xito global<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-71921\" class=\"wp-block-post post-71921 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-concierto tag-pop tag-visita tag-zayn\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/zayn-emociona-a-sus-seguidores-con-su-proxima-visita-a-la-cdmx\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/01\/zayn-malik-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Zayn emociona a sus seguidores con su pr&oacute;xima visita a la CDMX\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/01\/zayn-malik-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/01\/zayn-malik-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/01\/zayn-malik-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/01\/zayn-malik.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/zayn-emociona-a-sus-seguidores-con-su-proxima-visita-a-la-cdmx\/\" target=\"_self\">Zayn emociona a sus seguidores con su pr&oacute;xima visita a la CDMX<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-71913\" class=\"wp-block-post post-71913 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-harry-styles tag-olivia-wilde\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/olivia-wilde-habla-sobre-harry-styles-y-hace-una-inesperada-confesion-sobre-su-romance\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_wilde-2-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Olivia Wilde habla sobre Harry Styles y hace una inesperada confesi&oacute;n sobre su romance\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_wilde-2-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_wilde-2-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_wilde-2-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_2024100_wilde-2.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/olivia-wilde-habla-sobre-harry-styles-y-hace-una-inesperada-confesion-sobre-su-romance\/\" target=\"_self\">Olivia Wilde habla sobre Harry Styles y hace una inesperada confesi&oacute;n sobre su romance<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li data-wp-key=\"post-template-item-71906\" class=\"wp-block-post post-71906 post type-post status-publish format-standard has-post-thumbnail hentry category-noticias tag-accidente tag-choque tag-confirmacion tag-helicopteros tag-oliver-tree tag-restos tag-rio-de-janeiro\">\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><figure style=\"aspect-ratio:16\/9\" class=\"wp-block-post-featured-image\"><a href=\"https:\/\/alfaenlinea.com\/notas\/oliver-tree-fue-identificado-como-ultima-victima-tras-choque-de-helicopteros-en-brasil\/\" target=\"_self\"><img width=\"300\" height=\"169\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260617_ConfirmanOliverTree-300x169.jpg\" class=\"has-border-color has-custom-off-white-border-color wp-post-image\" alt=\"Oliver Tree fue identificado como &uacute;ltima v&iacute;ctima tras choque de helic&oacute;pteros en Brasil\" style=\"border-width:1px;width:100%;height:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260617_ConfirmanOliverTree-300x169.jpg 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260617_ConfirmanOliverTree-1024x576.jpg 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260617_ConfirmanOliverTree-768x432.jpg 768w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/06\/Nota_20260617_ConfirmanOliverTree.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/figure>\n\n\n<div class=\"wp-block-group slide-text has-small-font-size tw-stretched-link has-global-padding is-layout-constrained wp-container-core-group-is-layout-4f3bb7c5 wp-block-group-is-layout-constrained\"><h2 style=\"font-style:normal;font-weight:600;line-height:1.3;padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)\" class=\"wp-block-post-title has-small-font-size has-manrope-font-family\"><a href=\"https:\/\/alfaenlinea.com\/notas\/oliver-tree-fue-identificado-como-ultima-victima-tras-choque-de-helicopteros-en-brasil\/\" target=\"_self\">Oliver Tree fue identificado como &uacute;ltima v&iacute;ctima tras choque de helic&oacute;pteros en Brasil<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><\/ul><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-buttons alignwide is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-f54139b1 wp-block-buttons-is-layout-flex\" style=\"padding-top:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-custom-rojo-background-color has-background has-small-font-size has-custom-font-size wp-element-button\" href=\"\/notas\/\">M&aacute;s notas<\/a><\/div>\n<\/div>\n<\/div>\n<\/main>\n\n\n<footer class=\"wp-block-template-part\">\n<div class=\"wp-block-group has-custom-off-white-color has-custom-fondo-background-color has-text-color has-background has-link-color wp-elements-0e4e937ff3d3c945e8068cca13115fe1 has-global-padding is-layout-constrained wp-container-core-group-is-layout-1341d353 wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:0px;border-top-right-radius:0px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-group alignfull is-layout-flow wp-block-group-is-layout-flow\" style=\"padding-bottom:var(--wp--preset--spacing--50)\">\n\n<div class=\"grc-ad-wrapper\">\n<div id=\"div-gpt-ad-top04\" style=\"min-width:320px;display:flex;justify-content:center;margin:20px auto;\"><\/div>\n<\/div>\n\n\n<div class=\"grc-ad-wrapper\">\n<div id=\"div-gpt-ad-t-06\" style=\"min-width:320px;display:flex;justify-content:center;margin:20px auto;\"><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-columns tw-cols-stack-md is-layout-flex wp-container-core-columns-is-layout-794e3cfa wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"is-default-size aligncenter wp-block-site-logo\"><a href=\"https:\/\/alfaenlinea.com\/\" class=\"custom-logo-link\" rel=\"home\"><img loading=\"lazy\" width=\"1080\" height=\"1080\" src=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1.png\" class=\"custom-logo\" alt=\"Alfa 91.3 FM\" decoding=\"async\" srcset=\"https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1.png 1080w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1-300x300.png 300w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1-1024x1024.png 1024w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1-150x150.png 150w, https:\/\/grc-media.nyc3.cdn.digitaloceanspaces.com\/uploads\/sites\/4\/2026\/05\/logo_app_alfa-1-768x768.png 768w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\"><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><p class=\"has-text-align-center wp-block-site-tagline\">Donde todo nace<\/p>\n\n\n<div id=\"redes-block\" class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-b66d8864 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><style>\n        span.dashicons {\n            vertical-align: middle;\n        }\n    <\/style>\n<div class=\"redes-sociales-scf-container\" style=\"display: flex; gap: 16px; align-items: center;\"><a href=\"https:\/\/www.facebook.com\/Alfa913mx\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-facebook\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><span class=\"dashicons dashicons-facebook-alt\" style=\"font-size: 16px; width: 16px; height: 16px;\"><\/span><\/a><a href=\"https:\/\/www.instagram.com\/alfa913fm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-instagram\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><span class=\"dashicons dashicons-instagram\" style=\"font-size: 16px; width: 16px; height: 16px;\"><\/span><\/a><a href=\"https:\/\/www.youtube.com\/@Alfa913FM\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-youtube\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><span class=\"dashicons dashicons-youtube\" style=\"font-size: 16px; width: 16px; height: 16px;\"><\/span><\/a><a href=\"https:\/\/x.com\/alfa913fm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-x\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\" style=\"width: 16px; height: 16px; fill: currentColor; vertical-align: middle;\"><path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path><\/svg><\/a><a href=\"https:\/\/www.tiktok.com\/@alfa913fm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"red-social-link red-tik_tok\" style=\"text-decoration: none; color: inherit; transition: opacity 0.3s;\" onmouseover=\"this.style.opacity=0.7\" onmouseout=\"this.style.opacity=1\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 448 512\" style=\"width: 16px; height: 16px; fill: currentColor; vertical-align: middle;\"><path d=\"M448 209.9a210.1 210.1 0 0 1 -122.8-39.3V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.6 74.6 0 1 0 52.2 71.2V0l88 0a121.2 121.2 0 0 0 1.9 22.2h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.1z\"><\/path><\/svg><\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><nav style=\"font-style:normal;font-weight:800;text-transform:uppercase\" class=\"has-small-font-size items-justified-right is-vertical wp-block-navigation has-syne-font-family is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-f483d7ca wp-block-navigation-is-layout-flex\" aria-label=\"Navegaci&oacute;n 2\"><ul style=\"font-style:normal;font-weight:800;text-transform:uppercase\" class=\"wp-block-navigation__container has-small-font-size items-justified-right is-vertical wp-block-navigation has-syne-font-family\"><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/\"><span class=\"wp-block-navigation-item__label\">Home<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"https:\/\/alfaenlinea.com\/notas\/\"><span class=\"wp-block-navigation-item__label\">Alfa News<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"https:\/\/alfaenlinea.com\/tipo-de-cancion\/estrenos\/\"><span class=\"wp-block-navigation-item__label\">Alfa Estrenos<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/alfa-conteo\"><span class=\"wp-block-navigation-item__label\">Alfa Conteo<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/videos\"><span class=\"wp-block-navigation-item__label\">Videos<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/galerias\"><span class=\"wp-block-navigation-item__label\">Galer&iacute;as<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/programas\"><span class=\"wp-block-navigation-item__label\">Programas<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/locutores\"><span class=\"wp-block-navigation-item__label\">Locutores<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\" href=\"\/podcasts\"><span class=\"wp-block-navigation-item__label\">Podcasts<\/span><\/a><\/li><\/ul><\/nav><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-cf87bc72 wp-block-group-is-layout-flex\" style=\"padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)\">\n<p class=\"has-small-font-size wp-block-paragraph\">Copyright &copy; 2026 <a href=\"http:\/\/grc.mx\">Grupo Radio Centro<\/a>. Todos los derechos reservados<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-cb0a7ccb wp-block-group-is-layout-flex\">\n<p class=\"has-custom-fondo-color has-text-color has-link-color has-small-font-size wp-elements-424707879a9a4ae371189599c587ddf6 wp-block-paragraph\">Desarrollada por <a href=\"https:\/\/productosdigitales.mx\">Productos Digitales&reg;<\/a><\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><a href=\"https:\/\/laz.mx\/aviso-de-privacidad\/\" data-type=\"page\" data-id=\"61075\">Aviso de privacidad<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:128px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n<\/div>\n<\/footer><\/div>\n    <script type=\"text\/javascript\">\n    (function() {\n        function forceBlankTarget(e) {\n            var link = e.target.closest('a');\n            \n            \/\/ Verificamos:\n            \/\/ 1. Que el link exista y tenga target=\"_blank\"\n            \/\/ 2. Que NO sea un link del men&uacute; de navegaci&oacute;n (clase wp-block-navigation-item__content)\n            if (link && \n                link.getAttribute('target') === '_blank' && \n                !link.classList.contains('wp-block-navigation-item__content')) {\n                \n                \/\/ Detener otros scripts (como AJAX de plugins)\n                e.stopImmediatePropagation();\n                \n                var url = link.getAttribute('href');\n                if (url && url !== '#') {\n                    window.open(url, '_blank');\n                    e.preventDefault();\n                }\n            }\n        }\n\n        \/\/ 'capture: true' para ser los primeros en responder al click\n        document.addEventListener('click', forceBlankTarget, { capture: true });\n    })();\n    <\/script>\n    <script type=\"speculationrules\">\n{\"prefetch\":[{\"source\":\"document\",\"where\":{\"and\":[{\"href_matches\":\"\/*\"},{\"not\":{\"href_matches\":[\"\/wp-*.php\",\"\/wp-admin\/*\",\"\/uploads\/sites\/4\/*\",\"\/wp-content\/*\",\"\/wp-content\/plugins\/*\",\"\/wp-content\/themes\/twentytwentyfive\/*\",\"\/*\\\\?(.+)\"]}},{\"not\":{\"selector_matches\":\"a[rel~=\\\"nofollow\\\"]\"}},{\"not\":{\"selector_matches\":\".no-prefetch, .no-prefetch a\"}}]},\"eagerness\":\"conservative\"}]}\n<\/script>\n<script>\n(function() {\n    var _radioId = 'persistent-radio-iframe';\n\n    \/\/ Assign a stable ID to the radio iframe.\n    \/\/ grc-radio-player.php creates the container via requestIdleCallback and\n    \/\/ dispatches grc:radio-container-ready when it's in the DOM.\n    document.addEventListener('grc:radio-container-ready', function() {\n        var rc = document.getElementById('persistent-radio-container');\n        if (!rc) return;\n        var rf = rc.querySelector('iframe');\n        if (rf && !rf.id)    rf.id    = _radioId;\n        if (rf && !rf.title) rf.title = 'Reproductor de radio';\n    });\n\n    function enableYouTubeAPI(iframe) {\n        var src = iframe.src || '';\n        if (!src || (src.indexOf('youtube.com') === -1 && src.indexOf('youtu.be') === -1)) return;\n        \/\/ Raw oEmbed iframes (WordPress auto-embeds from wp:embed blocks, e.g.\n        \/\/ \"...\/embed\/ID?feature=oembed\") are already mid-load by the time\n        \/\/ DOMContentLoaded fires. Rewriting .src here aborts (net::ERR_ABORTED)\n        \/\/ and restarts that in-flight request, which leaves YouTube's player\n        \/\/ script in a broken state &mdash; it never stops retrying a postMessage\n        \/\/ handshake, and Ajaxpress's background-iframe promotion (which waits\n        \/\/ on this iframe's load\/readyState) never completes, hanging the SPA\n        \/\/ loader forever. These iframes were never wired into the radio-pause\n        \/\/ system anyway, so skip them outright instead of patching them.\n        if (src.indexOf('feature=oembed') !== -1) return;\n        var newSrc = src;\n        if (newSrc.indexOf('enablejsapi=1') === -1)\n            newSrc += (newSrc.indexOf('?') === -1 ? '?' : '&') + 'enablejsapi=1';\n        if (newSrc.indexOf('origin=') === -1)\n            newSrc += '&origin=' + encodeURIComponent(window.location.origin);\n        if (newSrc !== src) iframe.src = newSrc;\n    }\n\n    document.addEventListener('DOMContentLoaded', function() {\n        \/\/ Patch all YouTube iframes already in the DOM at load time.\n        var frames = document.querySelectorAll('iframe');\n        for (var i = 0; i < frames.length; i++) enableYouTubeAPI(frames[i]);\n\n        \/\/ Watch only the video modal container for dynamically-injected YouTube\n        \/\/ iframes. Snippet #20 does: videoBody.innerHTML = '<iframe src=\"...yt...\">'\n        \/\/ which is a childList mutation on #modal-video-body. Scoping the observer\n        \/\/ here instead of document.body avoids firing on every ad render \/ Swiper\n        \/\/ transition \/ Ajaxpress DOM change.\n        var modalBody = document.getElementById('modal-video-body');\n        if (modalBody) {\n            new MutationObserver(function(mutations) {\n                mutations.forEach(function(m) {\n                    for (var i = 0; i < m.addedNodes.length; i++) {\n                        var node = m.addedNodes[i];\n                        if (node.tagName === 'IFRAME') {\n                            enableYouTubeAPI(node);\n                            \/\/ Stop radio immediately &mdash; don't wait for playerState=1\n                            \/\/ since the src reload from enableYouTubeAPI happens\n                            \/\/ outside the user-gesture context, which can block autoplay.\n                            pauseRadioWidget();\n                            \/\/ Subscribe to playerState events. YouTube only sends\n                            \/\/ infoDelivery after receiving a 'listening' message;\n                            \/\/ iframe_api.js normally handles this but the modal iframe\n                            \/\/ has no YT.Player wrapper. Send it once the frame loads.\n                            (function(f) {\n                                f.addEventListener('load', function() {\n                                    try {\n                                        f.contentWindow.postMessage(\n                                            JSON.stringify({event: 'listening', id: '1', channel: 'widget'}), '*'\n                                        );\n                                    } catch(e) {}\n                                });\n                            })(node);\n                        }\n                    }\n                });\n            }).observe(modalBody, { childList: true });\n        }\n    });\n\n    function softPauseYouTubeVideos() {\n        \/\/ Recurse into same-origin nested iframes (e.g. Ajaxpress content iframe).\n        \/\/ Raw postMessage alone is insufficient &mdash; YouTube's IFrame API only accepts\n        \/\/ commands after its initialization handshake. Call pauseVideo() directly on\n        \/\/ the YT.Player instances stored by grc-youtube.php (_ytFacadePlayers,\n        \/\/ ytShortPlayers), then fall back to postMessage for any non-API iframes.\n        function pauseInDoc(doc, win) {\n            try {\n                [win._ytFacadePlayers, win.ytShortPlayers].forEach(function(map) {\n                    if (!map) return;\n                    Object.keys(map).forEach(function(k) {\n                        try { var p = map[k]; if (p && typeof p.pauseVideo === 'function') p.pauseVideo(); } catch(e2) {}\n                    });\n                });\n            } catch(e) {}\n            var frames = doc.querySelectorAll('iframe');\n            for (var i = 0; i < frames.length; i++) {\n                var src = frames[i].src || '';\n                if (src.indexOf('youtube.com') !== -1 || src.indexOf('youtube-nocookie.com') !== -1 || src.indexOf('youtu.be') !== -1) {\n                    try { frames[i].contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*'); } catch(e) {}\n                }\n                try { if (frames[i].contentDocument) pauseInDoc(frames[i].contentDocument, frames[i].contentWindow); } catch(e) {}\n            }\n        }\n        pauseInDoc(document, window);\n    }\n    \/\/ Expose on window (each context) and window.top.\n    \/\/ window.top is for grc-ads-network.php's preroll overlay handler.\n    \/\/ window._grcPauseYouTube on each frame lets the radio-playing handler invoke\n    \/\/ softPauseYouTubeVideos in the content iframe's own JS context &mdash; YouTube\n    \/\/ validates event.source === window.parent for postMessage commands, so\n    \/\/ pauseVideo sent from the top window is silently rejected for YouTube iframes\n    \/\/ nested inside same-origin Ajaxpress frames.\n    window._grcPauseYouTube = softPauseYouTubeVideos;\n    window.top._grcPauseYouTube = softPauseYouTubeVideos;\n\n    function forceStopYouTubeVideos() {\n        softPauseYouTubeVideos();\n        var frames = document.querySelectorAll('iframe');\n        for (var i = 0; i < frames.length; i++) {\n            var src = frames[i].src || '';\n            if (src.indexOf('youtube.com') !== -1 || src.indexOf('youtu.be') !== -1) {\n                var cur = frames[i].src;\n                frames[i].src = 'about:blank';\n                (function(f, s) { setTimeout(function() { f.src = s; }, 500); })(frames[i], cur);\n            }\n        }\n    }\n\n    \/\/ Set when we send 'stop' to the radio. Prevents playRadioWidget() from\n    \/\/ sending 'resume' for YouTube pauses when radio was never playing.\n    var _radioPausedByUs = false;\n\n    \/\/ Debounce timer for playRadioWidget(). When a user switches from one video\n    \/\/ to another, the outgoing video fires playerState=2 and the incoming fires\n    \/\/ playerState=1. Without the debounce, the playerState=2 calls playRadioWidget()\n    \/\/ before playerState=1 cancels it, causing a spurious radio resume + immediate\n    \/\/ re-pause that manifests as the new video playing for milliseconds then stopping.\n    var _resumeTimer = null;\n\n    \/\/ Exposed so the top-window 'radio-playing' handler can reset this flag\n    \/\/ in the content-iframe instance before the infoDelivery playerState=2\n    \/\/ (triggered by our own pauseVideo call) arrives and fires playRadioWidget.\n    window._grcCancelAutoResume = function() { _radioPausedByUs = false; };\n\n    function pauseRadioWidget() {\n        var rf = window.top.document.getElementById(_radioId);\n        if (!rf || !rf.contentWindow) return;\n        _radioPausedByUs = true;\n        rf.contentWindow.postMessage('stop', 'https:\/\/app.grc.mx');\n    }\n\n    function playRadioWidget() {\n        if (!_radioPausedByUs) return;\n        _radioPausedByUs = false;\n        var rf = window.top.document.getElementById(_radioId);\n        if (!rf || !rf.contentWindow) return;\n        rf.contentWindow.postMessage('resume', 'https:\/\/app.grc.mx');\n    }\n\n    window.addEventListener('message', function(e) {\n        \/\/ Plain-string from Flutter Timer.periodic: isStreaming just became true.\n        if (e.data === 'radio-playing') {\n            \/\/ Reset _radioPausedByUs in BOTH the top window and the content iframe\n            \/\/ before pausing YouTube. pauseVideo() triggers infoDelivery playerState=2\n            \/\/ which calls playRadioWidget() &mdash; if _radioPausedByUs is still true it\n            \/\/ would send 'resume' and toggle the radio back off immediately.\n            \/\/ On direct page load the video is in the top window, so YouTube messages\n            \/\/ land here; on SPA navigation the video is in the Ajaxpress content\n            \/\/ iframe, so messages land there. Both instances must be reset.\n            _radioPausedByUs = false;\n            try {\n                var _ac = document.getElementById('ajaxpress-container');\n                if (_ac && _ac.contentWindow._grcCancelAutoResume) _ac.contentWindow._grcCancelAutoResume();\n                \/\/ Pause podcast iframes in the content frame (SPA navigation case).\n                if (_ac && _ac.contentWindow._grcPausePodcasts) _ac.contentWindow._grcPausePodcasts();\n                \/\/ Pause YouTube from the content iframe's own context &mdash; YouTube only\n                \/\/ accepts postMessage commands from window.parent (the direct parent\n                \/\/ frame), so sending from the top window is silently rejected.\n                if (_ac && _ac.contentWindow._grcPauseYouTube) _ac.contentWindow._grcPauseYouTube();\n            } catch(_e) {}\n            \/\/ Pause podcast iframes in the top window (direct page load case).\n            if (typeof window._grcPausePodcasts === 'function') window._grcPausePodcasts();\n            softPauseYouTubeVideos(); \/\/ handles YouTube direct in top window\n            return;\n        }\n        var data;\n        try { data = typeof e.data === 'string' ? JSON.parse(e.data) : e.data; } catch(ex) { return; }\n        if (!data) return;\n        if (data.event === 'infoDelivery' && data.info) {\n            if (data.info.playerState === 1) {                                           \/\/ PLAYING\n                \/\/ Cancel any pending resume &mdash; another video just started.\n                if (_resumeTimer) { clearTimeout(_resumeTimer); _resumeTimer = null; }\n                pauseRadioWidget();\n            }\n            if (data.info.playerState === 2 || data.info.playerState === 0) {           \/\/ PAUSED \/ ENDED\n                \/\/ Debounce before resuming radio. Two cases when switching videos:\n                \/\/ (A) outgoing fires playerState=2 before incoming fires playerState=1\n                \/\/     &rarr; playerState=1 cancels the timer &#10003;\n                \/\/ (B) incoming fires playerState=1 first, outgoing fires playerState=2\n                \/\/     &rarr; timer fires, but isAnyYouTubePlaying() sees the incoming\n                \/\/       player still in state 1 and blocks the resume &#10003;\n                if (_resumeTimer) clearTimeout(_resumeTimer);\n                _resumeTimer = setTimeout(function() {\n                    _resumeTimer = null;\n                    \/\/ Don't resume if another YT player is still playing.\n                    var anyPlaying = false;\n                    try {\n                        [window._ytFacadePlayers, window.ytShortPlayers].forEach(function(map) {\n                            if (!map) return;\n                            Object.keys(map).forEach(function(k) {\n                                var p = map[k];\n                                if (p && typeof p.getPlayerState === 'function' && p.getPlayerState() === 1) anyPlaying = true;\n                            });\n                        });\n                    } catch(e) {}\n                    if (!anyPlaying) playRadioWidget();\n                }, 300);\n            }\n        }\n        if (data.source === 'grc-radio-widget' && data.action === 'playing') softPauseYouTubeVideos();\n    });\n\n    window.addEventListener('blur', function() {\n        setTimeout(function() {\n            \/\/ Always read the top window's activeElement.\n            \/\/ In the top window this is the same as document.activeElement.\n            \/\/ In an Ajaxpress content iframe document.activeElement may still\n            \/\/ point at the YouTube <iframe> element (browsers don't always reset\n            \/\/ it to body on blur), so checking it directly would short-circuit\n            \/\/ before we ever look at which iframe actually gained focus.\n            try {\n                var el = (window.top !== window)\n                    ? window.top.document.activeElement\n                    : document.activeElement;\n                if (el && el.tagName === 'IFRAME' && el.src && el.src.indexOf('app.grc.mx\/estacionWidget') !== -1) {\n                    \/\/ User tapped the radio widget &mdash; reset _radioPausedByUs before\n                    \/\/ pausing YouTube so the resulting playerState=2 doesn't trigger\n                    \/\/ playRadioWidget() to send a spurious 'resume' to Flutter.\n                    _radioPausedByUs = false;\n                    softPauseYouTubeVideos();\n                }\n            } catch(e) {}\n            \/\/ If a Simplecast iframe gained focus in THIS window, stop the radio.\n            \/\/ Spreaker is now a native <audio> element &mdash; its play event handles radio stopping.\n            \/\/ Simplecast is still an iframe with no JS API; blur is the only hook.\n            try {\n                var local = document.activeElement;\n                if (local && local.tagName === 'IFRAME' && local.src &&\n                    local.src.indexOf('player.simplecast.com') !== -1) {\n                    var rf = window.top.document.getElementById(_radioId);\n                    if (rf && rf.contentWindow) rf.contentWindow.postMessage('stop', 'https:\/\/app.grc.mx');\n                }\n            } catch(e) {}\n        }, 50);\n    });\n\n    document.addEventListener('click', function(e) {\n        var link = e.target.closest('a');\n        if (link && link.href && link.hostname === window.location.hostname &&\n            !link.getAttribute('href').startsWith('#') && link.target !== '_blank') {\n            forceStopYouTubeVideos();\n            setTimeout(playRadioWidget, 600);\n        }\n    }, true);\n\n    window.addEventListener('popstate', function() {\n        forceStopYouTubeVideos();\n        setTimeout(playRadioWidget, 600);\n    });\n})();\n<\/script>\n    <style>\n.grc-podcast-container{width:100%}\n.grc-podcast-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}\n.grc-podcast-grid .episodio-wrapper{background:#fff;box-shadow:0 0 21px #0000002b;padding:16px;border-radius:16px}\n.grc-podcast-list{display:flex;flex-direction:column;gap:40px}\n.episodio-wrapper{display:flex;flex-direction:column}\n.episodio-contenido{margin-top:20px;font-size:16px;line-height:1.6}\n.grc-podcast-btn-container{grid-column:1\/-1;width:100%;margin-top:20px;text-align:center}\n.grc-podcast-btn-container a{display:block!important;width:100%!important;box-sizing:border-box;background-color:var(--wp--preset--color--custom-highlight,#E04050)!important;color:#fff!important}\n@media(max-width:600px){.grc-podcast-grid{grid-template-columns:1fr}}\n\n\/* Facade *\/\n.podcast-facade{display:flex;align-items:stretch;background:#1a1a2e;border-radius:12px;overflow:hidden;cursor:pointer;box-shadow:0 0 20px rgba(0,0,8,.5);transition:opacity .15s}\n.podcast-facade:hover{opacity:.9}\n.podcast-facade:focus{outline:2px solid var(--wp--preset--color--custom-highlight,#E04050);outline-offset:2px}\n.pf-cover-wrap{flex-shrink:0;width:80px;height:80px;align-self:center;overflow:hidden;background:rgba(255,255,255,.08)}\n.pf-cover-wrap img{width:100%;height:100%;object-fit:cover;display:block}\n.pf-body{display:flex;align-items:center;gap:12px;padding:14px;flex:1;min-width:0}\n.pf-play-icon{flex-shrink:0;width:40px;height:40px;border-radius:50%;background:var(--wp--preset--color--custom-highlight,#E04050);display:flex;align-items:center;justify-content:center;color:#fff;transition:transform .2s}\n.podcast-facade:hover .pf-play-icon,.podcast-facade:focus .pf-play-icon{transform:scale(1.1)}\n.pf-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}\n.pf-title{color:#fff;font-size:13px;line-height:1.4;font-weight:500}\n.pf-date{color:rgba(255,255,255,.4);font-size:11px}\n.pf-download{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.45);border-radius:50%;transition:color .2s,background .2s;text-decoration:none}\n.pf-download:hover{color:#fff;background:rgba(255,255,255,.12)}\n.pf-download svg{width:18px;height:18px;display:block}\n\n\/* Custom audio player (Spreaker direct MP3) *\/\n.grc-audio-player{display:flex;align-items:stretch;background:#1a1a2e;border-radius:12px;overflow:hidden;box-shadow:0 0 20px rgba(0,0,8,.5)}\n.grc-ap-cover{flex-shrink:0;width:80px;height:80px;align-self:center;overflow:hidden;background:rgba(255,255,255,.08)}\n.grc-ap-cover img{width:100%;height:100%;object-fit:cover;display:block}\n.grc-ap-body{flex:1;min-width:0;padding:10px 14px;display:flex;flex-direction:column;justify-content:center;gap:2px}\n.grc-ap-title{color:#fff;font-size:13px;font-weight:600;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.grc-ap-author{color:rgba(255,255,255,.45);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:14px}\n.grc-ap-controls{display:flex;align-items:center;gap:8px;margin-top:6px}\n.grc-ap-btn{flex-shrink:0;width:34px;height:34px;border-radius:50%;background:var(--wp--preset--color--custom-highlight,#E04050);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:transform .2s;padding:0}\n.grc-ap-btn:hover{transform:scale(1.1)}\n.grc-ap-btn svg{width:17px;height:17px;fill:currentColor;display:block}\n.grc-ap-waveform{flex:1;cursor:pointer;display:flex;align-items:center}\n.grc-ap-waveform svg{width:100%;display:block}\n.grc-ap-time{flex-shrink:0;color:rgba(255,255,255,.45);font-size:10px;white-space:nowrap}\n.grc-ap-download{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.45);border-radius:50%;transition:color .2s,background .2s;text-decoration:none}\n.grc-ap-download:hover{color:#fff;background:rgba(255,255,255,.12)}\n.grc-ap-download svg{width:16px;height:16px;display:block;fill:currentColor}\n\n\/* Pagination *\/\n.grc-podcast-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:32px}\n.grc-pp-btn{display:inline-flex;align-items:center;padding:8px 18px;border-radius:8px;background:var(--wp--preset--color--custom-highlight,#E04050);color:#fff;text-decoration:none;font-size:14px;font-weight:500;transition:opacity .15s}\n.grc-pp-btn:hover{opacity:.85}\n.grc-pp-info{color:var(--wp--preset--color--custom-off-white,#eae8ed);font-size:13px}\n\n\/* Simplecast fallback iframe *\/\n.podcast-loaded-iframe{width:100%;border:none;border-radius:12px;display:block;box-shadow:0 0 20px rgba(0,0,8,.5)}\n\n@media(max-width:400px){.pf-cover-wrap,.grc-ap-cover{width:64px;height:64px}}\n<\/style>\n<script>\n(function() {\n    var SVG_PLAY  = '<svg viewBox=\"0 0 24 24\"><path d=\"M8 5v14l11-7z\"\/>';\n    var SVG_PAUSE = '<svg viewBox=\"0 0 24 24\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"\/>';\n    var ACCENT    = 'var(--wp--preset--color--custom-highlight,#E04050)';\n    var _wfCount  = 0;\n\n    \/\/ Tracks all active podcast players (Spreaker audio wrappers + Simplecast iframes).\n    window._grcActivePodcastFrames = window._grcActivePodcastFrames || [];\n\n    \/\/ Called by grc-audio-manager on radio-playing.\n    \/\/ Spreaker: pause() preserves playback position.\n    \/\/ Simplecast: restore facade (no JS pause API on cross-origin iframe).\n    window._grcPausePodcasts = function() {\n        (window._grcActivePodcastFrames || []).forEach(function(p) {\n            if (!p || !p.isConnected) return;\n            if (p._grcAudio) {\n                p._grcAudio.pause();\n            } else if (p._grcFacade) {\n                p.replaceWith(p._grcFacade);\n            } else {\n                p.src = 'about:blank';\n            }\n        });\n        \/\/ Keep Spreaker players &mdash; they stay in DOM and can be paused again.\n        window._grcActivePodcastFrames = window._grcActivePodcastFrames.filter(function(p) {\n            return p && p.isConnected && p._grcAudio;\n        });\n    };\n\n    function fmt(s) {\n        s = Math.floor(s || 0);\n        return Math.floor(s \/ 60) + ':' + ('0' + (s % 60)).slice(-2);\n    }\n\n    function stopRadio() {\n        try {\n            var rf = window.top.document.getElementById('persistent-radio-iframe');\n            if (rf && rf.contentWindow) rf.contentWindow.postMessage('stop', 'https:\/\/app.grc.mx');\n        } catch(e) {}\n    }\n\n    \/\/ Seeded PRNG (simple LCG &mdash; avoids Math.imul overflow concerns).\n    function seededRand(seed) {\n        var x = 0;\n        for (var i = 0; i < seed.length; i++) x += seed.charCodeAt(i);\n        x = (x || 54321) * 9301;\n        return function() {\n            x = (x * 9301 + 49297) % 233280;\n            return x \/ 233280;\n        };\n    }\n\n    \/\/ Build an SVG waveform. Returns { svg, clipRect, svgW, updateBars }.\n    function buildWaveformSVG(seed) {\n        var uid  = ++_wfCount;\n        var N    = 55, barW = 2, barGap = 1;\n        var svgW = N * (barW + barGap); \/\/ 165\n        var svgH = 32, mid = svgH \/ 2;\n        var ns   = 'http:\/\/www.w3.org\/2000\/svg';\n\n        var svg = document.createElementNS(ns, 'svg');\n        svg.setAttribute('viewBox', '0 0 ' + svgW + ' ' + svgH);\n        svg.setAttribute('preserveAspectRatio', 'none');\n\n        \/\/ clipPath for played-portion highlight.\n        var defs = document.createElementNS(ns, 'defs');\n        var cp   = document.createElementNS(ns, 'clipPath');\n        cp.setAttribute('id', 'grc-wf-' + uid);\n        var cpRect = document.createElementNS(ns, 'rect');\n        cpRect.setAttribute('x', '0');\n        cpRect.setAttribute('y', '0');\n        cpRect.setAttribute('width', '0');\n        cpRect.setAttribute('height', svgH);\n        cp.appendChild(cpRect);\n        defs.appendChild(cp);\n        svg.appendChild(defs);\n\n        var bgG = document.createElementNS(ns, 'g');\n        bgG.setAttribute('fill', 'rgba(255,255,255,0.2)');\n        var fgG = document.createElementNS(ns, 'g');\n        fgG.setAttribute('fill', '#fff');\n        fgG.setAttribute('clip-path', 'url(#grc-wf-' + uid + ')');\n        svg.appendChild(bgG);\n        svg.appendChild(fgG);\n\n        function drawBars(normHeights) {\n            while (bgG.firstChild) bgG.removeChild(bgG.firstChild);\n            while (fgG.firstChild) fgG.removeChild(fgG.firstChild);\n            normHeights.forEach(function(h, i) {\n                var bh = Math.max(3, h * (svgH - 4));\n                var bx = i * (barW + barGap);\n                var by = mid - bh \/ 2;\n                [bgG, fgG].forEach(function(g) {\n                    var r = document.createElementNS(ns, 'rect');\n                    r.setAttribute('x', bx);\n                    r.setAttribute('y', by);\n                    r.setAttribute('width', barW);\n                    r.setAttribute('height', bh);\n                    r.setAttribute('rx', '1');\n                    g.appendChild(r);\n                });\n            });\n        }\n\n        \/\/ Initial seeded placeholder so the player shows immediately.\n        var rand = seededRand(seed || 'default');\n        var raw  = [];\n        for (var i = 0; i < N; i++) raw.push(rand());\n        var seeded = raw.map(function(h, i) {\n            return (raw[Math.max(0, i - 1)] + h + raw[Math.min(N - 1, i + 1)]) \/ 3;\n        });\n        drawBars(seeded);\n\n        return {\n            svg: svg,\n            clipRect: cpRect,\n            svgW: svgW,\n            \/\/ Replace bars with real waveform points (max-pooled to N buckets).\n            updateBars: function(points) {\n                var sampled = [];\n                for (var i = 0; i < N; i++) {\n                    var s = Math.floor(i \/ N * points.length);\n                    var e = Math.floor((i + 1) \/ N * points.length);\n                    var mx = 0;\n                    for (var j = s; j < e; j++) if (points[j] > mx) mx = points[j];\n                    sampled.push(mx);\n                }\n                drawBars(sampled);\n            }\n        };\n    }\n\n    \/\/ Fetch episode metadata from Spreaker's public API (author name).\n    function fetchSpreakerMeta(epId, callback) {\n        if (!epId || !window.fetch) return;\n        fetch('https:\/\/api.spreaker.com\/v2\/episodes\/' + encodeURIComponent(epId))\n            .then(function(r) { return r.ok ? r.json() : null; })\n            .then(function(data) {\n                if (data && data.response && data.response.episode) callback(data.response.episode);\n            })\n            .catch(function() {});\n    }\n\n    function createAudioPlayer(src, title, coverUrl, epId, epDate, facade) {\n        var audio = new Audio(src);\n        audio.preload = 'none';\n\n        var wf = buildWaveformSVG(epId || title);\n\n        \/\/ Build DOM programmatically &mdash; avoids SVG-in-button innerHTML parsing quirks.\n\n        \/\/ Cover image\n        var coverDiv = document.createElement('div');\n        coverDiv.className = 'grc-ap-cover';\n        if (coverUrl) {\n            var coverImg = document.createElement('img');\n            coverImg.src = coverUrl;\n            coverImg.alt = '';\n            coverDiv.appendChild(coverImg);\n        }\n\n        \/\/ Play\/pause button\n        var btn = document.createElement('button');\n        btn.className = 'grc-ap-btn';\n        btn.setAttribute('aria-label', 'Reproducir');\n        btn.innerHTML = SVG_PLAY;\n\n        \/\/ Waveform container\n        var wfWrap = document.createElement('div');\n        wfWrap.className = 'grc-ap-waveform';\n        wfWrap.appendChild(wf.svg);\n\n        \/\/ Time display\n        var timeEl = document.createElement('span');\n        timeEl.className = 'grc-ap-time';\n        timeEl.textContent = '0:00 \/ &ndash;:&ndash;&ndash;';\n\n        \/\/ Download link (only for Spreaker &mdash; epId is present)\n        var dlLink = null;\n        if (epId) {\n            dlLink = document.createElement('a');\n            dlLink.className = 'grc-ap-download';\n            dlLink.href = '\/wp-admin\/admin-ajax.php?action=grc_podcast_dl&ep=' + encodeURIComponent(epId) + '&t=' + encodeURIComponent(title);\n            dlLink.setAttribute('download', title + '.mp3');\n            dlLink.title = 'Descargar episodio';\n            dlLink.innerHTML = '<svg viewBox=\"0 0 24 24\"><path d=\"M12 15.17 7.41 10.59 6 12l6 6 6-6-1.41-1.41L13 15.17V4h-1v11.17zM5 20h14v2H5z\"\/>';\n        }\n\n        \/\/ Controls row\n        var controls = document.createElement('div');\n        controls.className = 'grc-ap-controls';\n        controls.appendChild(btn);\n        controls.appendChild(wfWrap);\n        controls.appendChild(timeEl);\n        if (dlLink) controls.appendChild(dlLink);\n\n        \/\/ Title\n        var titleEl = document.createElement('div');\n        titleEl.className = 'grc-ap-title';\n        titleEl.textContent = title;\n\n        \/\/ Author (populated from API)\n        var authorEl = document.createElement('div');\n        authorEl.className = 'grc-ap-author';\n\n        \/\/ Body\n        var body = document.createElement('div');\n        body.className = 'grc-ap-body';\n        body.appendChild(titleEl);\n        body.appendChild(authorEl);\n        body.appendChild(controls);\n\n        \/\/ Outer wrapper\n        var wrap = document.createElement('div');\n        wrap.className = 'grc-audio-player';\n        wrap.appendChild(coverDiv);\n        wrap.appendChild(body);\n\n        \/\/ Show date immediately; API fills in show\/author when it arrives.\n        if (epDate) authorEl.textContent = epDate;\n\n        \/\/ Fetch metadata + real waveform from Spreaker API asynchronously.\n        if (epId) {\n            fetchSpreakerMeta(epId, function(ep) {\n                var parts = [];\n                if (ep.show && ep.show.title) parts.push(ep.show.title);\n                if (ep.author && ep.author.fullname) parts.push(ep.author.fullname);\n                if (epDate) parts.push(epDate);\n                if (parts.length) authorEl.textContent = parts.join(' \\u00B7 ');\n\n                if (ep.waveform_url && window.fetch) {\n                    fetch(ep.waveform_url)\n                        .then(function(r) { return r.ok ? r.json() : null; })\n                        .then(function(data) {\n                            var pts = data && data.response && data.response.points;\n                            if (pts && pts.length) {\n                                wf.updateBars(pts);\n                                \/\/ Re-apply progress on the new bars.\n                                if (audio.duration) {\n                                    wf.clipRect.setAttribute('width', (audio.currentTime \/ audio.duration) * wf.svgW);\n                                }\n                            }\n                        })\n                        .catch(function() {});\n                }\n            });\n        }\n\n        \/\/ Audio event handlers\n        btn.addEventListener('click', function() {\n            if (audio.paused) { audio.play(); } else { audio.pause(); }\n        });\n\n        audio.addEventListener('play', function() {\n            btn.innerHTML = SVG_PAUSE;\n            btn.setAttribute('aria-label', 'Pausar');\n            stopRadio();\n            try { if (typeof window.top._grcPauseYouTube === 'function') window.top._grcPauseYouTube(); } catch(e) {}\n            \/\/ Pause other active Spreaker players.\n            (window._grcActivePodcastFrames || []).forEach(function(p) {\n                if (p && p._grcAudio && p._grcAudio !== audio) p._grcAudio.pause();\n            });\n        });\n\n        audio.addEventListener('pause', function() {\n            btn.innerHTML = SVG_PLAY;\n            btn.setAttribute('aria-label', 'Reproducir');\n        });\n\n        audio.addEventListener('timeupdate', function() {\n            var pct = audio.duration ? audio.currentTime \/ audio.duration : 0;\n            wf.clipRect.setAttribute('width', pct * wf.svgW);\n            timeEl.textContent = fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration);\n        });\n\n        audio.addEventListener('loadedmetadata', function() {\n            timeEl.textContent = '0:00 \/ ' + fmt(audio.duration);\n        });\n\n        audio.addEventListener('ended', function() {\n            audio.currentTime = 0;\n            wf.clipRect.setAttribute('width', '0');\n            btn.innerHTML = SVG_PLAY;\n            btn.setAttribute('aria-label', 'Reproducir');\n        });\n\n        \/\/ Seek by clicking on the waveform.\n        wf.svg.addEventListener('click', function(e) {\n            if (!audio.duration) return;\n            var rect     = wf.svg.getBoundingClientRect();\n            var fraction = (e.clientX - rect.left) \/ rect.width;\n            audio.currentTime = fraction * audio.duration;\n            wf.clipRect.setAttribute('width', fraction * wf.svgW);\n        });\n\n        wrap._grcAudio  = audio;\n        wrap._grcFacade = facade;\n        return wrap;\n    }\n\n    function loadFacade(facade) {\n        var src    = facade.dataset.src;\n        var type   = facade.dataset.type;\n        var title  = facade.dataset.title  || '';\n        var cover  = facade.dataset.cover  || '';\n        var epId   = facade.dataset.epId   || '';\n        var date   = facade.dataset.date   || '';\n\n        stopRadio();\n        try { if (typeof window.top._grcPauseYouTube === 'function') window.top._grcPauseYouTube(); } catch(e) {}\n\n        if (type === 'spreaker') {\n            var player = createAudioPlayer(src, title, cover, epId, date, facade);\n            window._grcActivePodcastFrames.push(player);\n            facade.replaceWith(player);\n            player._grcAudio.play();\n        } else {\n            \/\/ Simplecast: iframe with autoplay param.\n            var iframe = document.createElement('iframe');\n            iframe.src = src + '&auto_play=true';\n            iframe.height = facade.dataset.height || '145';\n            iframe.setAttribute('frameborder', '0');\n            iframe.setAttribute('scrolling', 'no');\n            iframe.setAttribute('allow', 'autoplay');\n            iframe.className = 'podcast-loaded-iframe';\n            iframe._grcFacade = facade;\n            window._grcActivePodcastFrames.push(iframe);\n            facade.replaceWith(iframe);\n        }\n    }\n\n    function initFacades(root) {\n        (root || document).querySelectorAll('.podcast-facade:not(.pf-bound)').forEach(function(el) {\n            el.classList.add('pf-bound');\n            el.addEventListener('click', function() { loadFacade(el); });\n            el.addEventListener('keydown', function(e) {\n                if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); loadFacade(el); }\n            });\n            \/\/ Prevent download link from also triggering the player.\n            el.querySelectorAll('.pf-download').forEach(function(dl) {\n                dl.addEventListener('click', function(e) { e.stopPropagation(); });\n            });\n        });\n    }\n\n    document.addEventListener('DOMContentLoaded', function() {\n        initFacades();\n        \/\/ Stop audio before paginating &mdash; Audio objects survive Ajaxpress DOM swaps.\n        document.querySelectorAll('.grc-podcast-pagination a').forEach(function(link) {\n            link.addEventListener('click', function() {\n                (window._grcActivePodcastFrames || []).forEach(function(p) {\n                    if (p && p._grcAudio) p._grcAudio.pause();\n                });\n                window._grcActivePodcastFrames = [];\n            });\n        });\n    });\n})();\n<\/script>\n    <style>\n.yt-facade { position: absolute; top: 0; left: 0; width: 100%; height: 100%; cursor: pointer; }\n.yt-facade img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.yt-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); border: none; background: none; padding: 0; cursor: pointer; }\n.yt-play svg { width: 68px; height: 48px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); transition: transform .15s; }\n.yt-facade:hover .yt-play svg { transform: scale(1.1); }\n.short-video-wrapper { width: 100%; max-width: 100%; margin: 0 auto; }\n.short-play-btn {\n    position: absolute; inset: 0; z-index: 2;\n    display: flex; align-items: center; justify-content: center;\n    border: none; background: none; cursor: pointer; transition: opacity .2s;\n    touch-action: pan-y;\n}\n.short-play-btn svg { width: 68px; height: 48px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.6)); }\n.short-play-btn.is-playing { opacity: 0; }\n.short-video-container {\n    position: relative; width: 100%; padding-bottom: 177.78%;\n    height: 0; overflow: hidden; border-radius: 12px; background: #000;\n}\n.short-video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; }\n<\/style>\n<script>\n(function() {\n\n\/\/ &#9472;&#9472; Shared YouTube API loader &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\/\/ Injects youtube.com\/iframe_api at most once. Multiple callbacks can register\n\/\/ via _loadYouTubeAPI(fn); each is called when the API is ready (or immediately\n\/\/ if it already is). Fixes the snippet #7 \/ #30 race where each overwrote\n\/\/ window.onYouTubeIframeAPIReady, silently dropping the other's callback.\n\nwindow._ytCallbacks = window._ytCallbacks || [];\nwindow.onYouTubeIframeAPIReady = function() {\n    window._ytAPIReady = true;\n    window._ytCallbacks.forEach(function(cb) { try { cb(); } catch(e) {} });\n    window._ytCallbacks = [];\n};\n\nfunction _loadYouTubeAPI(callback) {\n    if (window._ytAPIReady) { try { callback(); } catch(e) {} return; }\n    window._ytCallbacks.push(callback);\n    if (!window._ytInjected) {\n        window._ytInjected = true;\n        var tag = document.createElement('script');\n        tag.src = 'https:\/\/www.youtube.com\/iframe_api';\n        document.head.appendChild(tag);\n    }\n}\n\n\/\/ &#9472;&#9472; GA4 video analytics (snippet #7 logic) &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\/\/ Only loads YouTube API when .lazy-youtube-analytics iframes are present\n\/\/ (i.e. on video\/track single pages). No-op on homepage and other pages.\n\nvar vTrack = {};\n\nfunction _createYTPlayer(iframeId) {\n    new YT.Player(iframeId, {\n        events: {\n            onStateChange: function(e) { _processStateChange(e, iframeId); }\n        }\n    });\n}\n\nfunction vincularVideosExistentes() {\n    document.querySelectorAll('.lazy-youtube-analytics').forEach(function(iframe) {\n        if (iframe.classList.contains('yt-ready') || !iframe.id) return;\n        iframe.classList.add('yt-ready');\n        _createYTPlayer(iframe.id);\n    });\n}\n\nfunction _processStateChange(e, id) {\n    var player = e.target;\n    var data   = player.getVideoData();\n    var title  = data.title || 'Video YouTube';\n    var url    = player.getVideoUrl();\n    var vId    = data.video_id;\n    if (!vTrack[vId]) vTrack[vId] = { start: false, p25: false, p50: false, p75: false, end: false, timer: null };\n\n    if (e.data == YT.PlayerState.PLAYING) {\n        if (!vTrack[vId].start) { _fireGA4('video_start', title, url); vTrack[vId].start = true; }\n        if (!vTrack[vId].timer) {\n            vTrack[vId].timer = setInterval(function() {\n                var t = player.getCurrentTime(), d = player.getDuration();\n                if (d > 0) {\n                    var pct = (t \/ d) * 100;\n                    if (pct >= 25 && !vTrack[vId].p25) { _fireGA4('video_progress', title, url, 25); vTrack[vId].p25 = true; }\n                    if (pct >= 50 && !vTrack[vId].p50) { _fireGA4('video_progress', title, url, 50); vTrack[vId].p50 = true; }\n                    if (pct >= 75 && !vTrack[vId].p75) { _fireGA4('video_progress', title, url, 75); vTrack[vId].p75 = true; }\n                }\n            }, 1000);\n        }\n    }\n    if (e.data == YT.PlayerState.PAUSED || e.data == YT.PlayerState.ENDED) {\n        if (vTrack[vId].timer) { clearInterval(vTrack[vId].timer); vTrack[vId].timer = null; }\n    }\n    if (e.data == YT.PlayerState.ENDED && !vTrack[vId].end) {\n        _fireGA4('video_complete', title, url); vTrack[vId].end = true;\n    }\n}\n\nfunction _fireGA4(event, title, url, percent) {\n    if (typeof gtag !== 'function') return;\n    var params = { video_title: title, video_url: url, video_provider: 'youtube', send_to: 'G-LN203FS1RF' };\n    if (percent) params.video_percent = percent;\n    gtag('event', event, params);\n}\n\n\/\/ &#9472;&#9472; Shorts lazy loader (snippet #30 logic) &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\/\/ Sets up IntersectionObserver on DOMContentLoaded. YouTube API is only loaded\n\/\/ when a Short actually enters the viewport &mdash; not on every page load.\n\nwindow.ytShortPlayers = window.ytShortPlayers || {};\n\nvar _playIconSVG = '<svg viewBox=\"0 0 68 48\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z\" fill=\"#f00\"\/><path d=\"M45 24 27 14v20\" fill=\"#fff\"\/>';\n\nwindow.initShortsObserver = function() {\n    var observer = new IntersectionObserver(function(entries) {\n        entries.forEach(function(entry) {\n            var iframe = entry.target;\n            if (entry.isIntersecting) {\n                if (!iframe.src && iframe.dataset.src) {\n                    iframe.src = iframe.dataset.src;\n                    iframe.onload = function() {\n                        _loadYouTubeAPI(function() {\n                            if (typeof YT === 'undefined' || !YT.Player) return;\n                            var container = iframe.closest('.short-video-container');\n                            var btn = container && container.querySelector('.short-play-btn');\n                            try {\n                                var player = new YT.Player(iframe.id, {\n                                    events: {\n                                        onStateChange: function(event) {\n                                            if (event.data == YT.PlayerState.PLAYING) {\n                                                \/\/ Pause other Shorts\n                                                Object.values(window.ytShortPlayers).forEach(function(p) {\n                                                    if (p && p !== event.target && typeof p.pauseVideo === 'function')\n                                                        p.pauseVideo();\n                                                });\n                                                if (btn) btn.classList.add('is-playing');\n                                            } else {\n                                                if (btn) btn.classList.remove('is-playing');\n                                            }\n                                        }\n                                    }\n                                });\n                                window.ytShortPlayers[iframe.id] = player;\n\n                                \/\/ Wire the overlay button now that the player is ready\n                                if (btn) {\n                                    btn.addEventListener('click', function() {\n                                        var state = player.getPlayerState ? player.getPlayerState() : -1;\n                                        if (state === YT.PlayerState.PLAYING) {\n                                            player.pauseVideo();\n                                        } else {\n                                            player.playVideo();\n                                        }\n                                    });\n                                }\n                            } catch(e) {}\n                        });\n                    };\n                }\n            } else {\n                var player = window.ytShortPlayers[iframe.id];\n                if (player && typeof player.pauseVideo === 'function') player.pauseVideo();\n            }\n        });\n    }, { threshold: 0.1 });\n\n    document.querySelectorAll('.short-video-iframe:not(.observed)').forEach(function(iframe) {\n        iframe.classList.add('observed');\n        observer.observe(iframe);\n\n        \/\/ Create play\/pause overlay. pointer-events:none on the iframe means Swiper\n        \/\/ sees drag events; this button provides playback control via the YT API instead.\n        var container = iframe.closest('.short-video-container');\n        if (container && !container.querySelector('.short-play-btn')) {\n            var btn = document.createElement('button');\n            btn.className = 'short-play-btn';\n            btn.setAttribute('aria-label', 'Reproducir');\n            btn.innerHTML = _playIconSVG;\n            container.appendChild(btn);\n        }\n    });\n};\n\n\/\/ &#9472;&#9472; Facade pre-warming via IntersectionObserver &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\n\/\/ When a .yt-facade enters the viewport we load its iframe and initialize\n\/\/ YT.Player in the background. On tap, player.playVideo() is then called\n\/\/ synchronously inside the click handler &mdash; the only way to get single-tap\n\/\/ playback on iOS. Creating an iframe with autoplay=1 on click does NOT\n\/\/ propagate the user gesture into the iframe's content on iOS Safari\/Chrome.\n\/\/ This mirrors the Shorts pattern exactly.\nwindow._ytFacadePlayers = window._ytFacadePlayers || {};\n\nwindow.initFacadeObserver = function() {\n    if (!('IntersectionObserver' in window)) return;\n    var obs = new IntersectionObserver(function(entries) {\n        entries.forEach(function(entry) {\n            if (!entry.isIntersecting) return;\n            var facade   = entry.target;\n            obs.unobserve(facade);\n            var iframeId = facade.dataset.iid;\n            var baseSrc  = facade.dataset.src;\n            if (!iframeId || !baseSrc || document.getElementById(iframeId)) return;\n            var iframe = document.createElement('iframe');\n            iframe.id        = iframeId;\n            \/\/ yt-ready prevents vincularVideosExistentes from double-initialising\n            \/\/ this player when the facade click falls through to the fallback path.\n            iframe.className = 'lazy-youtube-analytics yt-ready';\n            iframe.src       = baseSrc + '&playsinline=1'; \/\/ no autoplay &mdash; play() called on tap\n            iframe.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;border:0;opacity:0;pointer-events:none;';\n            iframe.setAttribute('allowfullscreen', '');\n            iframe.setAttribute('allow', 'autoplay; encrypted-media');\n            facade.parentNode.insertBefore(iframe, facade);\n            iframe.onload = function() {\n                _loadYouTubeAPI(function() {\n                    if (typeof YT === 'undefined' || !YT.Player) return;\n                    try {\n                        new YT.Player(iframeId, {\n                            events: {\n                                onReady: function(e) {\n                                    window._ytFacadePlayers[iframeId] = e.target;\n                                },\n                                onStateChange: function(e) { _processStateChange(e, iframeId); }\n                            }\n                        });\n                    } catch(e2) {}\n                });\n            };\n        });\n    }, { threshold: 0.1 });\n    document.querySelectorAll('.yt-facade:not(.facade-observed)').forEach(function(el) {\n        el.classList.add('facade-observed');\n        obs.observe(el);\n    });\n};\n\n\/\/ &#9472;&#9472; Facade &rarr; real iframe on click &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\ndocument.addEventListener('click', function(e) {\n    var facade = e.target.closest('.yt-facade');\n    if (!facade) return;\n    var iframeId = facade.dataset.iid;\n    var player   = window._ytFacadePlayers[iframeId];\n    var iframe   = document.getElementById(iframeId);\n    if (player && iframe) {\n        \/\/ Pre-warmed path: player ready &rarr; single tap works on iOS\n        iframe.style.opacity      = '1';\n        iframe.style.pointerEvents = '';\n        facade.remove();\n        player.playVideo();\n    } else if (iframe) {\n        \/\/ Observer fired but player not ready yet (iframe still loading) &mdash;\n        \/\/ show the iframe and let the user interact with YouTube's own UI.\n        iframe.style.opacity      = '1';\n        iframe.style.pointerEvents = '';\n        facade.remove();\n    } else {\n        \/\/ Fallback: facade visible before observer fires (e.g. no IntersectionObserver\n        \/\/ support, or element not yet in viewport). Desktop autoplay works; iOS\n        \/\/ may still need a second tap on YouTube's play button.\n        iframe = document.createElement('iframe');\n        iframe.id        = iframeId;\n        iframe.className = 'lazy-youtube-analytics';\n        iframe.src       = facade.dataset.src + '&autoplay=1&playsinline=1';\n        iframe.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;border:0;';\n        iframe.setAttribute('allowfullscreen', '');\n        iframe.setAttribute('allow', 'autoplay; encrypted-media');\n        facade.replaceWith(iframe);\n        _loadYouTubeAPI(vincularVideosExistentes);\n    }\n});\n\n\/\/ &#9472;&#9472; Bootstrap on DOMContentLoaded &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Remove unavailable Short containers before Swiper initialises.\n    \/\/ Shorts may live in a Swiper slide or in a plain WP columns list (li.wp-block-post).\n    document.querySelectorAll('.grc-short-na').forEach(function(el) {\n        var container = el.closest('.swiper-slide, li.wp-block-post');\n        if (container) container.remove();\n    });\n    \/\/ Trim overfetched Shorts back to the column count so extras don't create a second row.\n    document.querySelectorAll('ul[class*=\"columns-\"]').forEach(function(ul) {\n        if (!ul.querySelector('.short-video-wrapper, .grc-short-na')) return;\n        var m = ul.className.match(\/\\bcolumns-(\\d+)\\b\/);\n        if (!m) return;\n        var max = parseInt(m[1]);\n        ul.querySelectorAll('li.wp-block-post').forEach(function(li, i) {\n            if (i >= max) li.remove();\n        });\n    });\n    window.initFacadeObserver();\n    window.initShortsObserver();\n});\n\n\/\/ Fallback: if API was already loaded before DOMContentLoaded (edge case),\n\/\/ rerun vincularVideosExistentes on window.load.\nwindow.addEventListener('load', function() {\n    if (window._ytAPIReady) vincularVideosExistentes();\n});\n\n})();\n<\/script>\n    \n<div class=\"ajaxpress-progressbar progressbar-wave \" id=\"ajaxpress-progressbar\" style=\"\ntop: 0; bottom: auto; height: 3px; opacity: 80%; width: 0%; --progressbar-color: #037bff; --animation-speed: 1.5s;\"><\/div>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/fuse.js@7.0.0\"><\/script>\n\n<style>\n    .search-suggestions-container {\n        position: absolute !important;\n        background: #ffffff !important;\n        color: #000 !important;\n        border-radius: 12px;\n        box-shadow: 0 15px 40px rgba(0,0,0,0.4);\n        z-index: 99999999 !important;\n        display: none;\n        border: 1px solid #333;\n        max-height: 450px;\n        overflow-y: auto;\n    }\n    .suggestion-group-title {\n        background: #f1f1f1;\n        padding: 8px 15px;\n        font-size: 10px;\n        font-weight: 800;\n        text-transform: uppercase;\n        color: #d00;\n        border-bottom: 1px solid #ddd;\n    }\n    .suggestion-item {\n        display: flex !important;\n        align-items: center !important;\n        justify-content: space-between !important;\n        padding: 12px 15px;\n        cursor: pointer;\n        border-bottom: 1px solid #eee;\n        transition: background 0.2s;\n        text-decoration: none !important;\n    }\n    .suggestion-item:hover { background: #fff5f5; }\n    .suggestion-text-container { flex: 1; padding-right: 12px; }\n    .suggestion-title {\n        font-family: sans-serif;\n        font-size: 14px;\n        font-weight: 700;\n        color: #000;\n        display: block;\n        margin-bottom: 2px;\n    }\n    .suggestion-excerpt {\n        font-size: 11px;\n        color: #666;\n        display: -webkit-box;\n        -webkit-line-clamp: 1;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n        line-height: 1.2;\n    }\n    .suggestion-thumb {\n        width: 32px; \n        height: 32px; \n        min-width: 32px;\n        border-radius: 4px; \n        object-fit: cover;\n        background: #eee;\n    }\n<\/style>\n\n<script>\n(function() {\n    document.addEventListener('DOMContentLoaded', function() {\n        const searchInput = document.querySelector('.wp-block-search__input') || document.getElementById('wp-block-search__input-3');\n        if (!searchInput || typeof Fuse === 'undefined') return;\n\n        const resultsDiv = document.createElement('div');\n        resultsDiv.className = 'search-suggestions-container';\n        document.body.appendChild(resultsDiv);\n\n        const fuseOptions = {\n            keys: [{ name: 'title', weight: 0.7 }, { name: 'excerpt', weight: 0.3 }],\n            threshold: 0.4,\n            ignoreLocation: true\n        };\n\n        const forbiddenTypes = [\"attachment\",\"ads\",\"banner\",\"chart\",\"contendiente\",\"episodio\",\"estacion\",\"headers\",\"tu-decides\",\"votaciones\"];\n\n        function updatePosition() {\n            const rect = searchInput.getBoundingClientRect();\n            resultsDiv.style.width = rect.width + 'px';\n            resultsDiv.style.top = (rect.bottom + window.scrollY) + 'px';\n            resultsDiv.style.left = (rect.left + window.scrollX) + 'px';\n        }\n\n        const performSearch = async (e) => {\n            const term = e.target.value.trim();\n            if (term.length < 3) {\n                resultsDiv.style.display = 'none';\n                return;\n            }\n\n            try {\n                const response = await fetch(`\/wp-json\/wp\/v2\/search?search=${term}&per_page=15&_embed`);\n                const rawResults = await response.json();\n\n                const filteredData = rawResults.filter(item => !forbiddenTypes.includes(item.subtype));\n                const fuse = new Fuse(filteredData, fuseOptions);\n                const fuzzyResults = fuse.search(term).map(r => r.item);\n\n                if (fuzzyResults.length > 0) {\n                    let html = '';\n                    const grouped = fuzzyResults.reduce((acc, item) => {\n                        const type = item.subtype === 'post' ? 'Notas' : item.subtype;\n                        const label = type.charAt(0).toUpperCase() + type.slice(1);\n                        if (!acc[label]) acc[label] = [];\n                        acc[label].push(item);\n                        return acc;\n                    }, {});\n\n                    for (const [label, items] of Object.entries(grouped)) {\n                        html += `<div class=\"suggestion-group-title\">${label}`;\n                        items.forEach(item => {\n                            let imgUrl = '';\n                            try {\n                                const selfEmbed = item._embedded?.self?.[0];\n                                imgUrl = selfEmbed?.featured_media_src_url || \n                                         selfEmbed?._embedded?.['wp:featuredmedia']?.[0]?.source_url || '';\n                            } catch(err) {}\n\n                            const imgHtml = imgUrl ? `<img src=\"${imgUrl}\" class=\"suggestion-thumb\">` : '<div style=\"width:32px\">';\n                            const excerpt = item.excerpt ? item.excerpt.replace(\/<[^>]*>\/g, '').substring(0, 80) + '...' : '';\n\n                            html += `\n                                <a href=\"${item.url}\" class=\"suggestion-item\">\n                                    <div class=\"suggestion-text-container\">\n                                        <span class=\"suggestion-title\">${item.title}\n                                        <span class=\"suggestion-excerpt\">${excerpt}\n                                    \n                                    ${imgHtml}\n                                `;\n                        });\n                    }\n                    updatePosition();\n                    resultsDiv.innerHTML = html;\n                    resultsDiv.style.display = 'block';\n                } else {\n                    resultsDiv.style.display = 'none';\n                }\n            } catch (err) { console.error(\"Search error:\", err); }\n        };\n\n        let timeout;\n        searchInput.addEventListener('input', (e) => {\n            clearTimeout(timeout);\n            timeout = setTimeout(() => performSearch(e), 300);\n        });\n\n        document.addEventListener('click', (e) => {\n            if (!searchInput.contains(e.target) && !resultsDiv.contains(e.target)) {\n                resultsDiv.style.display = 'none';\n            }\n        });\n\n        document.addEventListener('keydown', (e) => {\n            if (e.key === 'Escape') resultsDiv.style.display = 'none';\n        });\n\n        window.addEventListener('resize', updatePosition);\n        window.addEventListener('scroll', updatePosition);\n    });\n})();\n<\/script>\n    <style>\n        #custom-gemini-modal {\n            display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;\n            background: rgba(0,0,0,0.96); z-index: 99999999;\n            justify-content: center; align-items: center; backdrop-filter: blur(12px); \n            padding: 20px; box-sizing: border-box;\n        }\n        .modal-container { \n            width: 100%; max-width: 800px; position: relative; \n            display: flex; flex-direction: column; align-items: center; gap: 20px; \n            box-sizing: border-box;\n        }\n        .modal-close-trigger { \n            position: absolute; top: -50px; right: 0; color: white; \n            font-size: 40px; cursor: pointer; line-height: 1; \n        }\n        .modal-video-side { width: 100%; max-width: 100%; }\n        .video-aspect-ratio { \n            position: relative; padding-bottom: 56.25%; height: 0; \n            background: #000; border-radius: 8px; overflow: hidden; \n            box-shadow: 0 10px 30px rgba(0,0,0,0.5);\n        }\n        .video-aspect-ratio iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }\n        .modal-ad-side {\n            min-width: 300px; min-height: 50px; width: 100%;\n            display: flex; justify-content: center; align-items: center; \n            position: relative; background: #111; border-radius: 4px;\n        }\n        .ad-loader {\n            border: 3px solid rgba(255, 255, 255, 0.1); border-radius: 50%; border-top: 3px solid #fff;\n            width: 30px; height: 30px; animation: spin-ad 1s linear infinite; position: absolute; z-index: 5;\n            display: none;\n        }\n        @keyframes spin-ad { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n\n        \/* AJUSTES PARA M&Oacute;VIL *\/\n        @media (max-width: 600px) {\n            #custom-gemini-modal { padding: 10px; }\n            .modal-close-trigger { top: -45px; right: 5px; font-size: 35px; }\n            .modal-container { gap: 15px; }\n        }\n    <\/style>\n\n    <div id=\"custom-gemini-modal\">\n        <div class=\"modal-container\">\n            <span class=\"modal-close-trigger\">&times;<\/span>\n            <div class=\"modal-video-side\">\n                <div id=\"modal-video-body\" class=\"video-aspect-ratio\"><\/div>\n            <\/div>\n            <div class=\"modal-ad-side\">\n                <div id=\"ad-spinner\" class=\"ad-loader\"><\/div>\n                <div id=\"div-gpt-ad-top06\" style=\"min-width: 300px; min-height: 50px;\">\n                  <script>\n                    googletag.cmd.push(function() { googletag.display('div-gpt-ad-top06'); });\n                  <\/script>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function() {\n        const modal = document.getElementById('custom-gemini-modal'),\n              videoBody = document.getElementById('modal-video-body'),\n              spinner = document.getElementById('ad-spinner');\n        \n        \/\/ Funci&oacute;n segura para buscar el radio tanto en el top window como en la ventana actual\n        const getRadioContainer = () => {\n            try {\n                \/\/ Intenta buscar arriba en la ventana principal (rompe el iframe)\n                return window.top.document.getElementById('persistent-radio-container') || document.getElementById('persistent-radio-container');\n            } catch (e) {\n                \/\/ Por si las dudas o bloqueos de pol&iacute;ticas de origen cruzado, usa el actual\n                return document.getElementById('persistent-radio-container');\n            }\n        };\n        \n        document.addEventListener('click', function(e) {\n            const btn = e.target.closest('.pop-up');\n            if (!btn) return;\n            e.preventDefault();\n\n            const dataScript = btn.querySelector('.acf-video-data') || btn.parentElement.querySelector('.acf-video-data');\n            \n            if (dataScript) {\n                const data = JSON.parse(dataScript.textContent);\n                modal.style.display = 'flex';\n                \n                \/\/ Ocultar el reproductor en la ventana ra&iacute;z o donde exista\n                const radioContainer = getRadioContainer();\n                if (radioContainer) {\n                    radioContainer.style.setProperty('display', 'none', 'important');\n                }\n\n                videoBody.innerHTML = `<iframe src=\"https:\/\/www.youtube.com\/embed\/${data.videoId}?enablejsapi=1&autoplay=1&rel=0\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen>`;\n                \n                if(spinner) spinner.style.display = 'block';\n                \n                if (window.googletag && googletag.apiReady) {\n                    googletag.cmd.push(function() {\n                        const slotId = 'div-gpt-ad-top06';\n                        const slots = googletag.pubads().getSlots();\n                        const existingSlot = slots.find(s => s.getSlotElementId() === slotId);\n                        if (existingSlot) {\n                            googletag.pubads().refresh([existingSlot]);\n                        } else {\n                            googletag.display(slotId);\n                        }\n                    });\n                    \n                    const adListener = function(event) {\n                        if (event.slot.getSlotElementId() === 'div-gpt-ad-top06') {\n                            if(spinner) spinner.style.display = 'none';\n                            googletag.pubads().removeEventListener('slotRenderEnded', adListener);\n                        }\n                    };\n                    googletag.pubads().addEventListener('slotRenderEnded', adListener);\n                } else {\n                    if(spinner) spinner.style.display = 'none';\n                }\n            }\n        });\n\n        const close = () => { \n            modal.style.display = 'none'; \n            videoBody.innerHTML = ''; \n            if(spinner) spinner.style.display = 'none';\n            \n            \/\/ Volver a mostrar el reproductor arriba al cerrar el modal\n            const radioContainer = getRadioContainer();\n            if (radioContainer) {\n                radioContainer.style.setProperty('display', 'block', 'important');\n            }\n        };\n        modal.addEventListener('click', (e) => { if(e.target === modal || e.target.classList.contains('modal-close-trigger')) close(); });\n        document.addEventListener('keydown', (e) => { if(e.key === \"Escape\") close(); });\n    })();\n    <\/script>\n        <script>\n    (function() {\n        document.addEventListener('DOMContentLoaded', function() {\n            var links = document.querySelectorAll('a[href]');\n            var currentHost = window.location.hostname;\n\n            links.forEach(function(link) {\n                var href = link.getAttribute('href');\n\n                \/\/ A. Si el link es solo \"#\", anulamos el evento de click por completo\n                if (href === '#' || href === '') {\n                    link.addEventListener('click', function(e) {\n                        e.preventDefault();\n                        link.style.cursor = 'default'; \/\/ Opcional: que no parezca un link\n                    });\n                    return; \/\/ Saltamos al siguiente link\n                }\n\n                \/\/ B. Si es un link externo (http) y dominio distinto, abrir en _blank\n                if (href.indexOf('http') === 0) {\n                    try {\n                        var linkUrl = new URL(link.href);\n                        if (linkUrl.hostname !== currentHost) {\n                            link.setAttribute('target', '_blank');\n                            link.setAttribute('rel', 'noopener noreferrer');\n                        }\n                    } catch (e) {\n                        console.log('URL no v&aacute;lida detectada');\n                    }\n                }\n            });\n        });\n    })();\n    <\/script>\n        <script async src=\"\/\/www.instagram.com\/embed.js\"><\/script>\n    <script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n\t<script async src=\"https:\/\/www.tiktok.com\/embed.js\"><\/script>\n\n        <script type=\"text\/javascript\">\n    jQuery(document).ready(function($) {\n        function getCookie(name) {\n            var value = \"; \" + document.cookie;\n            var parts = value.split(\"; \" + name + \"=\");\n            if (parts.length == 2) return parts.pop().split(\";\").shift();\n            return null;\n        }\n\n        function updateRankNumbers(container) {\n            container.find('.track-group').each(function(index) { $(this).find('.votos_chart').text(index + 1); });\n        }\n        function updateRankColors(container) {\n            container.find('.track-group').each(function(index) {\n                $(this).find('.cloned-element').css('background-color', (index === 0) ? '#f7b933' : '#272727');\n            });\n        }\n        function reorderChart(container) {\n            if(container.data('modo') == '1') return; \n            var items = container.find('.track-group');\n            items.each(function() { $(this).data('oldTop', $(this).offset().top); });\n            items.sort(function(a, b) {\n                return (parseInt($(b).attr('data-votos')) || 0) - (parseInt($(a).attr('data-votos')) || 0);\n            }).detach().appendTo(container);\n            updateRankColors(container);\n            updateRankNumbers(container);\n            items.each(function() {\n                var item = $(this);\n                var delta = item.data('oldTop') - item.offset().top;\n                if (delta !== 0) {\n                    item.css({'transform': 'translateY(' + delta + 'px)', 'transition': 'none'}).data('needsAnim', true);\n                }\n            });\n            container[0].offsetHeight; \n            items.each(function() {\n                if($(this).data('needsAnim')){\n                    $(this).css({'transform': 'translateY(0)', 'transition': 'transform 600ms cubic-bezier(0.23, 1, 0.32, 1)'}).data('needsAnim', false);\n                }\n            });\n        }\n        \n        function populateClones() {\n            var $cloneSource = $('#clone_track');\n            if(!$cloneSource.length) {\n                if($('.chart-tu-decides-wrapper').length > 0) {\n                    $('.chart-tu-decides-wrapper').prepend('<div style=\"padding: 15px; margin-bottom:15px; background: #ffebeb; color: #cc0000; border: 1px solid #cc0000; border-radius: 8px; font-weight: bold; text-align: center;\">&#9888;&#65039; Error: El Shortcode carg&oacute; los datos, pero falta el dise&ntilde;o base. Aseg&uacute;rate de insertar el contenedor con el ID \"clone_track\" en esta p&aacute;gina para que las canciones se puedan dbiujar.');\n                }\n                return;\n            }\n            \n            var isAdmin = false;\n\n            $('.chart-tu-decides-wrapper').each(function() {\n                var $container = $(this);\n                var parentId = $container.data('parent-id');\n                var modoChart = $container.data('modo') == '1';\n                \n                var cookieValue = getCookie('voto_track_id_' + parentId);\n                var cookieTitle = getCookie('voto_track_title_' + parentId);\n                var votedTrackId = (!isAdmin && cookieValue) ? parseInt(cookieValue) : 0;\n                var hasVotedAny = (votedTrackId > 0);\n                var decodedVotedTitle = cookieTitle ? decodeURIComponent(cookieTitle).replace(\/\\+\/g, ' ') : '';\n\n                $container.find('.injected-clone-placeholder').each(function() {\n                    var $placeholder = $(this);\n                    var trackId = parseInt($placeholder.data('track'));\n                    var currentTitle = $placeholder.data('titulo');\n                    var $newClone = $cloneSource.clone().removeAttr('id').addClass('cloned-element').show();\n                    \n                    var trackLink = $placeholder.data('link');\n\n                    \/\/ 1. Asignar t&iacute;tulo (Insertamos el enlace por DENTRO del contenedor para no romper el CSS)\n                    if ($newClone.find('.titulo_chart').length) {\n                        $newClone.find('.titulo_chart').html('<a href=\"' + trackLink + '\" style=\"text-decoration:none; color:inherit;\">' + currentTitle + '');\n                    }\n                    \n                    \/\/ 2. Asignar artista (Insertamos el enlace por DENTRO)\n                    if($placeholder.data('artista')) {\n                        $newClone.find('.artista_chart').html('<a href=\"' + trackLink + '\" style=\"text-decoration:none; color:inherit;\">' + $placeholder.data('artista') + '').show();\n                    } else {\n                        $newClone.find('.artista_chart').hide();\n                    }\n                    \n                    $newClone.find('.votos_chart').text($placeholder.data('posicion'));\n                    \n                    \/\/ 3. Envolver el contenido del bot&oacute;n\/elemento 'ver-mas' por dentro\n                    if($newClone.find('.ver-mas').length) {\n                        $newClone.find('.ver-mas').wrapInner('<a href=\"' + trackLink + '\" style=\"text-decoration:none; color:inherit; display:block;\">');\n                    }\n                    \n                    \/\/ 4. Asignar imagen (mantenemos display block en la imagen para evitar m&aacute;rgenes fantasma)\n                    if($placeholder.data('img')) {\n                        var imgHtml = '<img src=\"' + $placeholder.data('img') + '\" style=\"width:100%; height:100%; object-fit:cover; display:block; border-radius:inherit;\">';\n                        $newClone.find('.imagen_chart').html('<a href=\"' + trackLink + '\" style=\"display:block; text-decoration:none; width:100%; height:100%;\">' + imgHtml + '');\n                    } else {\n                        $newClone.find('.imagen_chart').hide();\n                    }\n                    \n                    var $btn = $newClone.find('.boton_style_chart');\n                    var btnText = 'Votar';\n                    var shouldDisable = modoChart;\n\n                    if (!isAdmin && hasVotedAny) {\n                        shouldDisable = true;\n                        btnText = (votedTrackId === trackId) ? 'Tu voto' : '&#9940;';\n                        \n                        \/\/ A&ntilde;adimos un atributo de aviso para que el usuario recuerde por cu&aacute;l vot&oacute; si hace clic en los botones deshabilitados &#9940;\n                        $btn.attr('data-msg-ya-votado', 'Ya has votado por: ' + (decodedVotedTitle || 'otra canci&oacute;n'));\n                    }\n\n                    $btn.addClass('btn-votar-track')\n                        .attr('data-parent', $placeholder.data('parent'))\n                        .attr('data-track', trackId)\n                        .attr('data-title-string', currentTitle) \/\/ Guardamos el nombre nativo en el elemento\n                        .text(btnText);\n                        \n                    if(shouldDisable) {\n                        $btn.prop('disabled', true).addClass('disabled-state');\n                    }\n                    \n                    $placeholder.replaceWith($newClone);\n                });\n\n                updateRankColors($container);\n                updateRankNumbers($container);\n            });\n        }\n        \n        populateClones();\n        \n        \/\/ Manejo de clicks en botones deshabilitados para recordar la canci&oacute;n votada\n        $(document).on('click', '.chart-tu-decides-wrapper .disabled-state', function(e) {\n            var alertMsg = $(this).attr('data-msg-ya-votado');\n            if (alertMsg) {\n                alert(alertMsg);\n            }\n        });\n\n        $(document).on('click', '.btn-votar-track', function(e) {\n            var btn = $(this);\n            var container = btn.closest('.chart-tu-decides-wrapper');\n            if(container.data('modo') == '1') return; \n            var group = btn.closest('.track-group');\n            if(btn.hasClass('disabled-state')) return;\n            \n            var originalText = btn.text();\n            var trackTitle = btn.attr('data-title-string');\n            \n            btn.prop('disabled', true).text('...');\n            $.ajax({\n                url: 'https:\/\/alfaenlinea.com\/wp-admin\/admin-ajax.php',\n                type: 'POST',\n                data: { action: 'sumar_voto_track', security: 'aceec05e47', parent_id: btn.data('parent'), track_id: btn.data('track') },\n                success: function(response) {\n                    if(response.success) {\n                        group.attr('data-votos', parseInt(group.attr('data-votos')) + 1);\n                                                \n                        \/\/ Guardamos la cookie del t&iacute;tulo localmente de inmediato en el cliente\n                        var parentId = btn.data('parent');\n                        document.cookie = \"voto_track_title_\" + parentId + \"=\" + encodeURIComponent(trackTitle) + \"; path=\/; max-age=\" + (86400 * 30);\n                        \n                        container.find('.btn-votar-track').addClass('disabled-state').prop('disabled', true).text('&#9940;')\n                            .attr('data-msg-ya-votado', 'Ya has votado por: ' + trackTitle);\n                        btn.text('Tu voto');\n                                                setTimeout(function(){ reorderChart(container); }, 400);\n                    } else {\n                        alert(response.data); \n                        btn.prop('disabled', false).text(originalText);\n                    }\n                },\n                error: function() { btn.prop('disabled', false).text(originalText); }\n            });\n        });\n    });\n    <\/script>\n    <style>\n        #clone_track { display: none !important; }\n        .chart-tu-decides-wrapper { display: flex; flex-direction: column; gap: 1em; }\n        .track-group { will-change: transform; }\n        .btn-votar-track { cursor: pointer; }\n        .btn-votar-track.disabled-state { cursor: pointer; opacity: 0.7; filter: grayscale(1); }\n        .is-modo-chart .boton_chart { display: none !important; }\n        \n        \/* Limpiamos el margen de los elementos de texto en el clon para evitar saltos indeseados *\/\n        .chart-tu-decides-wrapper .titulo_chart, \n        .chart-tu-decides-wrapper .artista_chart, \n        .chart-tu-decides-wrapper .ver-mas { \n            margin: 0 !important; \n        }\n    \n    #chart-container-3032 .wp-block-column-is-layout-flow * {\n    margin: 0 }\n    <\/style>\n    <script data-wp-router-options='{\"loadOnClientNavigation\":true}' fetchpriority=\"low\" id=\"@wordpress\/block-library\/navigation\/view-js-module\" src=\"https:\/\/alfaenlinea.com\/wp-includes\/js\/dist\/script-modules\/block-library\/navigation\/view.min.js?ver=96a846e1d7b789c39ab9\" type=\"module\"><\/script>\n<script data-wp-router-options='{\"loadOnClientNavigation\":true}' fetchpriority=\"low\" id=\"@wordpress\/block-library\/query\/view-js-module\" src=\"https:\/\/alfaenlinea.com\/wp-includes\/js\/dist\/script-modules\/block-library\/query\/view.min.js?ver=7a4ec5bfb61a7137cf4b\" type=\"module\"><\/script>\n<script id=\"wp-script-module-data-@wordpress\/interactivity\" type=\"application\/json\">\n{\"state\":{\"core\/router\":{\"url\":\"https:\/\/alfaenlinea.com\/grc-api\/v3\/enterate\"}}}\n<\/script>\n<script id=\"wp-script-module-data-@wordpress\/interactivity-router\" type=\"application\/json\">\n{\"i18n\":{\"loading\":\"Cargando p&aacute;gina, por favor espera.\",\"loaded\":\"P&aacute;gina cargada.\"}}\n<\/script>\n\t\t\t<div class=\"wp-interactivity-router-loading-bar\" data-wp-interactive=\"core\/router\/private\" data-wp-class--start-animation=\"state.navigation.hasStarted\" data-wp-class--finish-animation=\"state.navigation.hasFinished\"><\/div><script id=\"ajaxpress-js-extra\">\nvar ajaxpress_vars = {\"rest\":{\"url\":\"https:\/\/alfaenlinea.com\/wp-json\/ajaxpress\",\"nonce\":\"23379b4ae0\"},\"site\":{\"url\":\"https:\/\/alfaenlinea.com\",\"name\":\"Alfa 91.3 FM\",\"language\":\"es\"},\"plugin\":{\"url\":\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/ajaxpress\/\",\"version\":\"2.3.3\"},\"settings\":{\"enable_navigation\":true,\"enable_admin_spa\":false,\"enable_prefetch\":false,\"disable_for_admins\":false,\"block_keyboard_reload\":false,\"prefetch_on_mousedown\":false,\"prefetch_ignore_visited\":false,\"ignore_elements\":\"\",\"ignore_links\":\"\",\"loader_type\":\"progressbar\",\"progressbar\":true,\"progressbar_position\":\"top\",\"progressbar_class\":\"\",\"progressbar_id\":\"\",\"progressbar_color\":\"#037bff\",\"progressbar_weight\":\"thin\",\"progressbar_weight_custom\":\"7px\",\"progressbar_opacity\":80,\"progressbar_animate\":true,\"progressbar_animation_speed\":1.5,\"progressbar_auto_hide\":true,\"loader\":false,\"loader_layout\":\"icon_only\",\"loader_class\":\"\",\"loader_id\":\"\",\"animate_cursor\":true,\"cursor_mode\":\"wait\",\"disable_mouse_clicks\":false,\"loader_image\":\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/ajaxpress\/public\/images\/loading\/1.gif\",\"loader_image_size\":40,\"loader_image_rotation\":0,\"loader_gap\":10,\"loader_message\":\"Loading...\",\"loader_color\":\"#000000\",\"loader_font_family\":\"\",\"loader_font_weight\":\"normal\",\"loader_font_size\":14,\"loader_letter_spacing\":0,\"loader_background\":\"#ffffff\",\"loader_background_opacity\":70,\"scroll_to_top\":true,\"content_animation\":false,\"content_animation_name\":\"fade\",\"content_animation_duration\":\"0.3\",\"custom_css\":\"\",\"cf_auto_purge\":true,\"cf_bypass_patterns\":\"\/wp-admin\\n\/wp-json\\n\/wp-login\\n\/checkout\\n\/cart\",\"cf_bypass_cookies\":\"wordpress_logged_in_\"},\"navigation\":\"1\",\"user_logged_in\":\"\",\"license\":{\"valid\":false},\"debug\":\"\"};\n\/\/# sourceURL=ajaxpress-js-extra\n<\/script>\n<script id=\"ajaxpress-js\" src=\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/ajaxpress\/public\/js\/ajaxpress.min.js?ver=2.3.3\"><\/script>\n<script id=\"getwid-megamenu-block-frontend-js\" src=\"https:\/\/alfaenlinea.com\/wp-content\/plugins\/getwid-megamenu\/build\/frontend.js?ver=1.0.7\"><\/script>\n<script id=\"wp-emoji-settings\" type=\"application\/json\">\n{\"baseUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/\",\"ext\":\".png\",\"svgUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/\",\"svgExt\":\".svg\",\"source\":{\"concatemoji\":\"https:\/\/alfaenlinea.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=7.0\"}}\n<\/script>\n<script type=\"module\">\n\/*! This file is auto-generated *\/\nconst a=JSON.parse(document.getElementById(\"wp-emoji-settings\").textContent),o=(window._wpemojiSettings=a,\"wpEmojiSettingsSupports\"),s=[\"flag\",\"emoji\"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case\"flag\":return n(e,\"\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f\",\"\\ud83c\\udff3\\ufe0f\\u200b\\u26a7\\ufe0f\")?!1:!n(e,\"\\ud83c\\udde8\\ud83c\\uddf6\",\"\\ud83c\\udde8\\u200b\\ud83c\\uddf6\")&&!n(e,\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f\",\"\\ud83c\\udff4\\u200b\\udb40\\udc67\\u200b\\udb40\\udc62\\u200b\\udb40\\udc65\\u200b\\udb40\\udc6e\\u200b\\udb40\\udc67\\u200b\\udb40\\udc7f\");case\"emoji\":return!a(e,\"\\ud83e\\u1fac8\")}return!1}function f(e,t,n,a){let r;const o=(r=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement(\"canvas\")).getContext(\"2d\",{willReadFrequently:!0}),s=(o.textBaseline=\"top\",o.font=\"600 32px Arial\",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement(\"script\");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if(\"object\"==typeof e&&\"number\"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&\"object\"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if(\"undefined\"!=typeof Worker&&\"undefined\"!=typeof OffscreenCanvas&&\"undefined\"!=typeof URL&&URL.createObjectURL&&\"undefined\"!=typeof Blob)try{var e=\"postMessage(\"+f.toString()+\"(\"+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(\",\")+\"));\",a=new Blob([e],{type:\"text\/javascript\"});const r=new Worker(URL.createObjectURL(a),{name:\"wpTestEmojiSupports\"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],\"flag\"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});\n\/\/# sourceURL=https:\/\/alfaenlinea.com\/wp-includes\/js\/wp-emoji-loader.min.js\n<\/script>\n        <style>#persistent-radio-container{top:16px!important;left:163px!important;bottom:auto!important;right:auto!important;}body.admin-bar #persistent-radio-container{top:calc(16px + var(--wp-admin--admin-bar--height,32px))!important;}@media(min-width:1024px){#persistent-radio-container iframe{width:480px!important;height:90px!important;}}@media(max-width:800px){html:has(#persistent-radio-container){overflow:hidden;}#persistent-radio-container{top:auto!important;left:8px!important;right:8px!important;bottom:8px!important;}#persistent-radio-container iframe{width:100%!important;height:90px!important;display:block!important;box-shadow:none!important;}html,body{scrollbar-width:none!important;}html::-webkit-scrollbar,body::-webkit-scrollbar{width:0!important;display:none!important;}.wp-block-cover__inner-container{padding-bottom:50px!important;}body.admin-bar #persistent-radio-container{top:auto!important;bottom:8px!important;}}<\/style>\n        <script>\n    if (window.self === window.top) {\n        function _createRadioWidget() {\n            var _rc = document.createElement('div');\n            _rc.id = 'persistent-radio-container';\n            _rc.style.cssText = 'position:fixed;bottom:16px;right:32px;z-index:1000001;pointer-events:none;';\n            var _rf = document.createElement('iframe');\n            _rf.src = 'https:\/\/app.grc.mx\/estacionWidget\/XHFAJ_FM';\n            \/\/ pointer-events:auto overrides the inherited none from the container so\n            \/\/ the iframe remains clickable regardless of where CSS repositions the container.\n            _rf.style.cssText = 'width:320px;height:90px;border:none;border-radius:16px;box-shadow:0 8px 30px rgba(0,0,0,0.5);pointer-events:auto;';\n            _rf.setAttribute('allow', 'autoplay');\n            _rc.appendChild(_rf);\n            document.body.appendChild(_rc);\n            document.dispatchEvent(new Event('grc:radio-container-ready'));\n            _watchAdminBarDropdowns();\n        }\n\n        \/\/ When an admin bar submenu opens inside the ajaxpress iframe, the player sits\n        \/\/ above it (structural: iframe is atomic from the top-window stacking context).\n        \/\/ Hide the player while any submenu is open and restore it on close or navigation.\n        function _watchAdminBarDropdowns() {\n            if (!document.body.classList.contains('admin-bar')) return;\n            var _frame = document.getElementById('ajaxpress-container');\n            if (!_frame) return;\n            var _obs = null;\n            function _attach() {\n                if (_obs) { _obs.disconnect(); _obs = null; }\n                var _player = document.getElementById('persistent-radio-container');\n                if (_player) _player.style.display = '';\n                try {\n                    var _doc = _frame.contentDocument || (_frame.contentWindow && _frame.contentWindow.document);\n                    var _bar = _doc && _doc.getElementById('wpadminbar');\n                    if (!_bar || !_player) return;\n                    _obs = new MutationObserver(function() {\n                        _player.style.display = _doc.querySelector('#wpadminbar li.hover') ? 'none' : '';\n                    });\n                    _obs.observe(_bar, { subtree: true, attributes: true, attributeFilter: ['class'] });\n                } catch(e) {}\n            }\n            _frame.addEventListener('load', _attach);\n            _attach();\n        }\n\n        if ('requestIdleCallback' in window) {\n            requestIdleCallback(_createRadioWidget, { timeout: 3000 });\n        } else {\n            setTimeout(_createRadioWidget, 2000);\n        }\n    }\n    <\/script>\n    <div style=\"position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip-path:inset(50%);border:0;word-wrap:normal !important;\"><p id=\"a11y-speak-intro-text\" class=\"a11y-speak-intro-text\" hidden>Avisos<\/p><div id=\"a11y-speak-assertive\" class=\"a11y-speak-region\" aria-live=\"assertive\" aria-relevant=\"additions text\" aria-atomic=\"true\"><\/div><div id=\"a11y-speak-polite\" class=\"a11y-speak-region\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"true\"><\/div><\/div><script type=\"text\/javascript\">\n    (function($) {\n        $(document).ready(function() {\n            var $sliderContainer = $('.make-slider-id-sliderads');\n            if ($sliderContainer.length > 0) {\n                var slidesCount = $sliderContainer.find('.swiper-slide').length;\n                if (slidesCount > 0) {\n                    $('.div-gpt-ad-top05').hide(); \n                }\n            }\n        });\n    })(jQuery);\n<\/script>\n    <script>\n    (function() {\n        document.addEventListener('click', function(e) {\n            \/\/ Buscamos espec&iacute;ficamente el enlace que tiene nuestro ID de video\n            const btn = e.target.closest('[data-live-id]');\n            if (!btn) return;\n\n            e.preventDefault();\n            e.stopPropagation();\n\n            const videoId = btn.getAttribute('data-live-id');\n            const modal = document.getElementById('custom-gemini-modal');\n            const videoBody = document.getElementById('modal-video-body');\n            const spinner = document.getElementById('ad-spinner');\n\n            if (modal && videoBody && videoId) {\n                \/\/ Mostrar modal y cargar iframe\n                modal.style.display = 'flex';\n                videoBody.innerHTML = `<iframe src=\"https:\/\/www.youtube.com\/embed\/${videoId}?autoplay=1&rel=0\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen>`;\n                \n                if(spinner) spinner.style.display = 'block';\n\n                \/\/ Refrescar publicidad GPT si est&aacute; disponible\n                if (window.googletag && googletag.apiReady) {\n                    googletag.cmd.push(function() {\n                        const slots = googletag.pubads().getSlots();\n                        const adSlot = slots.find(s => s.getSlotElementId() === 'div-gpt-ad-top06');\n                        if (adSlot) googletag.pubads().refresh([adSlot]);\n                    });\n                }\n            }\n        }, true);\n    })();\n    <\/script>\n    <\/body><\/html>\n<\/body>\n<\/html>\n"	