{"id":504,"date":"2022-03-29T18:00:06","date_gmt":"2022-03-29T18:00:06","guid":{"rendered":"https:\/\/radiohuancayo.com.pe\/wp54\/?page_id=504"},"modified":"2026-10-10T17:33:46","modified_gmt":"2026-10-10T22:33:46","slug":"ranking","status":"publish","type":"page","link":"https:\/\/radiohuancayo.com.pe\/wp54\/ranking\/","title":{"rendered":"Ranking"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"504\" class=\"elementor elementor-504\">\n\t\t\t\t<div data-marvy_enable_drop_animation=\"false\" data-marvy_enable_fancy_rotate=\"false\" data-marvy_enable_flying_object=\"false\" data-marvy_enable_ripples_animation=\"false\" data-marvy_enable_waves_animation=\"false\" data-marvy_enable_rings_animation=\"false\" data-marvy_enable_topology_animation=\"false\" data-marvy_enable_gradient_animation=\"false\" data-marvy_enable_snow_animation=\"false\" data-marvy_enable_firework_animation=\"false\" data-marvy_enable_cloud_animation=\"false\" class=\"elementor-element elementor-element-73185c2 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"73185c2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-56b1697 elementor-widget elementor-widget-html\" data-id=\"56b1697\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<html lang=\"es\" class=\"dark\"><head><script data-bard-client-injected=\"true\">(function(firebaseConfig, initialAuthToken, appId) {\r\n        window.__firebase_config = firebaseConfig;\r\n        window.__initial_auth_token = initialAuthToken;\r\n        window.__app_id = appId;\r\n            })(\"\\n{\\n  \\\"apiKey\\\": \\\"AIzaSyCqyCcs2R2e7AegGjvFAwG98wlamtbHvZY\\\",\\n  \\\"authDomain\\\": \\\"bard-frontend.firebaseapp.com\\\",\\n  \\\"projectId\\\": \\\"bard-frontend\\\",\\n  \\\"storageBucket\\\": \\\"bard-frontend.firebasestorage.app\\\",\\n  \\\"messagingSenderId\\\": \\\"175205271074\\\",\\n  \\\"appId\\\": \\\"1:175205271074:web:2b7bd4d34d33bf38e6ec7b\\\"\\n}\\n\",\"eyJhbGciOiJSUzI1NiIsImtpZCI6IjExNjRiNzdiNDMzZDdhMDAyMWI4NjE4YjhjYTU3ZTMyZGI5MWUxMTMiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiJmaXJlYmFzZS1hZG1pbnNkay1mYnN2Y0BiYXJkLWZyb250ZW5kLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiaHR0cHM6Ly9pZGVudGl0eXRvb2xraXQuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmlkZW50aXR5LmlkZW50aXR5dG9vbGtpdC52MS5JZGVudGl0eVRvb2xraXQiLCJ1aWQiOiIwMjMxMzUzNDUwNzU4MjI5Nzg5MiIsImlzcyI6ImZpcmViYXNlLWFkbWluc2RrLWZic3ZjQGJhcmQtZnJvbnRlbmQuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJjbGFpbXMiOnsiYXBwSWQiOiJjXzIzODAzZDBmZDYzMjRhMzlfcmFua2luZ195b3V0dWJlLmh0bWwtOTUzIn0sImV4cCI6MTc5MTY3NTAxOCwiaWF0IjoxNzkxNjcxNDE4LCJhbGciOiJSUzI1NiJ9.b--X8-QI_ycrpy30GqDxVMxkfan5hjYUOwRIQ1ieubm1mzwFLPxN3f0F24MpT6hcxytxqSmJJcpwU7u4uyTETbfoIMdxHWujk5bMepCDPBYRTlMJT8vyO_9AyxalEU_k1B0zREPbkRnEX2Anwflv9I3OJc7Gh_Z3-zx0NmZWmJAbi6Qbwx0q8rFkz4ssnrvtgQxAS9nJgE87oQZqw3DgZdKgBZNDQhJtKqzfeLeXLF7Vj-v6SZnWYs5jh_lLKrRnwIIY92Yscc1Aq0Po8zMIwiR3chgwG73aJ2wOV6zO7dvdh6deMeQI_MVSZJLPDCgYjjRneqqVSEenYrpXE1fgTA\",\"c_23803d0fd6324a39_ranking_youtube.html-953\")<\/script><script data-bard-client-injected=\"true\">\r\n  document.addEventListener('input', (event) => {\r\n    if (event.target && (event.target.isContentEditable || event.target.hasAttribute('contenteditable'))) {\r\n      const clonedDoc = document.cloneNode(true);\r\n      const injectedScripts = clonedDoc.querySelectorAll('[data-bard-client-injected=\"true\"]');\r\n      injectedScripts.forEach(el => el.remove());\r\n      window.parent.postMessage({\r\n        type: 'inlineEdit',\r\n        html: '<!DOCTYPE html>\\n' + clonedDoc.documentElement.outerHTML\r\n      }, '*');\r\n    }\r\n  });\r\n<\/script><script data-bard-client-injected=\"true\">(function(){'use strict';window.addEventListener(\"message\",a=>{a.data&&a.data.type===\"SUPPLEMENTAL_DATA_UPDATE\"&&window.dispatchEvent(new CustomEvent(\"supplementaldataupdate\",{detail:a.data.data}))});}).call(this);\r\n<\/script><script data-bard-client-injected=\"true\">(function() {\r\n  const SCROLL_KEYS = new Set([\r\n    'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight',\r\n    ' ', 'Spacebar', 'PageUp', 'PageDown', 'Home', 'End',\r\n  ]);\r\n  const HORIZONTAL_KEYS = new Set(['ArrowLeft', 'ArrowRight']);\r\n\r\n  function isTextEntryTarget(target) {\r\n    if (!target) return false;\r\n    const tagName = target.tagName;\r\n    return tagName === 'INPUT' || tagName === 'TEXTAREA' ||\r\n        tagName === 'SELECT' || target.isContentEditable === true;\r\n  }\r\n\r\n  \/\/ An element absorbs the key only if it both overflows on the axis being\r\n  \/\/ scrolled and is configured to scroll on that axis. The cheap dimension\r\n  \/\/ test runs first because getComputedStyle forces a style recalc, and this\r\n  \/\/ runs on every keypress. Each axis is read from its own longhand: the\r\n  \/\/ 'overflow' shorthand serializes as two values when the axes differ, which\r\n  \/\/ is the common 'overflow-x: hidden; overflow-y: auto' pane.\r\n  function canScroll(node, horizontal) {\r\n    const overflows = horizontal ? node.scrollWidth > node.clientWidth\r\n                                 : node.scrollHeight > node.clientHeight;\r\n    if (!overflows) return false;\r\n    const style = window.getComputedStyle(node);\r\n    const overflow = horizontal ? style.overflowX : style.overflowY;\r\n    return overflow === 'auto' || overflow === 'scroll';\r\n  }\r\n\r\n  \/\/ Walks up from the event target so nested scrollers keep their behavior.\r\n  \/\/ <body> is included because pages that pin the root height make it the\r\n  \/\/ scroll container.\r\n  function hasScrollableAncestor(target, horizontal) {\r\n    let node = target;\r\n    while (node && node !== document.documentElement) {\r\n      if (canScroll(node, horizontal)) return true;\r\n      node = node.parentElement;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  function rootCanScroll(horizontal) {\r\n    const scroller = document.scrollingElement || document.documentElement;\r\n    if (!scroller) return false;\r\n    \/\/ Tolerate a pixel of rounding so subpixel layouts do not look scrollable.\r\n    return horizontal ? scroller.scrollWidth > window.innerWidth + 1\r\n                      : scroller.scrollHeight > window.innerHeight + 1;\r\n  }\r\n\r\n  window.addEventListener('keydown', function(event) {\r\n    if (!SCROLL_KEYS.has(event.key)) return;\r\n    if (event.defaultPrevented) return;\r\n    \/\/ Alt and Meta turn arrows into browser history navigation, and Ctrl is\r\n    \/\/ reserved for shortcuts, so none of them are scroll intent.\r\n    if (event.altKey || event.metaKey || event.ctrlKey) return;\r\n\r\n    const target = event.target;\r\n    if (isTextEntryTarget(target)) return;\r\n\r\n    \/\/ Anything that can still absorb the scroll gets to keep it.\r\n    const horizontal = HORIZONTAL_KEYS.has(event.key);\r\n    if (rootCanScroll(horizontal)) return;\r\n    if (hasScrollableAncestor(target, horizontal)) return;\r\n\r\n    event.preventDefault();\r\n  }, {capture: true, passive: false});\r\n})();<\/script><script data-bard-client-injected=\"true\">(function() {\r\n  \/\/ Ensure this script is executed only once\r\n  if (window.firebaseAuthBridgeScriptLoaded) {\r\n    return;\r\n  }\r\n  window.firebaseAuthBridgeScriptLoaded = true;\r\n\r\n  let nextTokenPromiseId = 0;\r\n\r\n  \/\/ Stores { resolve, reject } for ongoing token requests\r\n  const pendingTokenPromises = {};\r\n\r\n  \/\/ Listen for messages from the Host Application\r\n  window.addEventListener('message', function(event) {\r\n\r\n    const messageData = event.data;\r\n\r\n  if (messageData && messageData.type === 'RESOLVE_NEW_FIREBASE_TOKEN') {\r\n      const { success, token, error, promiseId } = messageData ?? {};\r\n      if (pendingTokenPromises[promiseId]) {\r\n        if (success) {\r\n          pendingTokenPromises[promiseId].resolve(token);\r\n        } else {\r\n          pendingTokenPromises[promiseId].reject(new Error(error || 'Token refresh failed from host.'));\r\n        }\r\n        delete pendingTokenPromises[promiseId];\r\n      }\r\n    }\r\n  });\r\n\r\n  \/\/ Expose a function for the Generated App to request a new Firebase token\r\n  window.requestNewFirebaseToken = function() {\r\n    const currentPromiseId = nextTokenPromiseId++;\r\n    const promise = new Promise((resolve, reject) => {\r\n      pendingTokenPromises[currentPromiseId] = { resolve, reject };\r\n    });\r\n    if (window.parent && window.parent !== window) {\r\n      window.parent.postMessage({\r\n        type: 'REQUEST_NEW_FIREBASE_TOKEN',\r\n        promiseId: currentPromiseId\r\n      }, '*');\r\n    } else {\r\n      pendingTokenPromises[currentPromiseId].reject(new Error('No parent window to request token from.'));\r\n      delete pendingTokenPromises[currentPromiseId];\r\n    }\r\n    return promise;\r\n  };\r\n})();<\/script><script data-bard-client-injected=\"true\">\r\nlet realOriginalGetUserMedia = null;\r\nif (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n  realOriginalGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\r\n}\r\n\r\n(function() {\r\n  if (navigator.mediaDevices && navigator.mediaDevices.__proto__) {\r\n    try {\r\n      Object.defineProperty(navigator.mediaDevices.__proto__, 'getUserMedia', {\r\n        get: function() {\r\n          return undefined; \/\/ Or throw an error\r\n        },\r\n        configurable: false\r\n      });\r\n    } catch (error) {\r\n      console.error(\"Error defining prototype getter:\", error);\r\n    }\r\n  }\r\n})();\r\n\r\n(function() {\r\n  const pendingMediaResolvers = {};\r\n  let nextMediaPromiseId = 0;\r\n\r\n  function requestMediaPermissions(constraints) {\r\n    const mediaPromiseId = nextMediaPromiseId++;\r\n    const promise = new Promise((resolve, reject) => {\r\n      pendingMediaResolvers[mediaPromiseId] = (granted) => {\r\n        delete pendingMediaResolvers[mediaPromiseId];\r\n        resolve(granted);\r\n      };\r\n    });\r\n\r\n    window.parent.postMessage({\r\n      type: 'requestMediaPermission',\r\n      constraints: constraints,\r\n      promiseId: mediaPromiseId,\r\n    }, '*');\r\n\r\n    return promise;\r\n  }\r\n\r\n  let originalGetUserMedia = realOriginalGetUserMedia;\r\n\r\n  function interceptGetUserMedia() {\r\n    if (navigator.mediaDevices) {\r\n      Object.defineProperty(navigator.mediaDevices, 'getUserMedia', {\r\n        value: function(constraints) {\r\n          return requestMediaPermissions(constraints).then((granted) => {\r\n            if (granted) {\r\n              if (originalGetUserMedia) {\r\n                return originalGetUserMedia(constraints);\r\n              } else {\r\n                throw new Error(\"Original getUserMedia not available.\");\r\n              }\r\n            } else {\r\n              throw new DOMException('Permission denied', 'NotAllowedError');\r\n            }\r\n          });\r\n        },\r\n        writable: false,\r\n        configurable: false\r\n      });\r\n    }\r\n  }\r\n\r\n  interceptGetUserMedia();\r\n\r\n  const observer = new MutationObserver(function(mutationsList, observer) {\r\n    for (const mutation of mutationsList) {\r\n      if (mutation.type === 'reconfigured' && mutation.name === 'getUserMedia' && mutation.object === navigator.mediaDevices) {\r\n        interceptGetUserMedia();\r\n      } else if (mutation.type === 'attributes' && mutation.attributeName === 'getUserMedia' && mutation.target === navigator.mediaDevices) {\r\n        interceptGetUserMedia();\r\n      } else if (mutation.type === 'childList' && mutation.addedNodes) {\r\n        mutation.addedNodes.forEach(node => {\r\n          if (node === navigator.mediaDevices) {\r\n            interceptGetUserMedia();\r\n          }\r\n        });\r\n      }\r\n    }\r\n  });\r\n\r\n  function interceptSpeechRecognition() {\r\n    if (!window.SpeechRecognition && !window.webkitSpeechRecognition) {\r\n      return;\r\n    }\r\n\r\n    const OriginalSpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;\r\n\r\n    const SpeechRecognitionWrapper = function(...args) {\r\n      const recognizer = new OriginalSpeechRecognition(...args);\r\n      const originalStart = recognizer.start.bind(recognizer);\r\n\r\n      recognizer.start = function() {\r\n        requestMediaPermissions({ audio: true }).then(granted => {\r\n          if (granted) {\r\n            originalStart();\r\n          } else {\r\n            const errorEvent = new SpeechRecognitionErrorEvent('error');\r\n            errorEvent.error = 'not-allowed'; \/\/ This is the standard error for permission denial.\r\n            recognizer.dispatchEvent(errorEvent);\r\n          }\r\n        });\r\n      };\r\n\r\n      return recognizer;\r\n    };\r\n\r\n    SpeechRecognitionWrapper.prototype = OriginalSpeechRecognition.prototype;\r\n    SpeechRecognitionWrapper.prototype.constructor = SpeechRecognitionWrapper;\r\n\r\n    if (window.SpeechRecognition) {\r\n      window.SpeechRecognition = SpeechRecognitionWrapper;\r\n    }\r\n    if (window.webkitSpeechRecognition) {\r\n      window.webkitSpeechRecognition = SpeechRecognitionWrapper;\r\n    }\r\n  }\r\n\r\n  interceptSpeechRecognition();\r\n\r\n  window.addEventListener('message', function(event) {\r\n    if (event.data) {\r\n      if (event.data.type === 'resolveMediaPermission') {\r\n        const { promiseId, granted } = event.data;\r\n        if (pendingMediaResolvers[promiseId]) {\r\n          pendingMediaResolvers[promiseId](granted);\r\n        }\r\n      }\r\n    }\r\n  });\r\n\r\n})();<\/script><script ws-interception-config=\"{&quot;parentOrigin&quot;:&quot;https:\/\/gemini.google.com&quot;,&quot;proxiedDomains&quot;:[]}\" data-bard-client-injected=\"true\">(function(){'use strict';var u=typeof Object.defineProperties==\"function\"?Object.defineProperty:function(b,d,e){if(b==Array.prototype||b==Object.prototype)return b;b[d]=e.value;return b};function v(b){b=[\"object\"==typeof globalThis&&globalThis,b,\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global];for(var d=0;d<b.length;++d){var e=b[d];if(e&&e.Math==Math)return e}throw Error(\"Cannot find global object\");}var w=v(this);\r\nfunction y(b,d){if(d)a:{var e=w;b=b.split(\".\");for(var h=0;h<b.length-1;h++){var k=b[h];if(!(k in e))break a;e=e[k]}b=b[b.length-1];h=e[b];d=d(h);d!=h&&d!=null&&u(e,b,{configurable:!0,writable:!0,value:d})}}function z(b){function d(h){return b.next(h)}function e(h){return b.throw(h)}return new Promise(function(h,k){function m(n){n.done?h(n.value):Promise.resolve(n.value).then(d,e).then(m,k)}m(b.next())})}y(\"globalThis\",function(b){return b||w});\/*\r\n\r\n Copyright The Closure Library Authors.\r\n SPDX-License-Identifier: Apache-2.0\r\n*\/\r\nfunction A(b,d){function e(){}e.prototype=d.prototype;b.j=d.prototype;b.prototype=new e;b.prototype.constructor=b;b.h=function(h,k,m){for(var n=Array(arguments.length-2),p=2;p<arguments.length;p++)n[p-2]=arguments[p];return d.prototype[k].apply(h,n)}};function B(b,d,e=\"*\"){function h(a){if(typeof a===\"string\")return F.encode(a).buffer;if(a instanceof ArrayBuffer)return a.slice(0);if(ArrayBuffer.isView(a))return a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength);throw Error(\"Invalid data type\");}function k(a){a=h(a);var f={type:\"send\",data:new Uint8Array(a)},g;(g=r)==null||g.postMessage(f,[a])}function m(){if(!r)throw Error(\"Data port not captured yet.\");r.onmessage=a=>{if(a.data.type===\"message\"){a=new MessageEvent(\"message\",{data:G.decode(a.data.data)});\r\nlet f;(f=c.onmessage)==null||f.call(c,a);c.dispatchEvent(a)}}}function n(){if(!t)throw Error(\"Control port not captured yet.\");t.onmessage=a=>{switch(a.data.type){case \"open\":l=1;var f=new Event(\"open\"),g;(g=c.onopen)==null||g.call(c,f);c.dispatchEvent(f);q.forEach(H=>{k(H)});q=[];break;case \"close\":g=a.data;l=3;g=new CloseEvent(\"close\",{code:g.code,reason:g.reason,wasClean:g.wasClean});(f=c.onclose)==null||f.call(c,g);c.dispatchEvent(g);break;case \"error\":l=3;f=new Event(\"error\");let x;(x=c.onerror)==\r\nnull||x.call(c,f);c.dispatchEvent(f)}}}function p(a){return z(function*(){var f=new MessageChannel;t=f.port1;var g=new MessageChannel;r=g.port1;n();m();window.parent.postMessage({type:\"websocket_open\",portOrdering:[\"control\",\"data\"],url:b,protocols:a||[],connectionId:I},e,[f.port2,g.port2])}())}var c=Reflect.construct(EventTarget,[],new.target);c.CONNECTING=0;c.OPEN=1;c.CLOSING=2;c.CLOSED=3;c.url=b;c.binaryType=\"arraybuffer\";c.protocol=\"\";c.i=\"\";var l=0,t=null,r=null,q=[],F=new TextEncoder,G=new TextDecoder;\r\nc.onopen=null;c.onmessage=null;c.onclose=null;c.onerror=null;Object.defineProperty(c,\"readyState\",{get:()=>l,enumerable:!0,configurable:!0});Object.defineProperty(c,\"bufferedAmount\",{get:()=>{var a=0;q.forEach(f=>{a+=typeof f===\"string\"?f.length:f.byteLength});return a},enumerable:!0,configurable:!0});var I=function(){var a;return((a=globalThis.crypto)==null?0:a.randomUUID)?globalThis.crypto.randomUUID():\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\/[xy]\/g,f=>{var g=Math.random()*16|0;return(f===\r\n\"x\"?g:g&3|8).toString(16)})}();c.send=a=>{if(l===1)a instanceof Blob?a.arrayBuffer().then(f=>{k(f)}):k(a);else if(l===0)if(typeof a===\"string\")q.push(a);else if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))q.push(h(a));else throw Error(\"Sending Blob is not supported before the connection is open.\");else console.debug(\"WebSocket send called in CLOSING or CLOSED state; ignored.\")};c.close=(a=1E3,f=\"\")=>{if(l!==2&&l!==3){l=2;a={type:\"close\",code:a,reason:f,wasClean:a===1E3};var g;(g=t)==null||g.postMessage(a)}};\r\nPromise.resolve().then(()=>p(d));return c}A(B,EventTarget);var C=document.currentScript,D=C==null?void 0:C.getAttribute(\"ws-interception-config\");if(!D)throw Error(\"WebSocket Interceptor: Missing ws-interception-config attribute in the script tag.\");var E=JSON.parse(D);if(!E.parentOrigin||typeof E.parentOrigin!==\"string\")throw Error(\"WebSocket Interceptor: Invalid parentOrigin in ws-interception-config\");\r\n(function(b){var d=Object.getOwnPropertyDescriptor(window,\"WebSocket\");if(!d||d.writable||d.configurable)d=Object.assign(function(e,h){try{let k=(new URL(e)).hostname;if(b.proxiedDomains.some(m=>k===m||k.endsWith(`.${m}`)))return new B(e,h,b.parentOrigin)}catch(k){throw window.parent.postMessage({type:\"websocket_blocked\",url:e,reason:\"blocked_invalid_url\"},b.parentOrigin),new DOMException(`WebSocket connection to '${e}' is not allowed in Canvas.`,\"SecurityError\");}window.parent.postMessage({type:\"websocket_blocked\",\r\nurl:e,reason:\"blocked_domain_not_allowlisted\"},b.parentOrigin);throw new DOMException(`WebSocket connection to '${e}' is not allowed in Canvas.`,\"SecurityError\");},{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3}),Object.defineProperty(window,\"WebSocket\",{value:d,writable:!1,configurable:!1})})({proxiedDomains:E.proxiedDomains||[],parentOrigin:E.parentOrigin});}).call(this);\r\n<\/script><script data-bard-client-injected=\"true\">((function(modelInformation) {\r\n  const originalFetch = window.fetch;\r\n  \/\/ TODO: b\/421908508 - Move these out of the script and match all generative AI model calls.\r\n  let googleLlmBaseApiUrls = [\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.textModelName + ':streamGenerateContent',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.textModelName + ':generateContent',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.imageModelName + ':predict',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.imageModelName + ':predictLongRunning',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.imageEditModelName + ':generateContent',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.imageTransformModelName + ':generateContent',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.videoModelName + ':predict',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.videoModelName + ':predictLongRunning',\r\n    'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelInformation.ttsModelName + ':generateContent',\r\n  ];\r\n  modelInformation.deprecatedTextModelNames.forEach((modelName) => {\r\n    googleLlmBaseApiUrls.push(\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':streamGenerateContent',\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':generateContent',\r\n    );\r\n  });\r\n  modelInformation.deprecatedImageModelNames.forEach((modelName) => {\r\n    googleLlmBaseApiUrls.push(\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':predict',\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':predictLongRunning',\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':generateContent',\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':streamGenerateContent',\r\n    );\r\n  });\r\n  modelInformation.deprecatedGenerateImageModelNames.forEach((modelName) => {\r\n    googleLlmBaseApiUrls.push(\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':generateContent',\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':streamGenerateContent',\r\n    );\r\n  });\r\n  modelInformation.deprecatedImageTransformModelNames.forEach((modelName) => {\r\n    googleLlmBaseApiUrls.push(\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':generateContent',\r\n      'https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/' + modelName + ':streamGenerateContent',\r\n    );\r\n  });\r\n\r\n  const pendingFetchResolvers = {};\r\n  let nextPromiseId = 0;\r\n\r\n  function handleStringInput(input, optionsArgument) {\r\n    const actualUrl = input;\r\n    const fetchCallArgs = [actualUrl, optionsArgument];\r\n    const effectiveOptions = optionsArgument || {};\r\n    const bodyForApiKeyCheck = effectiveOptions.body;\r\n    const bodyForPostMessage = effectiveOptions.body;\r\n    return { actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage };\r\n  }\r\n\r\n  function handleRequestInput(input, optionsArgument) {\r\n    const actualUrl = input.url;\r\n    const fetchCallArgs = [input, optionsArgument];\r\n    const effectiveOptions = { method: input.method, headers: new Headers(input.headers) };\r\n    let bodyForApiKeyCheck;\r\n    let bodyForPostMessage;\r\n\r\n    if (optionsArgument) {\r\n      if (optionsArgument.method) effectiveOptions.method = optionsArgument.method;\r\n      if (optionsArgument.headers) effectiveOptions.headers = new Headers(optionsArgument.headers);\r\n      if ('body' in optionsArgument) {\r\n        bodyForApiKeyCheck = optionsArgument.body;\r\n        bodyForPostMessage = optionsArgument.body;\r\n      } else {\r\n        bodyForApiKeyCheck = undefined;\r\n        bodyForPostMessage = input.body;\r\n      }\r\n    } else {\r\n      bodyForApiKeyCheck = undefined;\r\n      bodyForPostMessage = input.body;\r\n    }\r\n    return { actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage };\r\n  }\r\n\r\n  window.fetch = function(input, optionsArgument) {\r\n    let actualUrl;\r\n    let fetchCallArgs;\r\n    let effectiveOptions = {};\r\n    let bodyForApiKeyCheck;\r\n    let bodyForPostMessage;\r\n\r\n    if (typeof input === 'string') {\r\n      ({actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage} = handleStringInput(input, optionsArgument));\r\n    } else if (input instanceof Request) {\r\n      ({actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage} = handleRequestInput(input, optionsArgument));\r\n    } else {\r\n      return originalFetch.apply(window, [input, optionsArgument]);\r\n    }\r\n\r\n    effectiveOptions.method = effectiveOptions.method || 'GET';\r\n    if (!effectiveOptions.headers) {\r\n      effectiveOptions.headers = new Headers();\r\n    }\r\n\r\n\r\n    if (typeof actualUrl === 'string' && googleLlmBaseApiUrls.some((url) => actualUrl.startsWith(url))) {\r\n      let apiKeyIsNull = true;\r\n\r\n      const regex = new RegExp(\"models\/([^:]+)\");\r\n      const modelNameMatch = actualUrl.match(regex);\r\n      const modelName = modelNameMatch ? modelNameMatch[1] : 'unspecified';\r\n\r\n\r\n      try {\r\n        const urlObject = new URL(actualUrl);  \/\/ Use URL object for robust parsing\r\n        const apiKeyParam = urlObject.searchParams.get('key');\r\n        if (apiKeyParam) {\r\n          apiKeyIsNull = false;\r\n        }\r\n      } catch (e) {\r\n        \/\/ Continue checks even if URL parsing fails\r\n      }\r\n\r\n      if (apiKeyIsNull && effectiveOptions.headers) {\r\n        const h = new Headers(effectiveOptions.headers);\r\n        const apiKeyHeaderValue = h.get('X-API-Key') || h.get('x-api-key');\r\n        if (apiKeyHeaderValue) {\r\n          apiKeyIsNull = false;\r\n          return originalFetch.apply(window, fetchCallArgs);\r\n        }\r\n      }\r\n\r\n      if (apiKeyIsNull && effectiveOptions.method && ['POST', 'PUT', 'PATCH'].includes(effectiveOptions.method.toUpperCase()) && typeof bodyForApiKeyCheck === 'string') {\r\n        try {\r\n          const bodyData = JSON.parse(bodyForApiKeyCheck);\r\n          if (bodyData && bodyData.apiKey) {\r\n            apiKeyIsNull = false;\r\n            return originalFetch.apply(window, fetchCallArgs);\r\n          }\r\n        } catch (e) {\r\n          \/\/ Ignore JSON parsing errors\r\n        }\r\n      }\r\n\r\n      if(apiKeyIsNull) {\r\n        const promiseId = nextPromiseId++;\r\n        const promise = new Promise((resolve) => {\r\n          pendingFetchResolvers[promiseId] = (resolvedResponse) => {\r\n            delete pendingFetchResolvers[promiseId];\r\n            resolve(resolvedResponse);\r\n          };\r\n        });\r\n\r\n        let serializedBodyForPostMessage;\r\n        if (typeof bodyForPostMessage === 'string' || bodyForPostMessage == null) {\r\n            serializedBodyForPostMessage = bodyForPostMessage;\r\n        } else if (bodyForPostMessage instanceof ReadableStream) {\r\n            serializedBodyForPostMessage = null;\r\n        } else {\r\n            try {\r\n                serializedBodyForPostMessage = JSON.stringify(bodyForPostMessage);\r\n            } catch (e) {\r\n                serializedBodyForPostMessage = null;\r\n            }\r\n        }\r\n\r\n        const messageOptions = {\r\n            method: effectiveOptions.method,\r\n            headers: Object.fromEntries(new Headers(effectiveOptions.headers).entries()),\r\n            body: serializedBodyForPostMessage\r\n        };\r\n\r\n        window.parent.postMessage({\r\n          type: 'requestFetch',\r\n          url: actualUrl,\r\n          modelName: modelName,\r\n          options: messageOptions,\r\n          promiseId: promiseId,\r\n        }, '*');\r\n\r\n        return promise;\r\n      }\r\n      return originalFetch.apply(window, fetchCallArgs);\r\n    }\r\n    return originalFetch.apply(window, fetchCallArgs);\r\n  };\r\n\r\n  window.addEventListener('message', function(event) {\r\n    if (event.data && event.data.type === 'resolveFetch') {\r\n      const { promiseId, response } = event.data;\r\n      if (pendingFetchResolvers[promiseId]) {\r\n        try {\r\n          const reconstructedResponse = new Response(response.body, {\r\n            status: response.status,\r\n            statusText: response.statusText,\r\n            headers: new Headers(response.headers),\r\n          });\r\n          pendingFetchResolvers[promiseId](reconstructedResponse);\r\n        } catch (error) {\r\n          pendingFetchResolvers[promiseId](new Response(null, { status: 500, statusText: \"Interceptor Response Reconstruction Error\" }));\r\n        }\r\n      }\r\n    }\r\n  });\r\n\r\n}))({\"textModelName\":\"gemini-3-flash-preview\",\"imageModelName\":\"imagen-4.0-generate-001\",\"imageEditModelName\":\"gemini-3.1-flash-image\",\"imageTransformModelName\":\"gemini-3-pro-image\",\"videoModelName\":\"veo-2.0-generate-001\",\"ttsModelName\":\"gemini-2.5-flash-preview-tts\",\"deprecatedTextModelNames\":[\"gemini-2.0-flash\",\"gemini-2.5-flash\",\"gemini-2.5-flash-preview-04-17\",\"gemini-2.5-flash-preview-05-20\",\"gemini-2.5-flash-preview-09-2025\"],\"deprecatedImageModelNames\":[\"imagen-3.0-generate-001\",\"imagen-3.0-generate-002\"],\"deprecatedGenerateImageModelNames\":[\"gemini-2.5-flash-image-preview\",\"gemini-2.5-flash-image\",\"gemini-3.1-flash-image-preview\"],\"deprecatedImageTransformModelNames\":[\"gemini-3-pro-image-preview-11-2025\"]})<\/script><script data-bard-client-injected=\"true\">(function(){'use strict';function a(){window.parent.postMessage({type:\"interaction\"},\"*\")}window.addEventListener(\"click\",a,{capture:!0,passive:!0});window.addEventListener(\"touchstart\",a,{capture:!0,passive:!0});window.addEventListener(\"keydown\",a,{capture:!0,passive:!0});}).call(this);\r\n<\/script><script data-bard-client-injected=\"true\">(function() {\r\n  const originalConsoleLog = console.log;\r\n  const originalConsoleError = console.error;\r\n\r\n    \/**\r\n   * Normalizes an error event or a promise rejection reason into a structured error object.\r\n   * @param {*} errorEventOrReason The error object or reason.\r\n   * @return {object} Structured error data { message, name, stack }.\r\n   *\/\r\n  function getErrorObject(errorEventOrReason) {\r\n    if (errorEventOrReason instanceof Error) {\r\n      return {\r\n        message: errorEventOrReason.message,\r\n        name: errorEventOrReason.name,\r\n        stack: errorEventOrReason.stack,\r\n      };\r\n    }\r\n    \/\/ Fallback for non-Error objects.\r\n    try {\r\n      return {\r\n        message: JSON.stringify(errorEventOrReason),\r\n        name: 'UnknownErrorType',\r\n        stack: null,\r\n      };\r\n    } catch (e) {\r\n      return {\r\n        message: String(errorEventOrReason),\r\n        name: 'UnknownErrorTypeNonStringifiable',\r\n        stack: null,\r\n      };\r\n    }\r\n  }\r\n\r\n  \/**\r\n   * Converts an array of arguments (from log\/error) into a single string.\r\n   * Handles Error objects specially to include their message and stack.\r\n   * @param {Array<*>} args - Arguments passed to console methods.\r\n   * @return {string} A string representation of the arguments.\r\n   *\/\r\n  function stringifyArgs(args) {\r\n    return args\r\n      .map((arg) => {\r\n        if (arg instanceof Error) {\r\n          const {message, stack} = arg;\r\n          return `Error: ${message}${stack ? ('\\nStack: ' + stack) : ''}`;\r\n        }\r\n        if (typeof arg === 'object' && arg !== null) {\r\n          try {\r\n            return JSON.stringify(arg);\r\n          } catch (error) {\r\n            return '[Circular Object]';\r\n          }\r\n        } else {\r\n          return String(arg);\r\n        }\r\n      })\r\n      .join(' ');\r\n  }\r\n\r\n  console.log = function(...args) {\r\n    const logString = stringifyArgs(args);\r\n    window.parent.postMessage({ type: 'log', message: logString }, '*');\r\n    originalConsoleLog.apply(console, args);\r\n  };\r\n\r\n  console.error = function(...args) {\r\n    let errorData;\r\n    if (args.length > 0 && args[0] instanceof Error) {\r\n      const err = args[0];\r\n      \/\/ If the first arg is an Error, capture its details.\r\n      errorData = {\r\n        type: 'error',\r\n        source: 'CONSOLE_ERROR',\r\n        ...getErrorObject(err),\r\n        rawArgsString: stringifyArgs(args.slice(1)),\r\n        timestamp: new Date().toISOString(),\r\n      };\r\n    } else {\r\n      \/\/ If not an Error object, treat all args as a general error message.\r\n      errorData = {\r\n        type: 'error',\r\n        source: 'CONSOLE_ERROR',\r\n        message: stringifyArgs(args),\r\n        name: 'ConsoleLoggedError',\r\n        stack: null,\r\n        timestamp: new Date().toISOString(),\r\n      };\r\n    }\r\n    window.parent.postMessage(errorData, '*');\r\n    originalConsoleError.apply(console, args);\r\n  };\r\n\r\n  \/\/ Listen for global unhandled synchronous errors.\r\n  window.addEventListener('error', function(event) {\r\n    const errorDetails = event.error ? getErrorObject(event.error) : {\r\n      message: event.message,\r\n      name: 'GlobalError',\r\n      stack: null,\r\n      filename: event.filename,\r\n      lineno: event.lineno,\r\n      colno: event.colno,\r\n    };\r\n\r\n    window.parent.postMessage({\r\n      type: 'error',\r\n      source: 'global',\r\n      ...errorDetails,\r\n      message: errorDetails.message || event.message,\r\n      timestamp: new Date().toISOString(),\r\n    }, '*');\r\n  });\r\n\r\n  \/\/ Listen for unhandled promise rejections (asynchronous errors).\r\n  window.addEventListener('unhandledrejection', function(event) {\r\n    const errorDetails = getErrorObject(event.reason);\r\n\r\n    window.parent.postMessage({\r\n      type: 'error',\r\n      source: 'unhandledrejection',\r\n      ...errorDetails,\r\n      message: errorDetails.message || 'Unhandled Promise Rejection',\r\n      timestamp: new Date().toISOString(),\r\n    }, '*');\r\n  });\r\n\r\n})();<\/script>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Ranking Musical - La Uno Uno<\/title>\r\n    <!-- Tailwind CSS CDN -->\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    <script>\r\n        tailwind.config = {\r\n            darkMode: 'class',\r\n            theme: {\r\n                extend: {\r\n                    colors: {\r\n                        darkbg: '#09090b',\r\n                        cardbg: '#121217',\r\n                        gold: '#f59e0b',\r\n                        goldglow: 'rgba(245, 158, 11, 0.4)',\r\n                        accent: '#e11d48',\r\n                    },\r\n                    animation: {\r\n                        'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',\r\n                        'shimmer': 'shimmer 2.5s linear infinite',\r\n                    },\r\n                    keyframes: {\r\n                        shimmer: {\r\n                            '0%': { backgroundPosition: '-200% 0' },\r\n                            '100%': { backgroundPosition: '200% 0' }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    <\/script>\r\n    <!-- FontAwesome icons -->\r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\r\n    <style>\r\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@300;400;600;700;900&display=swap');\r\n        body {\r\n            font-family: 'Outfit', sans-serif;\r\n        }\r\n        .gold-border-glow {\r\n            box-shadow: 0 0 25px rgba(245, 158, 11, 0.25);\r\n        }\r\n        .custom-scrollbar::-webkit-scrollbar {\r\n            width: 6px;\r\n        }\r\n        .custom-scrollbar::-webkit-scrollbar-track {\r\n            background: #121217;\r\n        }\r\n        .custom-scrollbar::-webkit-scrollbar-thumb {\r\n            background: #27272a;\r\n            border-radius: 3px;\r\n        }\r\n        .custom-scrollbar::-webkit-scrollbar-thumb:hover {\r\n            background: #f59e0b;\r\n        }\r\n    <\/style>\r\n<style>*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 \/ 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 \/ 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }\/* ! tailwindcss v3.4.17 | MIT License | https:\/\/tailwindcss.com *\/*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-0.25rem}.inset-0{inset:0px}.top-0{top:0px}.bottom-3{bottom:0.75rem}.left-3{left:0.75rem}.right-3{right:0.75rem}.top-3{top:0.75rem}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mr-2{margin-right:0.5rem}.ml-1{margin-left:0.25rem}.mt-2{margin-top:0.5rem}.ml-0\\.5{margin-left:0.125rem}.mt-1{margin-top:0.25rem}.mb-1{margin-bottom:0.25rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:16 \/ 9}.h-10{height:2.5rem}.h-2{height:0.5rem}.h-full{height:100%}.h-12{height:3rem}.h-16{height:4rem}.h-52{height:13rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-2{width:0.5rem}.w-full{width:100%}.w-1\\\/2{width:50%}.w-12{width:3rem}.w-16{width:4rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-28{width:7rem}.min-w-0{min-width:0px}.max-w-6xl{max-width:72rem}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-md{max-width:28rem}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%, 100%{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0, 0, 0.2, 1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse-slow{animation:pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-3\\.5{gap:0.875rem}.gap-3{gap:0.75rem}.space-x-2 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.75rem * var(--tw-space-x-reverse));margin-left:calc(0.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-x-1 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.25rem * var(--tw-space-x-reverse));margin-left:calc(0.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.5rem * var(--tw-space-y-reverse))}.space-y-4 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-3 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.75rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:0.75rem}.rounded-lg{border-radius:0.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-amber-500\\\/20{border-color:rgb(245 158 11 \/ 0.2)}.border-amber-500\\\/30{border-color:rgb(245 158 11 \/ 0.3)}.border-amber-500\\\/40{border-color:rgb(245 158 11 \/ 0.4)}.border-zinc-800\\\/80{border-color:rgb(39 39 42 \/ 0.8)}.border-emerald-500\\\/20{border-color:rgb(16 185 129 \/ 0.2)}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70 \/ var(--tw-border-opacity, 1))}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42 \/ var(--tw-border-opacity, 1))}.border-zinc-800\\\/30{border-color:rgb(39 39 42 \/ 0.3)}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36 \/ var(--tw-bg-opacity, 1))}.bg-amber-500\\\/10{background-color:rgb(245 158 11 \/ 0.1)}.bg-cardbg{--tw-bg-opacity:1;background-color:rgb(18 18 23 \/ var(--tw-bg-opacity, 1))}.bg-darkbg{--tw-bg-opacity:1;background-color:rgb(9 9 11 \/ var(--tw-bg-opacity, 1))}.bg-darkbg\\\/90{background-color:rgb(9 9 11 \/ 0.9)}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27 \/ var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11 \/ var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0 \/ var(--tw-bg-opacity, 1))}.bg-black\\\/40{background-color:rgb(0 0 0 \/ 0.4)}.bg-black\\\/85{background-color:rgb(0 0 0 \/ 0.85)}.bg-black\\\/90{background-color:rgb(0 0 0 \/ 0.9)}.bg-emerald-500\\\/10{background-color:rgb(16 185 129 \/ 0.1)}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105 \/ var(--tw-bg-opacity, 1))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42 \/ var(--tw-bg-opacity, 1))}.bg-zinc-900\\\/30{background-color:rgb(24 24 27 \/ 0.3)}.bg-zinc-900\\\/50{background-color:rgb(24 24 27 \/ 0.5)}.bg-zinc-900\\\/80{background-color:rgb(24 24 27 \/ 0.8)}.bg-zinc-900\\\/90{background-color:rgb(24 24 27 \/ 0.9)}.bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11 \/ var(--tw-bg-opacity, 1))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right, var(--tw-gradient-stops))}.from-amber-200{--tw-gradient-from:#fde68a var(--tw-gradient-from-position);--tw-gradient-to:rgb(253 230 138 \/ 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgb(245 158 11 \/ 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-yellow-300{--tw-gradient-to:rgb(253 224 71 \/ 0)  var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #fde047 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-yellow-400{--tw-gradient-to:rgb(250 204 21 \/ 0)  var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #facc15 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-500{--tw-gradient-to:#f59e0b var(--tw-gradient-to-position)}.to-amber-600{--tw-gradient-to:#d97706 var(--tw-gradient-to-position)}.to-yellow-400{--tw-gradient-to:#facc15 var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{object-fit:cover}.p-6{padding:1.5rem}.p-4{padding:1rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\\.5{padding-top:0.375rem;padding-bottom:0.375rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-2\\.5{padding-top:0.625rem;padding-bottom:0.625rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pr-4{padding-right:1rem}.pt-2{padding-top:0.5rem}.pr-1{padding-right:0.25rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-extrabold{font-weight:800}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:0.025em}.tracking-wider{letter-spacing:0.05em}.tracking-tight{letter-spacing:-0.025em}.tracking-widest{letter-spacing:0.1em}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36 \/ var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0 \/ var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245 \/ var(--tw-text-opacity, 1))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170 \/ var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153 \/ var(--tw-text-opacity, 1))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94 \/ var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 \/ var(--tw-text-opacity, 1))}.text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231 \/ var(--tw-text-opacity, 1))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216 \/ var(--tw-text-opacity, 1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122 \/ var(--tw-text-opacity, 1))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70 \/ var(--tw-text-opacity, 1))}.text-amber-500\\\/80{color:rgb(245 158 11 \/ 0.8)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 \/ var(--tw-text-opacity, 1))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91 \/ var(--tw-text-opacity, 1))}.opacity-80{opacity:0.8}.opacity-0{opacity:0}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0 \/ 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 \/ 0.1), 0 4px 6px -4px rgb(0 0 0 \/ 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 \/ 0.1), 0 8px 10px -6px rgb(0 0 0 \/ 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-amber-500\\\/20{--tw-shadow-color:rgb(245 158 11 \/ 0.2);--tw-shadow:var(--tw-shadow-colored)}.shadow-amber-500\\\/30{--tw-shadow-color:rgb(245 158 11 \/ 0.3);--tw-shadow:var(--tw-shadow-colored)}.shadow-emerald-600\\\/20{--tw-shadow-color:rgb(5 150 105 \/ 0.2);--tw-shadow:var(--tw-shadow-colored)}.blur-md{--tw-blur:blur(12px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-500{transition-duration:500ms}.duration-300{transition-duration:300ms}.selection\\:bg-gold *::selection{--tw-bg-opacity:1;background-color:rgb(245 158 11 \/ var(--tw-bg-opacity, 1))}.selection\\:text-black *::selection{--tw-text-opacity:1;color:rgb(0 0 0 \/ var(--tw-text-opacity, 1))}.selection\\:bg-gold::selection{--tw-bg-opacity:1;background-color:rgb(245 158 11 \/ var(--tw-bg-opacity, 1))}.selection\\:text-black::selection{--tw-text-opacity:1;color:rgb(0 0 0 \/ var(--tw-text-opacity, 1))}.hover\\:border-amber-500\\\/50:hover{border-color:rgb(245 158 11 \/ 0.5)}.hover\\:bg-amber-400:hover{--tw-bg-opacity:1;background-color:rgb(251 191 36 \/ var(--tw-bg-opacity, 1))}.hover\\:bg-emerald-500:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129 \/ var(--tw-bg-opacity, 1))}.hover\\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70 \/ var(--tw-bg-opacity, 1))}.hover\\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42 \/ var(--tw-bg-opacity, 1))}.hover\\:from-amber-400:hover{--tw-gradient-from:#fbbf24 var(--tw-gradient-from-position);--tw-gradient-to:rgb(251 191 36 \/ 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.hover\\:to-yellow-300:hover{--tw-gradient-to:#fde047 var(--tw-gradient-to-position)}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255 \/ var(--tw-text-opacity, 1))}.hover\\:text-zinc-400:hover{--tw-text-opacity:1;color:rgb(161 161 170 \/ var(--tw-text-opacity, 1))}.focus\\:border-amber-500:focus{--tw-border-opacity:1;border-color:rgb(245 158 11 \/ var(--tw-border-opacity, 1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.group\\\/vid:hover .group-hover\\\/vid\\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\\\/vid:hover .group-hover\\\/vid\\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\\\/sub:hover .group-hover\\\/sub\\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\\\/vid:hover .group-hover\\\/vid\\:bg-black\\\/20{background-color:rgb(0 0 0 \/ 0.2)}.group\\\/sub:hover .group-hover\\\/sub\\:bg-black\\\/20{background-color:rgb(0 0 0 \/ 0.2)}.group:hover .group-hover\\:text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36 \/ var(--tw-text-opacity, 1))}.group:hover .group-hover\\:opacity-100{opacity:1}@media (min-width: 768px){.md\\:w-1\\\/2{width:50%}.md\\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.md\\:flex-row{flex-direction:row}.md\\:justify-start{justify-content:flex-start}.md\\:p-8{padding:2rem}.md\\:text-left{text-align:left}.md\\:text-4xl{font-size:2.25rem;line-height:2.5rem}}<\/style><\/head>\r\n<body class=\"bg-darkbg text-zinc-100 min-h-screen flex flex-col justify-between selection:bg-gold selection:text-black relative overflow-x-hidden\">\r\n\r\n    <header class=\"w-full border-b border-zinc-800\/80 bg-darkbg\/90 backdrop-blur-md sticky top-0 z-30\">\r\n        <div class=\"max-w-6xl mx-auto px-4 py-4 flex items-center justify-between\">\r\n            <div class=\"flex items-center space-x-3\">\r\n                <div class=\"w-10 h-10 rounded-xl bg-gradient-to-tr from-amber-500 via-yellow-400 to-amber-600 flex items-center justify-center shadow-lg shadow-amber-500\/20 text-black font-black\">\r\n                    <i class=\"fa-solid fa-trophy text-lg\"><\/i>\r\n                <\/div>\r\n                <div>\r\n                    <h1 class=\"text-xl font-black tracking-wider uppercase bg-gradient-to-r from-amber-200 via-yellow-400 to-amber-500 bg-clip-text text-transparent\">\r\n                        Top Ranking\r\n                    <\/h1>\r\n                    <p class=\"text-xs text-zinc-400 font-medium tracking-wide\">Las 10 M\u00e1s Pedidas + El Puesto Cero<\/p>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"flex items-center space-x-2\">\r\n                <span class=\"inline-flex items-center px-3 py-1 rounded-full text-xs font-bold bg-amber-500\/10 text-amber-400 border border-amber-500\/30\">\r\n                    <span class=\"w-2 h-2 rounded-full bg-amber-400 animate-ping mr-2\"><\/span>\r\n                    EDICI\u00d3N DE LA SEMANA\r\n                <\/span>\r\n            <\/div>\r\n        <\/div>\r\n    <\/header>\r\n\r\n    <main class=\"max-w-6xl mx-auto px-4 py-8 w-full flex-grow space-y-10\" id=\"ranking-container\">\r\n        \r\n        <!-- PUESTO 0: LA UNO UNO DE LA SEMANA (Ancho completo destacado con brillo dorado) -->\r\n        <section id=\"rank-item-0\" class=\"relative group\">\r\n            <div class=\"absolute -inset-1 bg-gradient-to-r from-amber-500 via-yellow-300 to-amber-600 rounded-3xl blur-md opacity-80 group-hover:opacity-100 transition duration-500 animate-pulse-slow\"><\/div>\r\n            <div class=\"relative bg-cardbg rounded-3xl p-6 md:p-8 border border-amber-500\/40 shadow-2xl gold-border-glow flex flex-col md:flex-row items-center gap-6\">\r\n                <!-- Video Thumbnail \/ Play Button -->\r\n                <div class=\"relative w-full md:w-1\/2 aspect-video rounded-2xl overflow-hidden bg-zinc-900 group\/vid cursor-pointer shadow-xl border border-amber-500\/20\" onclick=\"openPlayer(0)\">\r\n                    <img decoding=\"async\" id=\"img-0\" data-src=\"https:\/\/i.ytimg.com\/vi\/fRIhCiUVaKs\/hqdefault.jpg\" alt=\"LA UNO UNO DE LA SEMANA\" class=\"w-full h-full object-cover group-hover\/vid:scale-105 transition duration-500 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/600x338\/181824\/f59e0b?text=Thumbnail+No+Disponible'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                    <div class=\"absolute inset-0 bg-black\/40 group-hover\/vid:bg-black\/20 transition flex items-center justify-center\">\r\n                        <div class=\"w-16 h-16 rounded-full bg-amber-500 text-black flex items-center justify-center shadow-xl shadow-amber-500\/30 transform group-hover\/vid:scale-110 transition duration-300\">\r\n                            <i class=\"fa-solid fa-play ml-1 text-2xl\"><\/i>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"absolute top-3 left-3 bg-gradient-to-r from-amber-500 to-yellow-400 text-black font-black text-xs px-3 py-1.5 rounded-full uppercase tracking-widest shadow-lg flex items-center space-x-1\">\r\n                        <i class=\"fa-solid fa-crown\"><\/i>\r\n                        <span>#0 ESTELAR<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n                <!-- Details -->\r\n                <div class=\"w-full md:w-1\/2 flex flex-col justify-center space-y-4 text-center md:text-left\">\r\n                    <div class=\"inline-flex items-center justify-center md:justify-start space-x-2\">\r\n                        <span class=\"px-3 py-1 rounded-lg bg-amber-500\/10 border border-amber-500\/30 text-amber-400 font-black text-xs uppercase tracking-widest\">\r\n                            \u2605 LA UNO UNO DE LA SEMANA\r\n                        <\/span>\r\n                    <\/div>\r\n                    <h2 id=\"title-0\" class=\"text-2xl md:text-4xl font-black text-white tracking-tight leading-tight line-clamp-2\">Karol G - Baby Wow<\/h2>\r\n                    <p id=\"desc-0\" class=\"text-sm text-zinc-400 leading-relaxed line-clamp-2\">\r\n                        El tema m\u00e1s votado de la semana. Reproduce el video para ver el \u00e9xito imparable de la lista.\r\n                    <\/p>\r\n                    <div class=\"pt-2 flex flex-wrap items-center justify-center md:justify-start gap-4\">\r\n                        <button onclick=\"openPlayer(0)\" class=\"px-6 py-3 rounded-2xl bg-gradient-to-r from-amber-500 to-yellow-400 hover:from-amber-400 hover:to-yellow-300 text-black font-extrabold text-sm transition shadow-lg shadow-amber-500\/20 flex items-center space-x-2\">\r\n                            <i class=\"fa-solid fa-play\"><\/i>\r\n                            <span>REPRODUCIR AHORA<\/span>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/section>\r\n\r\n        <!-- DIVIDER -->\r\n        <div class=\"relative flex py-2 items-center\">\r\n            <div class=\"flex-grow border-t border-zinc-800\"><\/div>\r\n            <span class=\"flex-shrink mx-4 text-xs font-black uppercase tracking-widest text-zinc-400 bg-zinc-900\/80 px-4 py-1.5 rounded-full border border-zinc-800\">\r\n                POSICIONES OFICIALES DEL 1 AL 10\r\n            <\/span>\r\n            <div class=\"flex-grow border-t border-zinc-800\"><\/div>\r\n        <\/div>\r\n\r\n        <!-- POSICIONES DEL 1 AL 10 EN DOS COLUMNAS EN DESKTOP\/TABLET -->\r\n        <div id=\"ranks-1-10-container\" class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #1\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(1)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/5qap5aO4i9A\/hqdefault.jpg\" alt=\"Puesto 1\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                lofi hip hop radio - beats to relax\/study to\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #2\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(2)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/9bZkp7q19f0\/hqdefault.jpg\" alt=\"Puesto 2\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                PSY - GANGNAM STYLE(\uac15\ub0a8\uc2a4\ud0c0\uc77c) M\/V\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #3\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(3)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/kJQP7kiw5Fk\/hqdefault.jpg\" alt=\"Puesto 3\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Luis Fonsi - Despacito ft. Daddy Yankee\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #4\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(4)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/JGwWNGJdvx8\/hqdefault.jpg\" alt=\"Puesto 4\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Ed Sheeran - Shape of You (Official Music Video)\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #5\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(5)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/fJ9rUzIMcZQ\/hqdefault.jpg\" alt=\"Puesto 5\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Queen \u2013 Bohemian Rhapsody (Official Video Remastered)\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #6\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(6)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/RgKAFK5djSk\/hqdefault.jpg\" alt=\"Puesto 6\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Wiz Khalifa - See You Again ft. Charlie Puth [Official Video] Furious 7 Soundtrack\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #7\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(7)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/YQHsXMglC9A\/hqdefault.jpg\" alt=\"Puesto 7\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Adele - Hello (Official Music Video)\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #8\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(8)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/2Vv-BfVoq4g\/hqdefault.jpg\" alt=\"Puesto 8\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Ed Sheeran - Perfect (Official Music Video)\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #9\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(9)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/uelHwf8o7_U\/hqdefault.jpg\" alt=\"Puesto 9\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Eminem - Love The Way You Lie ft. Rihanna\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #10\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(10)\">\r\n                            <img decoding=\"async\" data-src=\"https:\/\/i.ytimg.com\/vi\/OPf0YbXqDm0\/hqdefault.jpg\" alt=\"Puesto 10\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300 lazyload\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                Mark Ronson - Uptown Funk (Official Video) ft. Bruno Mars\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n    <\/main>\r\n\r\n    <!-- VIDEO PLAYER MODAL -->\r\n    <div id=\"video-modal\" class=\"fixed inset-0 bg-black\/85 backdrop-blur-md z-50 hidden flex items-center justify-center p-4\">\r\n        <div class=\"bg-cardbg border border-zinc-800 w-full max-w-4xl rounded-3xl overflow-hidden shadow-2xl relative\">\r\n            <div class=\"flex items-center justify-between px-6 py-4 border-b border-zinc-800 bg-zinc-900\/50\">\r\n                <h3 id=\"modal-title\" class=\"text-base font-bold text-white truncate pr-4\">Reproduciendo Video<\/h3>\r\n                <button onclick=\"closePlayer()\" class=\"w-9 h-9 rounded-full bg-zinc-800 hover:bg-zinc-700 text-zinc-400 hover:text-white flex items-center justify-center transition\">\r\n                    <i class=\"fa-solid fa-xmark text-lg\"><\/i>\r\n                <\/button>\r\n            <\/div>\r\n            <div class=\"aspect-video w-full bg-black relative\" id=\"modal-player-container\">\r\n                <!-- YouTube iFrame dynamically inserted -->\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- BOT\u00d3N DISCRETO EN ESQUINA INFERIOR DERECHA (Panel oculto) -->\r\n    <button id=\"secret-admin-btn\" onclick=\"openAdminModal()\" title=\"Configuraci\u00f3n\" class=\"fixed bottom-3 right-3 z-30 w-7 h-7 rounded-full bg-zinc-900\/30 hover:bg-zinc-800 text-zinc-700 hover:text-zinc-400 flex items-center justify-center transition backdrop-blur-xs border border-zinc-800\/30 text-xs\">\r\n        <i class=\"fa-solid fa-gear\"><\/i>\r\n    <\/button>\r\n\r\n    <!-- MODAL DE CONTRASE\u00d1A -->\r\n    <div id=\"password-modal\" class=\"fixed inset-0 bg-black\/85 backdrop-blur-md z-50 flex items-center justify-center p-4 hidden\">\r\n        <div class=\"bg-cardbg border border-zinc-800 w-full max-w-md rounded-3xl p-6 shadow-2xl space-y-6\">\r\n            <div class=\"text-center space-y-2\">\r\n                <div class=\"w-12 h-12 rounded-2xl bg-amber-500\/10 text-amber-400 border border-amber-500\/20 mx-auto flex items-center justify-center text-xl\">\r\n                    <i class=\"fa-solid fa-lock\"><\/i>\r\n                <\/div>\r\n                <h3 class=\"text-xl font-bold text-white\">Acceso Administrador<\/h3>\r\n                <p class=\"text-xs text-zinc-400\">Ingresa la clave para modificar las canciones del ranking.<\/p>\r\n            <\/div>\r\n            <div class=\"space-y-4\">\r\n                <div>\r\n                    <input type=\"password\" id=\"admin-pass-input\" placeholder=\"Contrase\u00f1a de acceso\" class=\"w-full bg-zinc-900 border border-zinc-700 rounded-xl px-4 py-3 text-white text-sm focus:outline-none focus:border-amber-500 transition text-center tracking-widest\" onkeydown=\"if(event.key==='Enter') verifyPassword()\">\r\n                    <p id=\"pass-error\" class=\"text-rose-500 text-xs mt-2 text-center hidden font-medium\">Contrase\u00f1a incorrecta.<\/p>\r\n                <\/div>\r\n                <div class=\"flex space-x-3\">\r\n                    <button onclick=\"closePasswordModal()\" class=\"w-1\/2 py-3 rounded-xl bg-zinc-800 hover:bg-zinc-700 text-zinc-300 font-semibold text-sm transition\">Cancelar<\/button>\r\n                    <button onclick=\"verifyPassword()\" class=\"w-1\/2 py-3 rounded-xl bg-amber-500 hover:bg-amber-400 text-black font-bold text-sm transition shadow-lg shadow-amber-500\/20\">Acceder<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- PANEL DE ADMINISTRACI\u00d3N COMPLETO -->\r\n    <div id=\"admin-panel-modal\" class=\"fixed inset-0 bg-black\/90 backdrop-blur-md z-50 flex flex-col p-4 md:p-8 hidden\">\r\n        <div class=\"max-w-5xl mx-auto w-full bg-cardbg border border-zinc-800 rounded-3xl flex flex-col h-full shadow-2xl overflow-hidden\">\r\n            <!-- Header del Panel -->\r\n            <div class=\"px-6 py-4 border-b border-zinc-800 flex items-center justify-between bg-zinc-900\/50\">\r\n                <div class=\"flex items-center space-x-3\">\r\n                    <div class=\"w-9 h-9 rounded-xl bg-amber-500\/10 text-amber-400 border border-amber-500\/20 flex items-center justify-center\">\r\n                        <i class=\"fa-solid fa-sliders\"><\/i>\r\n                    <\/div>\r\n                    <div>\r\n                        <h3 class=\"text-base font-bold text-white\">Gestor del Ranking de YouTube<\/h3>\r\n                        <p class=\"text-xs text-zinc-400\">Puesto 0 + Puestos del 1 al 10 (Distribuci\u00f3n en 2 Columnas)<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                <button onclick=\"closeAdminModal()\" class=\"w-9 h-9 rounded-full bg-zinc-800 hover:bg-zinc-700 text-zinc-400 hover:text-white flex items-center justify-center transition\">\r\n                    <i class=\"fa-solid fa-xmark text-lg\"><\/i>\r\n                <\/button>\r\n            <\/div>\r\n            \r\n            <!-- Formulario din\u00e1mico del 0 al 10 -->\r\n            <div class=\"flex-grow overflow-y-auto p-6 space-y-4 custom-scrollbar\" id=\"admin-fields-container\">\r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-amber-400\">\u2605 Puesto 0 (LA UNO UNO DE LA SEMANA - Estelar)<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #0<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-0\" value=\"https:\/\/www.youtube.com\/watch?v=dQw4w9WgXcQ\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-0\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #1<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #1<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-1\" value=\"https:\/\/www.youtube.com\/watch?v=5qap5aO4i9A\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-1\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #2<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #2<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-2\" value=\"https:\/\/www.youtube.com\/watch?v=9bZkp7q19f0\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-2\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #3<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #3<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-3\" value=\"https:\/\/www.youtube.com\/watch?v=kJQP7kiw5Fk\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-3\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #4<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #4<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-4\" value=\"https:\/\/www.youtube.com\/watch?v=JGwWNGJdvx8\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-4\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #5<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #5<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-5\" value=\"https:\/\/www.youtube.com\/watch?v=fJ9rUzIMcZQ\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-5\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #6<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #6<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-6\" value=\"https:\/\/www.youtube.com\/watch?v=RgKAFK5djSk\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-6\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #7<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #7<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-7\" value=\"https:\/\/www.youtube.com\/watch?v=YQHsXMglC9A\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-7\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #8<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #8<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-8\" value=\"https:\/\/www.youtube.com\/watch?v=2Vv-BfVoq4g\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-8\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #9<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #9<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-9\" value=\"https:\/\/www.youtube.com\/watch?v=uelHwf8o7_U\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-9\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                \r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider text-zinc-400\">Puesto #10<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #10<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-10\" value=\"https:\/\/www.youtube.com\/watch?v=OPf0YbXqDm0\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-10\" value=\"\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n            <!-- Footer del Panel -->\r\n            <div class=\"px-6 py-4 border-t border-zinc-800 bg-zinc-900\/50 flex flex-wrap items-center justify-between gap-4\">\r\n                <p class=\"text-xs text-zinc-400\">Los metadatos (t\u00edtulo y miniatura) se extraen autom\u00e1ticamente de YouTube.<\/p>\r\n                <button onclick=\"saveAndGenerateCode()\" class=\"px-6 py-3 rounded-xl bg-amber-500 hover:bg-amber-400 text-black font-extrabold text-sm transition shadow-lg shadow-amber-500\/20 flex items-center space-x-2\">\r\n                    <i class=\"fa-solid fa-floppy-disk\"><\/i>\r\n                    <span>Guardar y Generar C\u00f3digo WordPress<\/span>\r\n                <\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- MODAL DE EXPORTACI\u00d3N Y C\u00d3DIGO ACTUALIZADO -->\r\n    <div id=\"export-modal\" class=\"fixed inset-0 bg-black\/90 backdrop-blur-md z-50 hidden flex items-center justify-center p-4\">\r\n        <div class=\"bg-cardbg border border-zinc-800 w-full max-w-2xl rounded-3xl p-6 shadow-2xl space-y-6\">\r\n            <div class=\"flex items-center justify-between\">\r\n                <div class=\"flex items-center space-x-3\">\r\n                    <div class=\"w-10 h-10 rounded-xl bg-emerald-500\/10 border border-emerald-500\/20 text-emerald-400 flex items-center justify-center text-lg\">\r\n                        <i class=\"fa-solid fa-check\"><\/i>\r\n                    <\/div>\r\n                    <div>\r\n                        <h3 class=\"text-lg font-bold text-white\">Ranking Actualizado Exitosamente<\/h3>\r\n                        <p class=\"text-xs text-zinc-400\">Copia el siguiente c\u00f3digo e ins\u00e9rtalo en tu bloque HTML \/ Embed de WordPress.<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                <button onclick=\"closeExportModal()\" class=\"w-8 h-8 rounded-full bg-zinc-800 hover:bg-zinc-700 text-zinc-400 hover:text-white flex items-center justify-center transition\">\r\n                    <i class=\"fa-solid fa-xmark\"><\/i>\r\n                <\/button>\r\n            <\/div>\r\n            \r\n            <div class=\"space-y-2\">\r\n                <label class=\"text-xs font-semibold text-zinc-400 uppercase tracking-wider\">C\u00f3digo HTML Completo listo para embed:<\/label>\r\n                <textarea id=\"exported-code-textarea\" readonly=\"\" class=\"w-full h-52 bg-zinc-900 border border-zinc-700 rounded-2xl p-4 text-xs text-zinc-300 font-mono focus:outline-none resize-none custom-scrollbar\"><\/textarea>\r\n            <\/div>\r\n\r\n            <div class=\"flex items-center justify-between\">\r\n                <span id=\"copy-success-msg\" class=\"text-emerald-400 text-xs font-semibold opacity-0 transition\">\u00a1C\u00f3digo copiado al portapapeles!<\/span>\r\n                <div class=\"flex space-x-3\">\r\n                    <button onclick=\"downloadHtmlFile()\" class=\"px-4 py-2.5 rounded-xl bg-zinc-800 hover:bg-zinc-700 text-zinc-200 font-semibold text-xs transition flex items-center space-x-2\">\r\n                        <i class=\"fa-solid fa-download\"><\/i>\r\n                        <span>Descargar HTML<\/span>\r\n                    <\/button>\r\n                    <button onclick=\"copyExportedCode()\" class=\"px-6 py-2.5 rounded-xl bg-emerald-600 hover:bg-emerald-500 text-white font-bold text-xs transition shadow-lg shadow-emerald-600\/20 flex items-center space-x-2\">\r\n                        <i class=\"fa-solid fa-copy\"><\/i>\r\n                        <span>Copiar C\u00f3digo<\/span>\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <footer class=\"w-full border-t border-zinc-800\/80 py-6 text-center text-xs text-zinc-500 bg-darkbg\">\r\n        <p>\u00a9 2026 Ranking Musical. Optimizado para incrustar en WordPress.<\/p>\r\n    <\/footer>\r\n\r\n    <script>\r\n        \/\/ Arreglo con los 11 puestos (Index 0 = LA UNO UNO DE LA SEMANA, Index 1 al 10 = Posiciones)\r\n        let rankingData = [\r\n    {\r\n        \"rank\": 0,\r\n        \"title\": \"KAROL G, Judeline, rusowsky - BbY WOW (Visualizer)\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=fRIhCiUVaKs&list=RDfRIhCiUVaKs&start_radio=1&pp=ygUTS2Fyb2wgRyAtIEJhYnkgV293CaAHAQ%3D%3D\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/fRIhCiUVaKs\/hqdefault.jpg\",\r\n        \"customTitle\": \"Karol G - Baby Wow\"\r\n    },\r\n    {\r\n        \"rank\": 1,\r\n        \"title\": \"lofi hip hop radio - beats to relax\/study to\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=5qap5aO4i9A\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/5qap5aO4i9A\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 2,\r\n        \"title\": \"PSY - GANGNAM STYLE(\uac15\ub0a8\uc2a4\ud0c0\uc77c) M\/V\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=9bZkp7q19f0\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/9bZkp7q19f0\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 3,\r\n        \"title\": \"Luis Fonsi - Despacito ft. Daddy Yankee\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=kJQP7kiw5Fk\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/kJQP7kiw5Fk\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 4,\r\n        \"title\": \"Ed Sheeran - Shape of You (Official Music Video)\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=JGwWNGJdvx8\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/JGwWNGJdvx8\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 5,\r\n        \"title\": \"Queen \u2013 Bohemian Rhapsody (Official Video Remastered)\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=fJ9rUzIMcZQ\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/fJ9rUzIMcZQ\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 6,\r\n        \"title\": \"Wiz Khalifa - See You Again ft. Charlie Puth [Official Video] Furious 7 Soundtrack\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=RgKAFK5djSk\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/RgKAFK5djSk\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 7,\r\n        \"title\": \"Adele - Hello (Official Music Video)\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=YQHsXMglC9A\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/YQHsXMglC9A\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 8,\r\n        \"title\": \"Ed Sheeran - Perfect (Official Music Video)\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=2Vv-BfVoq4g\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/2Vv-BfVoq4g\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 9,\r\n        \"title\": \"Eminem - Love The Way You Lie ft. Rihanna\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=uelHwf8o7_U\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/uelHwf8o7_U\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    },\r\n    {\r\n        \"rank\": 10,\r\n        \"title\": \"Mark Ronson - Uptown Funk (Official Video) ft. Bruno Mars\",\r\n        \"url\": \"https:\/\/www.youtube.com\/watch?v=OPf0YbXqDm0\",\r\n        \"thumbnail\": \"https:\/\/i.ytimg.com\/vi\/OPf0YbXqDm0\/hqdefault.jpg\",\r\n        \"customTitle\": \"\"\r\n    }\r\n];\r\n\r\n        \/\/ Cargar datos locales si est\u00e1n disponibles\r\n        function loadStoredData() {\r\n            const saved = localStorage.getItem('youtube_ranking_2col_data');\r\n            if (saved) {\r\n                try {\r\n                    rankingData = JSON.parse(saved);\r\n                } catch(e) {\r\n                    console.error(\"Error al cargar datos\", e);\r\n                }\r\n            }\r\n        }\r\n\r\n        \/\/ Helper para extraer ID de video de YouTube\r\n        function extractYouTubeId(url) {\r\n            if (!url) return '';\r\n            const regExp = \/^.*(youtu.be\\\/|v\\\/|u\\\/\\w\\\/|embed\\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*\/;\r\n            const match = url.match(regExp);\r\n            return (match && match[2].length === 11) ? match[2] : (url.length === 11 ? url : '');\r\n        }\r\n\r\n        \/\/ Obtenci\u00f3n autom\u00e1tica de metadatos v\u00eda oEmbed\r\n        async function fetchYouTubeMetadata(url) {\r\n            const videoId = extractYouTubeId(url);\r\n            if (!videoId) {\r\n                return {\r\n                    title: \"Video no disponible\",\r\n                    thumbnail: \"https:\/\/placehold.co\/600x338\/181824\/f59e0b?text=URL+Invalida\"\r\n                };\r\n            }\r\n\r\n            let title = \"Nuevo Video Musical\";\r\n            let thumbnail = `https:\/\/img.youtube.com\/vi\/${videoId}\/hqdefault.jpg`;\r\n\r\n            try {\r\n                const response = await fetch(`https:\/\/www.youtube.com\/oembed?url=https:\/\/www.youtube.com\/watch?v=${videoId}&format=json`);\r\n                if (response.ok) {\r\n                    const data = await response.json();\r\n                    if (data.title) title = data.title;\r\n                    if (data.thumbnail_url) thumbnail = data.thumbnail_url;\r\n                }\r\n            } catch (err) {\r\n                console.warn(\"Respaldo autom\u00e1tico de metadatos aplicado.\", err);\r\n            }\r\n\r\n            return { title, thumbnail, videoId };\r\n        }\r\n\r\n        \/\/ Renderizar todo el ranking (Puesto 0 arriba + 2 Columnas para los puestos 1-10)\r\n        async function renderRanking() {\r\n            \/\/ Render Puesto 0\r\n            const item0 = rankingData[0];\r\n            const displayTitle0 = item0.customTitle && item0.customTitle.trim() !== \"\" ? item0.customTitle : item0.title;\r\n            document.getElementById('title-0').innerText = displayTitle0;\r\n            const img0El = document.getElementById('img-0');\r\n            if (item0.thumbnail) {\r\n                img0El.src = item0.thumbnail;\r\n            }\r\n\r\n            \/\/ Render Puestos del 1 al 10 en DOS COLUMNAS\r\n            const container = document.getElementById('ranks-1-10-container');\r\n            container.innerHTML = '';\r\n\r\n            for (let i = 1; i <= 10; i++) {\r\n                const item = rankingData[i];\r\n                const displayTitle = item.customTitle && item.customTitle.trim() !== \"\" ? item.customTitle : item.title;\r\n                const thumb = item.thumbnail || `https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Puesto+${i}`;\r\n\r\n                const cardHtml = `\r\n                    <div class=\"bg-cardbg rounded-2xl p-4 border border-zinc-800\/80 hover:border-amber-500\/50 transition duration-300 flex items-center gap-3.5 group\">\r\n                        <div class=\"text-2xl font-black text-amber-500\/80 w-8 text-center flex-shrink-0\">\r\n                            #${i}\r\n                        <\/div>\r\n                        <div class=\"relative w-28 aspect-video rounded-xl overflow-hidden bg-zinc-900 cursor-pointer flex-shrink-0 group\/sub shadow-md\" onclick=\"openPlayer(${i})\">\r\n                            <img decoding=\"async\" src=\"${thumb}\" alt=\"Puesto ${i}\" class=\"w-full h-full object-cover group-hover\/sub:scale-105 transition duration-300\" onerror=\"this.src='https:\/\/placehold.co\/300x169\/181824\/f59e0b?text=Error'\">\r\n                            <div class=\"absolute inset-0 bg-black\/40 group-hover\/sub:bg-black\/20 transition flex items-center justify-center\">\r\n                                <div class=\"w-7 h-7 rounded-full bg-amber-500 text-black flex items-center justify-center text-xs shadow-md\">\r\n                                    <i class=\"fa-solid fa-play ml-0.5\"><\/i>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"flex-grow min-w-0 pr-1\">\r\n                            <h4 class=\"text-sm font-bold text-white truncate group-hover:text-amber-400 transition\">\r\n                                ${displayTitle}\r\n                            <\/h4>\r\n                            <p class=\"text-xs text-zinc-500 mt-1 flex items-center space-x-1\">\r\n                                <i class=\"fa-brands fa-youtube text-red-500\"><\/i>\r\n                                <span>Ver video oficial<\/span>\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n                container.insertAdjacentHTML('beforeend', cardHtml);\r\n            }\r\n        }\r\n\r\n        \/\/ Modal de reproductor de video\r\n        function openPlayer(index) {\r\n            const item = rankingData[index];\r\n            const videoId = extractYouTubeId(item.url);\r\n            if (!videoId) {\r\n                alert(\"La URL de YouTube no es v\u00e1lida.\");\r\n                return;\r\n            }\r\n            \r\n            const modalTitle = item.customTitle && item.customTitle.trim() !== \"\" ? item.customTitle : item.title;\r\n            document.getElementById('modal-title').innerText = `#${index === 0 ? '0 (LA UNO UNO)' : index} - ${modalTitle}`;\r\n            \r\n            const playerContainer = document.getElementById('modal-player-container');\r\n            playerContainer.innerHTML = `<iframe src=\"https:\/\/www.youtube.com\/embed\/${videoId}?autoplay=1\" class=\"w-full h-full absolute inset-0 border-0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>`;\r\n            \r\n            document.getElementById('video-modal').classList.remove('hidden');\r\n        }\r\n\r\n        function closePlayer() {\r\n            document.getElementById('video-modal').classList.add('hidden');\r\n            document.getElementById('modal-player-container').innerHTML = '';\r\n        }\r\n\r\n        \/\/ Administraci\u00f3n y Contrase\u00f1a\r\n        function openAdminModal() {\r\n            document.getElementById('password-modal').classList.remove('hidden');\r\n            document.getElementById('admin-pass-input').value = '';\r\n            document.getElementById('pass-error').classList.add('hidden');\r\n            setTimeout(() => document.getElementById('admin-pass-input').focus(), 100);\r\n        }\r\n\r\n        function closePasswordModal() {\r\n            document.getElementById('password-modal').classList.add('hidden');\r\n        }\r\n\r\n        function verifyPassword() {\r\n            const pass = document.getElementById('admin-pass-input').value;\r\n            if (pass === \"45590222\") {\r\n                closePasswordModal();\r\n                showAdminPanel();\r\n            } else {\r\n                document.getElementById('pass-error').classList.remove('hidden');\r\n            }\r\n        }\r\n\r\n        function showAdminPanel() {\r\n            const container = document.getElementById('admin-fields-container');\r\n            container.innerHTML = '';\r\n\r\n            rankingData.forEach((item, index) => {\r\n                const labelName = index === 0 ? \"\u2605 Puesto 0 (LA UNO UNO DE LA SEMANA - Estelar)\" : `Puesto #${index}`;\r\n                const fieldHtml = `\r\n                    <div class=\"bg-zinc-900\/90 border border-zinc-800 rounded-2xl p-4 space-y-3\">\r\n                        <div class=\"flex items-center justify-between\">\r\n                            <span class=\"text-xs font-black uppercase tracking-wider ${index === 0 ? 'text-amber-400' : 'text-zinc-400'}\">${labelName}<\/span>\r\n                            <span class=\"text-xs text-zinc-600\">ID #${index}<\/span>\r\n                        <\/div>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">URL o ID de YouTube:<\/label>\r\n                                <input type=\"text\" id=\"admin-url-${index}\" value=\"${item.url}\" placeholder=\"https:\/\/www.youtube.com\/watch?v=...\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-medium text-zinc-400 mb-1\">T\u00edtulo Personalizado (Opcional):<\/label>\r\n                                <input type=\"text\" id=\"admin-title-${index}\" value=\"${item.customTitle || ''}\" placeholder=\"Vac\u00edo = T\u00edtulo autom\u00e1tico de YouTube\" class=\"w-full bg-zinc-950 border border-zinc-700 rounded-xl px-3 py-2 text-white text-xs focus:outline-none focus:border-amber-500\">\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n                container.insertAdjacentHTML('beforeend', fieldHtml);\r\n            });\r\n\r\n            document.getElementById('admin-panel-modal').classList.remove('hidden');\r\n        }\r\n\r\n        function closeAdminModal() {\r\n            document.getElementById('admin-panel-modal').classList.add('hidden');\r\n        }\r\n\r\n        \/\/ Guardar cambios y generar c\u00f3digo HTML\r\n        async function saveAndGenerateCode() {\r\n            for (let i = 0; i < rankingData.length; i++) {\r\n                const urlInput = document.getElementById(`admin-url-${i}`).value.trim();\r\n                const titleInput = document.getElementById(`admin-title-${i}`).value.trim();\r\n                \r\n                rankingData[i].url = urlInput;\r\n                rankingData[i].customTitle = titleInput;\r\n\r\n                const meta = await fetchYouTubeMetadata(urlInput);\r\n                rankingData[i].title = meta.title;\r\n                rankingData[i].thumbnail = meta.thumbnail;\r\n            }\r\n\r\n            localStorage.setItem('youtube_ranking_2col_data', JSON.stringify(rankingData));\r\n\r\n            renderRanking();\r\n            closeAdminModal();\r\n            generateFullHtmlOutput();\r\n        }\r\n\r\n        function generateFullHtmlOutput() {\r\n            let currentHtml = document.documentElement.outerHTML;\r\n            const dataRegex = \/let rankingData = \\[[\\s\\S]*?\\];\/;\r\n            const newDataString = `let rankingData = ${JSON.stringify(rankingData, null, 4)};`;\r\n            \r\n            if (currentHtml.match(dataRegex)) {\r\n                currentHtml = currentHtml.replace(dataRegex, newDataString);\r\n            }\r\n\r\n            document.getElementById('exported-code-textarea').value = currentHtml;\r\n            document.getElementById('export-modal').classList.remove('hidden');\r\n        }\r\n\r\n        function closeExportModal() {\r\n            document.getElementById('export-modal').classList.add('hidden');\r\n        }\r\n\r\n        function copyExportedCode() {\r\n            const textarea = document.getElementById('exported-code-textarea');\r\n            textarea.select();\r\n            try {\r\n                document.execCommand('copy');\r\n                const msg = document.getElementById('copy-success-msg');\r\n                msg.style.opacity = '1';\r\n                setTimeout(() => { msg.style.opacity = '0'; }, 3000);\r\n            } catch (err) {\r\n                alert('Selecciona y copia el c\u00f3digo manualmente.');\r\n            }\r\n        }\r\n\r\n        function downloadHtmlFile() {\r\n            const code = document.getElementById('exported-code-textarea').value;\r\n            const blob = new Blob([code], { type: 'text\/html;charset=utf-8' });\r\n            const url = URL.createObjectURL(blob);\r\n            const a = document.createElement('a');\r\n            a.href = url;\r\n            a.download = 'ranking_youtube_2columnas.html';\r\n            document.body.appendChild(a);\r\n            a.click();\r\n            document.body.removeChild(a);\r\n            URL.revokeObjectURL(url);\r\n        }\r\n\r\n        window.onload = async function() {\r\n            loadStoredData();\r\n            for (let i = 0; i < rankingData.length; i++) {\r\n                if (rankingData[i].url) {\r\n                    const meta = await fetchYouTubeMetadata(rankingData[i].url);\r\n                    if (!rankingData[i].customTitle && (!rankingData[i].title || rankingData[i].title.startsWith('\u00c9xito Radial') || rankingData[i].title.startsWith('Artista'))) {\r\n                        rankingData[i].title = meta.title;\r\n                    }\r\n                    if (!rankingData[i].thumbnail) {\r\n                        rankingData[i].thumbnail = meta.thumbnail;\r\n                    }\r\n                }\r\n            }\r\n            renderRanking();\r\n        };\r\n    <\/script>\r\n\r\n<\/body><\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Ranking Musical &#8211; La Uno Uno Top Ranking Las 10 M\u00e1s Pedidas + El Puesto Cero EDICI\u00d3N DE LA SEMANA #0 ESTELAR \u2605 LA UNO UNO DE LA SEMANA Karol G &#8211; Baby Wow El tema m\u00e1s votado de la semana. Reproduce el video para ver el \u00e9xito imparable de la lista. REPRODUCIR AHORA POSICIONES OFICIALES DEL 1 AL 10 #1 lofi hip hop radio &#8211; beats to relax\/study to Ver video oficial #2 PSY &#8211; GANGNAM STYLE(\uac15\ub0a8\uc2a4\ud0c0\uc77c) M\/V Ver video oficial #3 Luis Fonsi &#8211; Despacito ft. Daddy Yankee Ver video oficial #4 Ed Sheeran &#8211; Shape of You (Official Music Video) Ver video oficial #5 Queen \u2013 Bohemian Rhapsody (Official Video Remastered) Ver video oficial #6 Wiz Khalifa &#8211; See You Again ft. Charlie Puth [Official Video] Furious 7 Soundtrack Ver video oficial #7 Adele &#8211; Hello (Official Music Video) Ver video oficial #8 Ed Sheeran &#8211; Perfect (Official Music Video) Ver video oficial #9 Eminem &#8211; Love The Way You Lie ft. Rihanna Ver video oficial #10 Mark Ronson &#8211; Uptown Funk (Official Video) ft. Bruno Mars Ver video oficial Reproduciendo Video Acceso Administrador Ingresa la clave para modificar las canciones del ranking. Contrase\u00f1a incorrecta. Cancelar Acceder Gestor del Ranking de YouTube Puesto 0 + Puestos del 1 al 10 (Distribuci\u00f3n en 2 Columnas) \u2605 Puesto 0 (LA UNO UNO DE LA SEMANA &#8211; Estelar) ID #0 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #1 ID #1 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #2 ID #2 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #3 ID #3 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #4 ID #4 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #5 ID #5 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #6 ID #6 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #7 ID #7 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #8 ID #8 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #9 ID #9 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Puesto #10 ID #10 URL o ID de YouTube: T\u00edtulo Personalizado (Opcional): Los metadatos (t\u00edtulo y miniatura) se extraen autom\u00e1ticamente de YouTube. Guardar y Generar C\u00f3digo WordPress Ranking Actualizado Exitosamente Copia el siguiente c\u00f3digo e ins\u00e9rtalo en tu bloque HTML \/ Embed de WordPress. C\u00f3digo HTML Completo listo para embed: \u00a1C\u00f3digo copiado al portapapeles! Descargar HTML Copiar C\u00f3digo \u00a9 2026 Ranking Musical. Optimizado para incrustar en WordPress.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-504","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/pages\/504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/comments?post=504"}],"version-history":[{"count":116,"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/pages\/504\/revisions"}],"predecessor-version":[{"id":31465,"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/pages\/504\/revisions\/31465"}],"wp:attachment":[{"href":"https:\/\/radiohuancayo.com.pe\/wp54\/wp-json\/wp\/v2\/media?parent=504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}