{"product_id":"live-request","title":"REQUEST A SONG","description":"\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@500;600;700;800\u0026amp;family=Inter:wght@300;400;500;600\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cdiv class=\"ea\"\u003e\n\n  \u003c!-- HERO --\u003e\n  \u003cdiv class=\"ea__hero\"\u003e\n    \u003cspan class=\"ea__livebadge\"\u003e\u003ci\u003e\u003c\/i\u003eLive Requests\u003c\/span\u003e\n    \u003ch1 class=\"ea__title\"\u003eRequest A Song,\u003cbr\u003eReacted Live.\u003c\/h1\u003e\n    \u003cp class=\"ea__lede\"\u003eSend me your track and I'll react to it live on stream. Hear my first, unfiltered reaction in real time, with a shoutout to you.\u003c\/p\u003e\n    \u003cdiv class=\"ea__pills\"\u003e\n      \u003cspan class=\"ea__pill\"\u003e🔴 Reacted live\u003c\/span\u003e\n      \u003cspan class=\"ea__pill\"\u003e⭐ Personal shoutout\u003c\/span\u003e\n      \u003cspan class=\"ea__pill\"\u003e🎧 Full reaction\u003c\/span\u003e\n      \u003cspan class=\"ea__pill\"\u003e💬 In real time\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- HOW IT WORKS --\u003e\n  \u003cdiv class=\"ea__section\"\u003e\n    \u003cp class=\"ea__kicker\"\u003eHow It Works\u003c\/p\u003e\n    \u003ch2 class=\"ea__h2\"\u003eThree Simple Steps\u003c\/h2\u003e\n    \u003cdiv class=\"ea__steps\"\u003e\n      \u003cdiv class=\"ea__step\"\u003e\n        \u003cspan class=\"ea__num\"\u003e1\u003c\/span\u003e\n        \u003cb\u003eSearch first\u003c\/b\u003e\n        \u003cp\u003eUse the search below to check I haven't already reacted to your track.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ea__step\"\u003e\n        \u003cspan class=\"ea__num\"\u003e2\u003c\/span\u003e\n        \u003cb\u003eRequest your song\u003c\/b\u003e\n        \u003cp\u003eAdd your name and song in the order box. Set the quantity to send more than one.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ea__step\"\u003e\n        \u003cspan class=\"ea__num\"\u003e3\u003c\/span\u003e\n        \u003cb\u003eCatch it live\u003c\/b\u003e\n        \u003cp\u003eI react to your song live on stream, with your shoutout, and it stays on my channel to rewatch.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ===== SEARCH WIDGET ===== --\u003e\n  \u003cdiv class=\"rere-search-wrapper\" id=\"rereSearchSection\"\u003e\n    \u003ch2\u003eSearch My Reactions 👇\u003c\/h2\u003e\n    \u003cp\u003eType an artist name or song to check if I've already reacted to it\u003c\/p\u003e\n    \u003cform id=\"ytSearchForm\" class=\"rere-form\"\u003e\n      \u003cdiv class=\"rere-input-wrap\"\u003e\n        \u003cinput id=\"ytSearchInput\" class=\"rere-search-input\" type=\"search\" placeholder=\"e.g. Pink Floyd Time\" enterkeyhint=\"search\" inputmode=\"search\" autocomplete=\"off\"\u003e\n        \u003cbutton class=\"rere-inline-submit\" type=\"submit\"\u003eGo\u003c\/button\u003e\n      \u003c\/div\u003e\n      \u003cbutton class=\"rere-search-btn\" type=\"submit\"\u003eSearch\u003c\/button\u003e\n    \u003c\/form\u003e\n    \u003cdiv id=\"ytResults\"\u003e\u003c\/div\u003e\n    \u003cbutton id=\"closeSearchBtn\" type=\"button\" aria-label=\"Close search results\"\u003eClose Search\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- WHAT YOU GET --\u003e\n  \u003cdiv class=\"ea__section\"\u003e\n    \u003cp class=\"ea__kicker\"\u003eWhat You Get\u003c\/p\u003e\n    \u003ch2 class=\"ea__h2\"\u003eEverything Included\u003c\/h2\u003e\n    \u003cul class=\"ea__list\"\u003e\n      \u003cli\u003e\u003cspan\u003eA full, genuine live reaction to your song\u003c\/span\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003cspan\u003eA personal shoutout during the stream\u003c\/span\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003cspan\u003eYour song played live on my channel\u003c\/span\u003e\u003c\/li\u003e\n      \u003cli\u003e\u003cspan\u003eThe moment saved on my channel to rewatch anytime\u003c\/span\u003e\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- BEFORE YOU ORDER --\u003e\n  \u003cdiv class=\"ea__section ea__section--note\"\u003e\n    \u003cp class=\"ea__kicker\"\u003eBefore You Order\u003c\/p\u003e\n    \u003ch2 class=\"ea__h2\"\u003eQuick Things To Know\u003c\/h2\u003e\n    \u003cdiv class=\"ea__notes\"\u003e\n      \u003cdiv class=\"ea__note\"\u003e\n\u003cb\u003eSearch first\u003c\/b\u003e\u003cp\u003eCheck I haven't already reacted to your song using the search above.\u003c\/p\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"ea__note\"\u003e\n\u003cb\u003eUnder 10 minutes\u003c\/b\u003e\u003cp\u003eTracks need to be under 10 minutes long.\u003c\/p\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"ea__note\"\u003e\n\u003cb\u003eRequesting a few?\u003c\/b\u003e\u003cp\u003eAdjust the quantity and add each track. I'll react to them all live.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cp class=\"ea__close\"\u003eDrop your song in below. Let's hear it live. 🎶\u003c\/p\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  const form    = document.getElementById('ytSearchForm');\n  const input   = document.getElementById('ytSearchInput');\n  const results = document.getElementById('ytResults');\n  const closeBtn= document.getElementById('closeSearchBtn');\n  const wrapper = document.getElementById('rereSearchSection');\n\n  form.addEventListener('submit', function(e){ e.preventDefault(); searchYT(); });\n  closeBtn.addEventListener('click', closeSearch);\n\n  async function searchYT(){\n    const apiKey = \"AIzaSyB_4i7-bPYO9JBR2Em9_-VWSzdZ_IxBL-A\";\n    const q = input.value.trim();\n    input.blur();\n    results.innerHTML = \"\u003cp style='color:#fff;'\u003eSearching...\u003c\/p\u003e\";\n    if(!q){\n      results.innerHTML = \"\u003cp style='color:#fff;'\u003ePlease enter a search term.\u003c\/p\u003e\";\n      wrapper.classList.add('has-results'); closeBtn.classList.add('show'); return;\n    }\n    try{\n      const res = await fetch(`https:\/\/www.googleapis.com\/youtube\/v3\/search?part=snippet\u0026maxResults=6\u0026q=${encodeURIComponent(q)}\u0026channelId=UC7ZX8QWnbiaT30M7LMcWc6g\u0026key=${apiKey}`);\n      const data = await res.json();\n      const items = (data.items||[]).filter(i =\u003e i.id \u0026\u0026 i.id.kind === \"youtube#video\");\n      if(!items.length){\n        results.innerHTML = \"\u003cp style='color:#fff;'\u003eNo results found. I haven't reacted to this yet 🎉\u003c\/p\u003e\";\n        wrapper.classList.add('has-results'); closeBtn.classList.add('show'); return;\n      }\n      results.innerHTML = items.map(v=\u003e{\n        const t=v.snippet.thumbnails||{};\n        const thumb=(t.maxres\u0026\u0026t.maxres.url)||(t.high\u0026\u0026t.high.url)||(t.medium\u0026\u0026t.medium.url)||(t.default\u0026\u0026t.default.url)||\"\";\n        const title=v.snippet.title||\"Untitled\";\n        const vid=v.id.videoId;\n        return `\u003cdiv class=\"rere-search-result\"\u003e\u003ca href=\"https:\/\/www.youtube.com\/watch?v=${vid}\" target=\"_blank\" style=\"text-decoration:none;width:100%;\"\u003e\u003cimg src=\"${thumb}\" alt=\"Thumbnail for ${title.replace(\/\"\/g,'\u0026quot;')}\" \/\u003e\u003cdiv class=\"rere-search-result-title\"\u003e${title}\u003c\/div\u003e\u003c\/a\u003e\u003c\/div\u003e`;\n      }).join(\"\");\n      wrapper.classList.add('has-results'); closeBtn.classList.add('show');\n    }catch(e){\n      results.innerHTML = \"\u003cp style='color:#fff;'\u003eSomething went wrong. Please try again.\u003c\/p\u003e\";\n      wrapper.classList.add('has-results'); closeBtn.classList.add('show');\n    }\n  }\n  function closeSearch(){\n    results.innerHTML = \"\"; input.value = \"\";\n    closeBtn.classList.remove('show'); wrapper.classList.remove('has-results');\n    const heading = wrapper.querySelector('h2');\n    if (heading) heading.scrollIntoView({behavior:'smooth', block:'start'});\n  }\n  document.addEventListener('keydown', (e)=\u003e{ if(e.key==='Escape') closeSearch(); });\n\u003c\/script\u003e\n\n\u003cstyle\u003e\n  .ea{--gold:#FFD700;--gold-d:#E6B800;--bg:#0A0A0A;--panel:#141414;--line:rgba(255,215,0,.22);--grey:#B8B2A6;--white:#fff;--live:#FF3B30;\n    font-family:'Inter',sans-serif;color:var(--white);max-width:640px;margin:0 auto 30px;-webkit-font-smoothing:antialiased;}\n  .ea *{box-sizing:border-box;}\n\n  .ea__hero{background:radial-gradient(120% 80% at 50% 0%,rgba(255,215,0,.14),transparent 60%),var(--bg);\n    border:2px solid var(--gold);border-radius:16px;padding:44px 30px 36px;text-align:center;margin-bottom:20px;}\n  .ea__livebadge{display:inline-flex;align-items:center;gap:9px;font-family:'Montserrat',sans-serif;font-weight:700;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:#fff;border:1.5px solid var(--live);border-radius:40px;padding:7px 15px;margin-bottom:18px;}\n  .ea__livebadge i{width:9px;height:9px;border-radius:50%;background:var(--live);box-shadow:0 0 8px var(--live);display:inline-block;}\n  .ea__title{font-family:'Montserrat',sans-serif;font-weight:800;font-size:44px;line-height:1.0;text-transform:uppercase;color:var(--white);margin:0 0 18px;letter-spacing:.5px;}\n  .ea__lede{font-size:16px;font-weight:300;line-height:1.7;color:var(--grey);max-width:460px;margin:0 auto 24px;}\n  .ea__pills{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;}\n  .ea__pill{font-size:12.5px;font-weight:500;color:var(--white);background:rgba(255,215,0,.08);border:1px solid var(--line);border-radius:40px;padding:9px 15px;}\n\n  .ea__section{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:36px 30px;margin-bottom:20px;text-align:center;}\n  .ea__kicker{font-family:'Montserrat',sans-serif;font-weight:700;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin:0 0 10px;}\n  .ea__h2{font-family:'Montserrat',sans-serif;font-weight:800;font-size:26px;text-transform:uppercase;color:var(--white);margin:0 0 26px;letter-spacing:.5px;}\n\n  .ea__steps{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}\n  .ea__step{background:#0E0E0E;border:1px solid var(--line);border-radius:14px;padding:26px 18px;text-align:center;}\n  .ea__num{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;\n    background:linear-gradient(135deg,var(--gold),var(--gold-d));color:#0A0A0A;font-family:'Montserrat',sans-serif;font-weight:800;font-size:19px;margin-bottom:14px;}\n  .ea__step b{display:block;font-family:'Montserrat',sans-serif;font-weight:700;font-size:16px;color:var(--white);margin-bottom:8px;}\n  .ea__step p{font-size:13px;font-weight:300;line-height:1.55;color:var(--grey);margin:0;}\n\n  .ea__list{list-style:none;margin:0;padding:0;max-width:440px;margin:0 auto;text-align:left;}\n  .ea__list li{position:relative;padding:14px 0 14px 40px;border-bottom:1px solid rgba(255,215,0,.14);font-size:15.5px;color:var(--white);}\n  .ea__list li:last-child{border-bottom:none;}\n  .ea__list li::before{content:'';position:absolute;left:4px;top:16px;width:20px;height:20px;border-radius:50%;background:rgba(255,215,0,.14);border:1px solid var(--gold);}\n  .ea__list li::after{content:'';position:absolute;left:11px;top:19px;width:5px;height:10px;border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);transform:rotate(42deg);}\n\n  .ea__notes{display:flex;flex-direction:column;gap:12px;text-align:left;max-width:460px;margin:0 auto;}\n  .ea__note{background:#0E0E0E;border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:12px;padding:18px 20px;}\n  .ea__note b{display:block;font-family:'Montserrat',sans-serif;font-weight:700;font-size:15px;color:var(--gold);margin-bottom:5px;}\n  .ea__note p{font-size:14px;font-weight:300;line-height:1.6;color:var(--grey);margin:0;}\n  .ea__close{font-family:'Montserrat',sans-serif;font-weight:600;font-size:17px;color:var(--white);margin:26px 0 0;}\n\n  \/* ===== SEARCH WIDGET (restyled to match) ===== *\/\n  .rere-search-wrapper{position:relative;max-width:640px;margin:0 auto 20px;font-family:'Inter',sans-serif;color:#fff;\n    padding:34px 30px;box-sizing:border-box;background:var(--bg);border:2px solid var(--gold);border-radius:16px;transition:padding-bottom .2s ease;}\n  .rere-search-wrapper.has-results{padding-bottom:82px;}\n  .rere-search-wrapper h2{color:#fff;font-family:'Montserrat',sans-serif;font-size:24px;font-weight:800;text-transform:uppercase;margin:0 0 8px;text-align:center;letter-spacing:.5px;}\n  .rere-search-wrapper p{font-size:14px;margin:0 0 18px;text-align:center;color:var(--grey);}\n  .rere-input-wrap{position:relative;}\n  .rere-search-input{width:100%;padding:15px 14px;font-size:16px;border-radius:10px;border:1px solid var(--gold);background:#111;color:#fff;box-sizing:border-box;}\n  .rere-search-input::placeholder{color:#8a8578;}\n  .rere-search-input:focus{outline:none;border-color:#fff;}\n  .rere-search-btn{margin-top:12px;padding:15px 20px;background:linear-gradient(135deg,var(--gold),var(--gold-d));color:#0A0A0A;border:none;border-radius:40px;cursor:pointer;font-family:'Montserrat',sans-serif;font-weight:700;width:100%;font-size:15px;letter-spacing:1px;text-transform:uppercase;}\n  .rere-inline-submit{display:none;}\n  #ytResults{margin-top:16px;}\n  .rere-search-result{display:flex;align-items:center;margin-bottom:14px;border-bottom:1px solid #2a2a2a;padding-bottom:12px;}\n  .rere-search-result img{margin-right:14px;border-radius:8px;width:38%;max-width:180px;height:auto;}\n  .rere-search-result-title{font-size:14.5px;line-height:1.4;color:#fff;flex:1;}\n  #closeSearchBtn{display:none;position:absolute;left:50%;bottom:18px;transform:translateX(-50%);\n    background:linear-gradient(135deg,var(--gold),var(--gold-d));color:#0A0A0A;border:none;padding:10px 20px;font-size:13px;\n    font-family:'Montserrat',sans-serif;font-weight:700;letter-spacing:1px;text-transform:uppercase;border-radius:999px;cursor:pointer;\n    box-shadow:0 0 10px rgba(255,215,0,.4);transition:transform .15s,box-shadow .15s,opacity .15s;opacity:0;width:60%;max-width:260px;min-width:180px;text-align:center;}\n  #closeSearchBtn.show{display:block;opacity:1;}\n  #closeSearchBtn:hover{transform:translateX(-50%) scale(1.03);box-shadow:0 0 16px rgba(255,215,0,.7);}\n\n  @media (max-width:600px){\n    .ea__title{font-size:34px;}\n    .ea__h2{font-size:22px;}\n    .ea__steps{grid-template-columns:1fr;gap:12px;}\n    .rere-search-input{padding-right:56px;}\n    .rere-inline-submit{display:block;position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:9px 14px;font-size:13px;font-weight:700;border:none;border-radius:999px;cursor:pointer;background:linear-gradient(135deg,var(--gold),var(--gold-d));color:#0A0A0A;}\n    .rere-search-btn{display:none;}\n    .rere-search-result{flex-direction:column;align-items:flex-start;}\n    .rere-search-result img{margin:0 0 10px;width:100%;max-width:none;}\n    #closeSearchBtn{width:70%;}\n  }\n\u003c\/style\u003e","brand":"RND Reacts","offers":[{"title":"Default Title","offer_id":55733025210703,"sku":null,"price":119.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0916\/9213\/8831\/files\/song-request-banner.png?v=1786595351","url":"https:\/\/thereiganshow.com\/products\/live-request","provider":"The Reigan Show","version":"1.0","type":"link"}