{"id":29,"date":"2026-05-06T19:23:25","date_gmt":"2026-05-06T19:23:25","guid":{"rendered":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/"},"modified":"2026-05-11T15:12:10","modified_gmt":"2026-05-11T15:12:10","slug":"cameron-scott-mlb-broadcast-journalism-hpu-alum","status":"publish","type":"post","link":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/","title":{"rendered":"Destination Success | Cameron Scott"},"content":{"rendered":"<article class=\"hpu-video-article\">\n<div class=\"hpu-video-layout\">\n<aside class=\"hpu-video-sidebar\">\n<div class=\"hpu-video-sidebar-inner\">\n<div class=\"hpu-video-cta-container\">\n<div id=\"hpu-video-cta\"><\/div>\n<\/p><\/div>\n<section id=\"hpu-video-transcript\" class=\"hpu-video-transcript\" aria-label=\"Video Transcript\">\n<div class=\"hpu-video-transcript-header\">\n                        <span class=\"hpu-video-transcript-title\">Chapters &amp; Transcript<\/span>\n                    <\/div>\n<div id=\"hpu-video-transcript-content\" class=\"hpu-video-transcript-content\" role=\"region\" aria-label=\"Transcript chapters\">\n<div class=\"hpu-video-transcript-chapter expanded\">\n<div class=\"hpu-video-transcript-chapter-header\" role=\"button\" aria-expanded=\"true\">\n<div class=\"hpu-video-transcript-chapter-header-top\">\n<div class=\"hpu-video-transcript-chapter-number\">1<\/div>\n<h2 class=\"hpu-video-transcript-speaker\">How does High Point University foster student success?<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-text-container\">\n<div class=\"hpu-video-transcript-text-inner\">\n                                    <span class=\"hpu-video-transcript-chapter-time\"><a href=\"https:\/\/www.youtube.com\/watch?v=3tMQMjEauuc&amp;t=0\">0:00<\/a><\/span><\/p>\n<p class=\"hpu-video-transcript-text\">My name is Cameron Scott. I&#039;m from Queens, New York.<\/p>\n<p class=\"hpu-video-transcript-text\">I graduated High Point University in 2017. I majored in broadcast journalism. I currently work for Major League Baseball headquarters in New York city.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-chapter\">\n<div class=\"hpu-video-transcript-chapter-header\" role=\"button\" aria-expanded=\"true\">\n<div class=\"hpu-video-transcript-chapter-header-top\">\n<div class=\"hpu-video-transcript-chapter-number\">2<\/div>\n<h2 class=\"hpu-video-transcript-speaker\">Why do students choose to attend High Point University?<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-text-container\">\n<div class=\"hpu-video-transcript-text-inner\">\n                                    <span class=\"hpu-video-transcript-chapter-time\"><a href=\"https:\/\/www.youtube.com\/watch?v=3tMQMjEauuc&amp;t=22\">0:22<\/a><\/span><\/p>\n<p class=\"hpu-video-transcript-text\">So I came to High Point University through baseball. I was recruited to play baseball here, but one of the biggest things that I realized when I actually stepped foot on campus for my official visit\u2014and something that my coaches in high school had always told me, my parents had always told me\u2014or if you&#039;re going to school and you didn&#039;t have sports, just make sure that it&#039;s a place that you would actually love to be and love to learn.<\/p>\n<p class=\"hpu-video-transcript-text\">If you weren&#039;t playing sports, as soon as I stepped foot on campus, I knew that HPU was the place for me. The caring community, caring professors, the friends that I had met even on my official visit before even enrolling into campus\u2014I really felt at home and I knew that HPU was a place where I could succeed.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-chapter\">\n<div class=\"hpu-video-transcript-chapter-header\" role=\"button\" aria-expanded=\"true\">\n<div class=\"hpu-video-transcript-chapter-header-top\">\n<div class=\"hpu-video-transcript-chapter-number\">3<\/div>\n<h2 class=\"hpu-video-transcript-speaker\">How does High Point University provide student mentorship?<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-text-container\">\n<div class=\"hpu-video-transcript-text-inner\">\n                                    <span class=\"hpu-video-transcript-chapter-time\"><a href=\"https:\/\/www.youtube.com\/watch?v=3tMQMjEauuc&amp;t=58\">0:58<\/a><\/span><\/p>\n<p class=\"hpu-video-transcript-text\">Meeting Dr. Hall, my first day of classes went through the Gauntlet\u2014this is what is offered to you at High Point University, this is how we can help you.<\/p>\n<p class=\"hpu-video-transcript-text\">Dr. Hall really made me feel at home. He was the first person that made me feel at home, along with millions of other people at High Point University.<\/p>\n<p class=\"hpu-video-transcript-text\">I stayed very close with Dr. Hall through freshman year, sophomore year, and especially junior year when it was time to start looking for jobs and start looking for internships.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-chapter\">\n<div class=\"hpu-video-transcript-chapter-header\" role=\"button\" aria-expanded=\"true\">\n<div class=\"hpu-video-transcript-chapter-header-top\">\n<div class=\"hpu-video-transcript-chapter-number\">4<\/div>\n<h2 class=\"hpu-video-transcript-speaker\">How does HPU help students land jobs and internships?<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-text-container\">\n<div class=\"hpu-video-transcript-text-inner\">\n                                    <span class=\"hpu-video-transcript-chapter-time\"><a href=\"https:\/\/www.youtube.com\/watch?v=3tMQMjEauuc&amp;t=83\">1:23<\/a><\/span><\/p>\n<p class=\"hpu-video-transcript-text\">At that time I had realized that being a professional baseball player wasn&#039;t going to be the plan for my life, but I always wanted to keep the game in my life.<\/p>\n<p class=\"hpu-video-transcript-text\">That&#039;s when Dr. Hall connected me to someone at Major League Baseball, and from there I just haven&#039;t looked back. The door opened, and High Point University was a huge part of that.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-chapter\">\n<div class=\"hpu-video-transcript-chapter-header\" role=\"button\" aria-expanded=\"true\">\n<div class=\"hpu-video-transcript-chapter-header-top\">\n<div class=\"hpu-video-transcript-chapter-number\">5<\/div>\n<h2 class=\"hpu-video-transcript-speaker\">What does it mean to choose to be extraordinary?<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"hpu-video-transcript-text-container\">\n<div class=\"hpu-video-transcript-text-inner\">\n                                    <span class=\"hpu-video-transcript-chapter-time\"><a href=\"https:\/\/www.youtube.com\/watch?v=3tMQMjEauuc&amp;t=98\">1:38<\/a><\/span><\/p>\n<p class=\"hpu-video-transcript-text\">Choosing to be extraordinary to me means showing up for not only yourself but for others. Showing up for yourself, taking care of yourself, developing yourself, always having a quest for knowledge, passion, and faith, and doing the same for others.<\/p>\n<p class=\"hpu-video-transcript-text\">I think one of the biggest things and why we&#039;re put on this Earth is to help others. Truly, showing up for yourself so that you have the capacity to show up for others.<\/p>\n<p class=\"hpu-video-transcript-text\">Thank you.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section><\/div>\n<\/aside>\n<div class=\"hpu-video-main\">\n<section class=\"hpu-video-section\" aria-label=\"Video Player\">\n<div class=\"hpu-video-section-iframe\">\n                    <iframe loading=\"lazy\" title=\"Destination Success | Cameron Scott\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/3tMQMjEauuc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n                <\/div>\n<\/section>\n<div class=\"hpu-video-body\">\n<div class=\"hpu-video-tabs\">\n                    <button class=\"hpu-video-tab-btn active\" data-tab=\"description\">Description<\/button><br \/>\n                    <button class=\"hpu-video-tab-btn\" data-tab=\"related\">Related Videos<\/button>\n                <\/div>\n<div class=\"hpu-video-tab-content active\" id=\"tab-description\">\n<section class=\"hpu-video-summary\" aria-label=\"Video Description\">\n<p>Cameron Scott, a 2017 High Point University graduate in broadcast journalism, shares how HPU&#039;s caring community and exceptional mentorship\u2014particularly from Dr. Hall\u2014shaped his career trajectory and personal growth. Originally recruited for baseball, Cameron discovered that HPU&#039;s supportive environment offered far greater value than athletics alone, ultimately leading to a successful transition into a career with Major League Baseball. He reflects on how choosing to be extraordinary means showing up for yourself and others through continuous personal development and service.<\/p>\n<div class=\"hpu-video-tags\"><\/div>\n<\/section><\/div>\n<div class=\"hpu-video-tab-content\" id=\"tab-related\">\n<section class=\"hpu-related-videos\" aria-label=\"Related Videos\">\n<div class=\"hpu-related-videos-slider\"><\/div>\n<p class=\"hpu-related-videos-none\">No related videos found.<\/p>\n<\/section><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<script>\r\n  \/\/ \u2500\u2500 Initialize Transcript Headings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  const firstChapterHeading = document.querySelector('.hpu-video-transcript-chapter:first-child .hpu-video-transcript-speaker');\r\n  if (firstChapterHeading) {\r\n    firstChapterHeading.innerHTML = 'Introduction';\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Transcript Accordion Logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  const chapters = document.querySelectorAll(\".hpu-video-transcript-chapter\");\r\n  \r\n  chapters.forEach(chapter => {\r\n    const header = chapter.querySelector(\".hpu-video-transcript-chapter-header\");\r\n    const content = chapter.querySelector(\".hpu-video-transcript-text-container\");\r\n    \r\n    \/\/ Initialize height for expanded ones\r\n    if (chapter.classList.contains(\"expanded\")) {\r\n      content.style.height = \"auto\";\r\n    }\r\n\r\n    header.addEventListener(\"click\", () => {\r\n      const isExpanded = chapter.classList.contains(\"expanded\");\r\n      \r\n      if (!isExpanded) {\r\n        \/\/ Expand\r\n        chapter.classList.add(\"expanded\");\r\n        header.setAttribute(\"aria-expanded\", \"true\");\r\n        content.style.height = content.scrollHeight + \"px\";\r\n        \r\n        content.addEventListener(\r\n          \"transitionend\",\r\n          function handler() {\r\n            content.style.height = \"auto\";\r\n            content.removeEventListener(\"transitionend\", handler);\r\n          },\r\n          { once: true }\r\n        );\r\n      } else {\r\n        \/\/ Collapse\r\n        content.style.height = content.scrollHeight + \"px\";\r\n        content.offsetHeight; \/\/ force reflow\r\n        content.style.height = \"0\";\r\n        chapter.classList.remove(\"expanded\");\r\n        header.setAttribute(\"aria-expanded\", \"false\");\r\n      }\r\n    });\r\n  });\r\n\r\n  \/\/ \u2500\u2500 Tab Logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  const tabBtns = document.querySelectorAll(\".hpu-video-tab-btn\");\r\n  const tabContents = document.querySelectorAll(\".hpu-video-tab-content\");\r\n\r\n  tabBtns.forEach(btn => {\r\n    btn.addEventListener(\"click\", () => {\r\n      const targetId = \"tab-\" + btn.getAttribute(\"data-tab\");\r\n      \r\n      tabBtns.forEach(b => b.classList.remove(\"active\"));\r\n      tabContents.forEach(c => c.classList.remove(\"active\"));\r\n      \r\n      btn.classList.add(\"active\");\r\n      const targetContent = document.getElementById(targetId);\r\n      if (targetContent) targetContent.classList.add(\"active\");\r\n    });\r\n  });\r\n\r\n  \/\/ \u2500\u2500 Fancybox Modal Logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  document\r\n    .querySelectorAll(\".hpu-video-transcript-text-inner\")\r\n    .forEach(function (inner) {\r\n      inner.addEventListener(\"click\", function (e) {\r\n        var link = inner.querySelector(\".hpu-video-transcript-chapter-time a\");\r\n        if (!link) return;\r\n        e.stopPropagation(); \/\/ prevent accordion toggle when clicking timestamp\r\n        e.preventDefault();\r\n        var url = new URL(link.href);\r\n        var t = parseInt(url.searchParams.get(\"t\"), 10);\r\n        if (isNaN(t)) t = 0;\r\n        var videoWrapper = document.querySelector(\r\n          \".hpu-video-section-iframe .video-wrapper\",\r\n        );\r\n        var baseUrl = videoWrapper\r\n          ? videoWrapper.getAttribute(\"href\")\r\n          : \"https:\/\/www.youtube.com\/embed\/1qN81LI7qok?feature=oembed\";\r\n        var embedBase = baseUrl.split(\"?\")[0];\r\n\r\n        \/\/ Dynamically fit the modal to the viewport at 16:9, no black bars\r\n        var pad = 40; \/\/ breathing room around the modal\r\n        var vw = window.innerWidth - pad * 2;\r\n        var vh = window.innerHeight - pad * 2;\r\n        var modalWidth, modalHeight;\r\n\r\n        if (vw \/ vh >= 16 \/ 9) {\r\n          \/\/ Viewport is wider than 16:9 \u2014 height is the constraint\r\n          modalHeight = vh;\r\n          modalWidth = Math.round((vh * 16) \/ 9);\r\n        } else {\r\n          \/\/ Viewport is taller than 16:9 \u2014 width is the constraint\r\n          modalWidth = vw;\r\n          modalHeight = Math.round((vw * 9) \/ 16);\r\n        }\r\n\r\n        $.fancybox.open([\r\n          {\r\n            src: embedBase + \"?autoplay=1&start=\" + t,\r\n            type: \"iframe\",\r\n            width: modalWidth,\r\n            height: modalHeight,\r\n          },\r\n        ]);\r\n      });\r\n    });\r\n\r\n  \/\/ \u2500\u2500 CTA Logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  const ctaLibrary = {\r\n    apply: {\r\n      title: \"Apply to High Point\",\r\n      text: \"The application takes about 20 minutes. Early Decision closes November 1.\",\r\n      buttons: [\r\n        {\r\n          text: \"Start Your Application\",\r\n          link: \"https:\/\/www.highpoint.edu\/admissions\/apply\/\",\r\n        },\r\n      ],\r\n    },\r\n    visit: {\r\n      title: \"See It for Yourself\",\r\n      text: \"Daily visits and fall open houses. Sit in on a class, see a residence hall and eat in the dining halls.\",\r\n      buttons: [\r\n        {\r\n          text: \"Book a Visit\",\r\n          link: \"https:\/\/www.highpoint.edu\/admissions\/experience-high-point-university\/\",\r\n        },\r\n      ],\r\n    },\r\n    request: {\r\n      title: \"Get Program Details\",\r\n      text: \"Tell us what you want to study, and the admissions counselor for your region will follow up.\",\r\n      buttons: [\r\n        {\r\n          text: \"Request Info\",\r\n          link: \"https:\/\/discover.highpoint.edu\/register\/inquiry\",\r\n        },\r\n      ],\r\n    },\r\n    deposit: {\r\n      title: \"Make Your Deposit\",\r\n      text: \"Ready to join the #HPUFamily? Secure your place in the incoming class and unlock access to the nation's best dorms today. Your housing preference is based on your deposit date!\",\r\n      buttons: [\r\n        {\r\n          text: \"Submit Your Deposit\",\r\n          link: \"\/admissions\/landing-deposit\",\r\n        },\r\n      ],\r\n    },\r\n  };\r\n\r\n  const urlParams = new URLSearchParams(window.location.search);\r\n\r\n  const ctaElement = document.getElementById(\"hpu-video-cta\");\r\n  const ctaParam = urlParams.get(\"cta\");\r\n\r\n  \/\/ \u2500\u2500 Start time: ?t=SECONDS starts this page's video there (ads use it to open on the right moment).\r\n  \/\/ Destination Success videos open with a ~10 second logo intro, so they start past it unless ?t says otherwise.\r\n  const hpuStartAt = (function () { var v = parseInt(urlParams.get(\"t\"), 10); return v > 0 && v < 36000 ? v : 0; })();\r\n  const HPU_DS_SKIP = 10;\r\n  function hpuIsDS(title) { return \/^\\s*Destination Success\\b\/i.test(title || \"\"); }\r\n  function hpuPageTitle() { var h = document.querySelector(\"h1\"); return (h && h.textContent) || document.title || \"\"; }\r\n  const hpuMainStart = hpuStartAt || (hpuIsDS(hpuPageTitle()) ? HPU_DS_SKIP : 0);\r\n\r\n  if (ctaElement) {\r\n    const ctaData = ctaLibrary[ctaParam] || ctaLibrary[\"visit\"];\r\n\r\n    \/\/ Title\r\n    const ctaTitleEl = document.createElement(\"h2\");\r\n    ctaTitleEl.textContent = ctaData.title;\r\n    ctaElement.appendChild(ctaTitleEl);\r\n\r\n    \/\/ Text\r\n    const ctaTextEl = document.createElement(\"p\");\r\n    ctaTextEl.textContent = ctaData.text;\r\n    ctaElement.appendChild(ctaTextEl);\r\n\r\n    \/\/ Button\r\n    if (ctaData.buttons && ctaData.buttons.length > 0) {\r\n      ctaData.buttons.forEach(function (button) {\r\n        const ctaButtonEl = document.createElement(\"a\");\r\n        const ctaClass = button?.class ?? \"hpu-btn-purple-outline\";\r\n        ctaButtonEl.textContent = button.text;\r\n        ctaButtonEl.setAttribute(\"href\", button.link);\r\n        ctaButtonEl.setAttribute(\"class\", ctaClass);\r\n        ctaButtonEl.addEventListener(\"click\", function () { if (ctaParam === \"apply\") { try { sessionStorage.setItem(\"hpu_apply_clicked\", \"1\"); } catch (e) {} } });\r\n        ctaElement.appendChild(ctaButtonEl);\r\n      });\r\n    }\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Captions on by default: add cc_load_policy to the main YouTube embed \u2500\u2500\r\n  (function () {\r\n    \/\/ The theme lazy-loads the embed: the URL can sit in data-src until the player loads, so update both.\r\n    var f = document.querySelector('.hpu-video-section-iframe iframe[src*=\"youtube\"], .hpu-video-section-iframe iframe[data-src*=\"youtube\"]');\r\n    if (!f) return;\r\n    ['src', 'data-src'].forEach(function (attr) {\r\n      var v = f.getAttribute(attr);\r\n      if (!v || v.indexOf('youtube') < 0) return;\r\n      try {\r\n        var u = new URL(v, location.href);\r\n        u.searchParams.set('cc_load_policy', '1');\r\n        u.searchParams.set('cc_lang_pref', 'en');\r\n        if (hpuMainStart) u.searchParams.set('start', String(hpuMainStart));\r\n        var nv = u.toString();\r\n        if (nv !== v) f.setAttribute(attr, nv);\r\n      } catch (e) {}\r\n    });\r\n  })();\r\n\r\n  \/\/ \u2500\u2500 Mobile CTA placement: move the CTA directly under the video at <=1365px \u2500\u2500\r\n  (function () {\r\n    var cta = document.querySelector('.hpu-video-cta-container');\r\n    var home = document.querySelector('.hpu-video-sidebar-inner');\r\n    var video = document.querySelector('.hpu-video-main > .hpu-video-section');\r\n    if (!cta || !home || !video) return;\r\n    var mq = window.matchMedia('(max-width: 1365px)');\r\n    function place() {\r\n      if (mq.matches) { if (video.nextElementSibling !== cta) video.insertAdjacentElement('afterend', cta); }\r\n      else if (cta.parentElement !== home) { home.insertBefore(cta, home.firstChild); }\r\n    }\r\n    place();\r\n    if (mq.addEventListener) mq.addEventListener('change', place); else if (mq.addListener) mq.addListener(place);\r\n  })();\r\n\r\n  \/\/ \u2500\u2500 Mobile video modal: edge-to-edge player, larger captions, CTA, swipe feed of related videos \u2500\u2500\r\n  (function () {\r\n    var PHONE = window.matchMedia('(max-width: 900px), (max-height: 500px) and (pointer: coarse)');\r\n    \/\/ Desktop (wide screen, mouse or trackpad): the viewer opens here too, with up\/down arrows, keyboard and wheel.\r\n    var DESK = window.matchMedia('(min-width: 1024px) and (hover: hover) and (pointer: fine)');\r\n    function useModal() { return PHONE.matches || DESK.matches; }\r\n    var LAND = window.matchMedia('(orientation: landscape)');\r\n    var CALM = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n    var box = document.querySelector('.hpu-video-section-iframe');\r\n    if (!box) return;\r\n    \/\/ TikTok test mode (?vmfeed=tiktok, remembered for the browser tab) runs the \"HPU Video TikTok Feed\" snippet instead of this viewer.\r\n    var hpuFeed = (location.search.match(\/[?&]vmfeed=(tiktok|youtube)\\b\/) || [])[1]; try { if (!hpuFeed) hpuFeed = sessionStorage.getItem('hpu_vm_feed'); } catch (e) {}\r\n    if (hpuFeed === 'tiktok') return;\r\n    var css = document.createElement('style');\r\n    css.textContent = [\r\n      '.hpu-vm{--hpu-vm-font:Poppins,system-ui,-apple-system,sans-serif;position:fixed;inset:0;z-index:2147483000;background:#0d0a14;opacity:0;transition:opacity .2s ease;overscroll-behavior:contain}',\r\n      '.hpu-vm.is-open{opacity:1}',\r\n      '.hpu-vm.is-standby{visibility:hidden;pointer-events:none}',\r\n      '.hpu-vm-feed{position:relative;height:100%;overflow-x:hidden;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}',\r\n      '.hpu-vm-feed::-webkit-scrollbar{display:none}',\r\n      '.hpu-vm-slide{position:relative;height:100%;box-sizing:border-box;scroll-snap-align:start;scroll-snap-stop:always;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}',\r\n      '.hpu-vm-frame{position:relative;width:100vw;aspect-ratio:16\/9;background:#000 center\/cover no-repeat;flex:none}',\r\n      '.hpu-vm-glow{position:absolute;inset:-9% -2%;z-index:-1;pointer-events:none;filter:blur(20px) saturate(1.2);opacity:.22;transform:translateZ(0)}',\r\n      '.hpu-vm-glow i{position:absolute;inset:0;background:center\/cover no-repeat;transition:opacity 2.4s ease;will-change:opacity}',\r\n      '.hpu-vm-glow i.off{opacity:0}',\r\n      '.hpu-vm-stage{position:absolute;left:0;top:0;z-index:2;background:#000;opacity:0;pointer-events:none;transition:opacity .12s ease}',\r\n      '.hpu-vm-stage.is-live{opacity:1;pointer-events:auto}',\r\n      '.hpu-vm-stage.no-fade{transition:none}',\r\n      '.hpu-vm-stage.is-preview{opacity:1}',\r\n      '.hpu-vm-stage > div,.hpu-vm-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0}',\r\n      '.hpu-vm-close{position:absolute;top:calc(env(safe-area-inset-top,0px) + 10px);right:calc(env(safe-area-inset-right,0px) + 10px);width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font:400 26px\/44px system-ui,sans-serif;cursor:pointer;z-index:6;touch-action:manipulation}',\r\n      '.hpu-vm-close::before{content:\"\";position:absolute;inset:-10px}',\r\n      '.hpu-vm-cta{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;gap:12px;padding:0 24px;text-align:center;transition:opacity .45s ease,transform .45s ease}',\r\n      '.hpu-vm-cta p{margin:0;color:#fff;font:500 18px\/1.35 var(--hpu-vm-font);letter-spacing:0;text-shadow:0 1px 14px rgba(0,0,0,.55)}',\r\n      '.hpu-vm-cta a{display:inline-block;padding:12px 24px;border:2px solid #fff;border-radius:5px;background:#fff;color:#330072;font:500 15px\/18px var(--hpu-vm-font);letter-spacing:.01em;text-decoration:none}',\r\n      '.hpu-vm.cta-hidden .hpu-vm-cta,.hpu-vm-slide:not(.is-active) .hpu-vm-cta{opacity:0;transform:translateY(10px);pointer-events:none}',\r\n      '.hpu-vm-sound{display:none;position:absolute;left:12px;top:12px;z-index:2;padding:8px 14px;border-radius:999px;border:0;background:rgba(0,0,0,.65);color:#fff;font:500 13px\/1 var(--hpu-vm-font)}',\r\n      '.hpu-vm.needs-sound .hpu-vm-stage.is-live .hpu-vm-sound{display:block}',\r\n      '.hpu-vm-more{position:absolute;left:50%;bottom:max(4px, calc(env(safe-area-inset-bottom,0px) - 6px));transform:translateX(-50%);z-index:4;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 20px;border:0;background:none;color:rgba(255,255,255,.92);font:500 11px\/1 var(--hpu-vm-font);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:opacity .35s ease;-webkit-tap-highlight-color:transparent;pointer-events:none}',\r\n      '.hpu-vm-more svg{width:26px;height:26px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.55));animation:hpuVmNudge 2.4s ease-in-out infinite}',\r\n      '@keyframes hpuVmNudge{0%,100%{transform:translateY(0);opacity:.7}50%{transform:translateY(-6px);opacity:1}}',\r\n      '.hpu-vm.is-swiping .hpu-vm-more,.hpu-vm.at-end .hpu-vm-more{opacity:0;pointer-events:none}',\r\n      '@media (prefers-reduced-motion: reduce){.hpu-vm-more svg{animation:none}.hpu-vm-cta{transition:opacity .2s ease}}',\r\n      '@media (orientation: landscape){',\r\n      ' .hpu-vm-slide{padding:0;gap:0}',\r\n      ' .hpu-vm-frame{width:min(100vw,calc(100dvh * 16 \/ 9));height:auto}',\r\n      ' .hpu-vm-cta{position:absolute;right:calc(env(safe-area-inset-right,0px) + 14px);bottom:14px;padding:0;flex-direction:row;gap:0}',\r\n      ' .hpu-vm-cta p{display:none}',\r\n      ' .hpu-vm-cta a{padding:9px 18px;font-size:13px;line-height:16px;box-shadow:0 4px 18px rgba(0,0,0,.4)}',\r\n      ' .hpu-vm-close{background:rgba(0,0,0,.5)}',\r\n      ' .hpu-vm-more{display:none}',\r\n      ' .hpu-vm-glow{inset:-2% -4%}',\r\n      '}',\r\n      '.hpu-vm-close:hover,.hpu-vm-nav button:hover:not(:disabled){background:rgba(255,255,255,.26)}',\r\n      '.hpu-vm-close:focus-visible,.hpu-vm-nav button:focus-visible{outline:2px solid #fff;outline-offset:2px}',\r\n      '.hpu-vm-nav{display:none;position:absolute;right:calc(env(safe-area-inset-right,0px) + 10px);top:50%;transform:translateY(-50%);z-index:6;flex-direction:column;gap:12px}',\r\n      '.hpu-vm-nav button{position:relative;width:44px;height:44px;border-radius:50%;border:0;padding:0;background:rgba(0,0,0,.5);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,opacity .15s ease}',\r\n      '.hpu-vm-nav svg{width:22px;height:22px}',\r\n      '.hpu-vm-nav button:disabled{opacity:.35;cursor:default}',\r\n      '@media (min-width:1024px) and (hover:hover) and (pointer:fine){',\r\n      ' .hpu-vm-nav{display:flex}',\r\n      ' .hpu-vm-more{display:none}',\r\n      ' .hpu-vm-close{background:rgba(0,0,0,.5)}',\r\n      ' .hpu-vm-frame{width:min(calc(100vw - 150px),calc((100dvh - 48px) * 16 \/ 9))}',\r\n      '}',\r\n      '.hpu-vm-slide.is-rfi{padding:calc(env(safe-area-inset-top,0px) + 64px) 16px calc(env(safe-area-inset-bottom,0px) + 40px)}',\r\n      '.hpu-vm-rfi{position:relative;z-index:3;box-sizing:border-box;width:100%;max-width:460px;max-height:100%;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:#fff;color:#1c1c1c;border-radius:10px;padding:26px 22px 18px;font:400 15px\/1.45 var(--hpu-vm-font);text-align:left}',\r\n      '.hpu-vm-rfi h2{margin:0 0 8px;color:#330072;font:600 22px\/1.25 var(--hpu-vm-font);text-wrap:balance}',\r\n      '.hpu-vm-rfi > p{margin:0 0 16px;color:#444;font-size:15px;text-wrap:balance}',\r\n      '.hpu-vm-rfi a{color:#330072}',\r\n      '.hpu-vm-rfi .form_page{display:flex;flex-direction:column}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:first\"]{order:-3}.hpu-vm-rfi .form_question[data-export=\"sys:last\"]{order:-2}.hpu-vm-rfi .form_question[data-export=\"sys:email\"]{order:-1}',\r\n      '.hpu-vm-rfi .form_question[data-hpu-step=\"0\"],.hpu-vm-rfi .form_question:not([data-hpu-step]){display:none !important}',\r\n      '.hpu-vm-rfi[data-step=\"1\"] .form_question:not([data-hpu-step=\"1\"]),.hpu-vm-rfi[data-step=\"2\"] .form_question:not([data-hpu-step=\"2\"]),.hpu-vm-rfi[data-step=\"3\"] .form_question:not([data-hpu-step=\"3\"]),.hpu-vm-rfi[data-step=\"4\"] .form_question:not([data-hpu-step=\"4\"]),.hpu-vm-rfi[data-step=\"5\"] .form_question:not([data-hpu-step=\"5\"]),.hpu-vm-rfi[data-step=\"6\"] .form_question:not([data-hpu-step=\"6\"]),.hpu-vm-rfi[data-step=\"7\"] .form_question:not([data-hpu-step=\"7\"]){display:none !important}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:birthdate\"]{order:1}.hpu-vm-rfi .form_question[data-export=\"sys:sex\"]{order:2}.hpu-vm-rfi .form_question[data-export=\"sys:preferred\"]{order:3}.hpu-vm-rfi .form_question[data-export=\"sys:middle\"]{order:4}.hpu-vm-rfi .form_question[data-export=\"sys:suffix\"]{order:5}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:birthdate\"] .form_responses{display:flex;gap:8px}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:address\"] fieldset > .form_label,.hpu-vm-rfi .form_question[data-export=\"sys:address\"] legend{display:none}',\r\n      '.hpu-vm-rfi .form_action{display:flex !important;align-items:center;gap:12px}.hpu-vm-rfi .form_action .hpu-vm-rfi-back{order:-1}',\r\n      '.hpu-vm-rfi .form_question[id*=\"fea9b7ff\"] .form_label{font-size:12px;line-height:1.45;color:#666}.hpu-vm-rfi .form_question[id*=\"fea9b7ff\"] strong{font-weight:400}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:field:ug_preprofessional\"] .form_responses{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:birthdate\"] select{width:auto !important;flex:1 1 0;min-width:0}',\r\n      '.hpu-vm-rfi:not(.is-last) .form_action{display:none !important}',\r\n      '.hpu-vm-rfi > .hpu-vm-rfi-count{margin:0 0 8px;color:#666;font:500 12px\/1 var(--hpu-vm-font);letter-spacing:.08em;text-transform:uppercase}',\r\n      '.hpu-vm-rfi-bar{height:4px;border-radius:2px;background:#e6e1ee;margin:0 0 16px;overflow:hidden}',\r\n      '.hpu-vm-rfi-bar i{display:block;height:100%;width:0;background:#330072;transition:width .3s ease}',\r\n      '.hpu-vm-rfi-nav{display:flex;align-items:center;gap:12px;margin-top:4px}',\r\n      '.hpu-vm-rfi-back{margin-top:4px;padding:12px 22px;border:2px solid #330072;border-radius:5px;background:#fff;color:#330072;font:600 15px\/18px var(--hpu-vm-font);cursor:pointer;transition:background-color .2s}',\r\n      '.hpu-vm-rfi-back:hover{background:#f3eff8}',\r\n      '.hpu-vm-rfi[data-step=\"1\"] .hpu-vm-rfi-back,.hpu-vm-rfi.is-last .hpu-vm-rfi-go{display:none}',\r\n      '.hpu-vm-rfi .form_question{margin:0 0 12px !important;float:none !important;width:auto !important}',\r\n      '.hpu-vm-rfi input[type=text],.hpu-vm-rfi input[type=email],.hpu-vm-rfi input[type=tel],.hpu-vm-rfi select,.hpu-vm-rfi textarea{width:100% !important;max-width:100% !important;box-sizing:border-box;height:50px;margin:0 !important;padding:5px 20px;border:1px solid #9b9b9b !important;border-radius:5px !important;background-color:#fff;color:#000;font-family:var(--hpu-vm-font) !important;font-size:16px !important;font-weight:400;line-height:1.25;box-shadow:none;outline:none}',\r\n      '.hpu-vm-rfi textarea{height:auto;min-height:84px;padding:12px 20px;resize:vertical}',\r\n      '.hpu-vm-rfi select{-webkit-appearance:none;appearance:none;padding-right:44px;color:#45454a;background-color:#fff;background-image:linear-gradient(45deg,transparent 50%,#45454a 50%),linear-gradient(135deg,#45454a 50%,transparent 50%);background-position:calc(100% - 25px) 50%,calc(100% - 20px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:birthdate\"] select{padding:5px 30px 5px 14px;background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%}',\r\n      '.hpu-vm-rfi input:focus,.hpu-vm-rfi select:focus,.hpu-vm-rfi textarea:focus{border-color:#330072 !important;box-shadow:0 0 0 3px rgba(51,0,114,.15)}',\r\n      '.hpu-vm-rfi input::placeholder{color:#9b9b9b}',\r\n      '.hpu-vm-rfi .form_label{display:block;margin:0 0 6px;color:#45454a;font:400 16px\/1.3 var(--hpu-vm-font)}',\r\n      '.hpu-vm-rfi .form_question{margin:0 0 16px !important}',\r\n      '.hpu-vm-rfi .form_question[data-export=\"sys:address\"] .form_responses{margin-bottom:12px}',\r\n      '.hpu-vm-rfi .form_response{display:flex;align-items:center;gap:8px;margin:2px 0}.hpu-vm-rfi .form_response label{color:#45454a;font:400 14px\/1.3 var(--hpu-vm-font)}',\r\n      '.hpu-vm-rfi .hpu-req::after{content:\"*\";margin-left:3px;color:#c8102e;font-weight:600}.hpu-vm-rfi-legend b{color:#c8102e;font-weight:600}',\r\n      '.hpu-vm-rfi > .hpu-vm-rfi-legend{margin:-6px 0 14px;color:#666;font-size:13px}',\r\n      '.hpu-vm-rfi-go,.hpu-vm-rfi .form_button_submit{display:inline-block;margin-top:4px;padding:12px 28px;border:2px solid #330072;border-radius:5px;background:#330072;color:#fff;font:600 15px\/18px var(--hpu-vm-font);cursor:pointer;transition:background-color .2s,border-color .2s}',\r\n      '.hpu-vm-rfi-go:hover,.hpu-vm-rfi .form_button_submit:hover{background:#22004d;border-color:#22004d}',\r\n      '.hpu-vm-rfi-skip{display:block;margin:14px auto 0;padding:8px 12px;border:0;background:none;color:#555;font:500 13px\/1 var(--hpu-vm-font);text-decoration:underline;cursor:pointer}',\r\n      '.hpu-vm.on-rfi .hpu-vm-sound{display:none !important}'\r\n    ].join('');\r\n    document.head.appendChild(css);\r\n\r\n    function ytId(u) {\r\n      var m = (u || '').match(\/(?:embed\\\/|youtu\\.be\\\/|[?&]v=)([A-Za-z0-9_-]{11})\/);\r\n      return m ? m[1] : null;\r\n    }\r\n    function mainId() {\r\n      var el = box.querySelector('[href*=\"youtube\"], iframe[src*=\"youtube\"], iframe[data-src*=\"youtube\"]');\r\n      return el ? ytId(el.getAttribute('href') || el.getAttribute('src') || el.getAttribute('data-src')) : null;\r\n    }\r\n    var cta = (typeof ctaLibrary !== 'undefined' && (ctaLibrary[ctaParam] || ctaLibrary.visit)) || null;\r\n    var hasCta = !!(cta && cta.buttons && cta.buttons[0]);\r\n\r\n    var ytReady = null;\r\n    function loadYT() {\r\n      if (ytReady) return ytReady;\r\n      ytReady = new Promise(function (res) {\r\n        if (window.YT && window.YT.Player) return res();\r\n        if (window.YT && window.YT.ready) return window.YT.ready(res);\r\n        var prev = window.onYouTubeIframeAPIReady;\r\n        window.onYouTubeIframeAPIReady = function () { if (prev) try { prev(); } catch (e) {} res(); };\r\n        var s = document.createElement('script'); s.src = 'https:\/\/www.youtube.com\/iframe_api'; document.head.appendChild(s);\r\n      });\r\n      return ytReady;\r\n    }\r\n    if (PHONE.matches) loadYT();\r\n\r\n    var modal = null, feed = null;\r\n    var items = [], slides = [], idx = 0, swiping = false;\r\n    var SKIP = 0.8; \/\/ our videos open with a fade from black: start every feed video just past it\r\n    \/\/ Where a video starts: the page's own video honors ?t, and Destination Success videos skip their logo intro.\r\n    function startFor(it, isMain) { if (isMain && hpuMainStart) return hpuMainStart; return it && hpuIsDS(it.title) ? HPU_DS_SKIP : SKIP; }\r\n    var standby = false; \/\/ viewer built ahead of time, hidden, with the page's video already buffering\r\n    var wantAudio = true; \/\/ the viewer's sound choice, remembered across videos until the viewer is closed\r\n    var decks = [], cur = null; \/\/ two players: one on screen, one quietly preloading the next video\r\n    var hideTimer = null, settleTimer = null, ctaTimer = null, soundTimer = null, revealTimer = null, preloadTimer = null;\r\n\r\n    \/\/ iPhone drops the click when a tap lands while the feed is still gliding after a swipe (the tap just stops the\r\n    \/\/ scroll). Buttons in the viewer act on the touch itself, so they work every time.\r\n    function fastTap(el, fn) {\r\n      var start = null;\r\n      el.addEventListener('touchstart', function (e) { var t = e.touches[0]; start = [t.clientX, t.clientY]; }, { passive: true });\r\n      el.addEventListener('touchend', function (e) {\r\n        var t = e.changedTouches[0], ok = start && Math.abs(t.clientX - start[0]) < 24 && Math.abs(t.clientY - start[1]) < 24;\r\n        start = null;\r\n        if (ok) { e.preventDefault(); fn(e); }\r\n      });\r\n      el.addEventListener('click', function (e) { fn(e); });\r\n    }\r\n    function current() { return (items[idx] && items[idx].id) || mainId(); }\r\n    function onCard() { return !!(items[idx] && items[idx].rfi); }\r\n    function track(name, extra) {\r\n      try { (window.dataLayer = window.dataLayer || []).push(Object.assign({ event: name, video_id: current(), cta_type: ctaParam || 'visit' }, extra || {})); } catch (e) {}\r\n    }\r\n    function capSize() { return LAND.matches ? 1 : 2; }\r\n    function applyCaptions(d) {\r\n      d = d || cur;\r\n      if (!d || !d.player || !d.player.setOption) return;\r\n      try { d.player.loadModule('captions'); d.player.setOption('captions', 'track', { languageCode: 'en' }); d.player.setOption('captions', 'fontSize', capSize()); } catch (e) {}\r\n    }\r\n\r\n    \/\/ Playlist: this page's video first, then an endless random run through the whole \/watch library.\r\n    function feedItems() {\r\n      var first = mainId(); if (!first) return [];\r\n      return [{ id: first, title: hpuPageTitle() }];\r\n    }\r\n    \/\/ Every video post id, shuffled once per page. Each is used once; after the whole library has been shown it reshuffles.\r\n    var pool = null, poolAll = null, usedPosts = {}, seenVids = {}, fetching = false, emptyRuns = 0;\r\n    function apiBase() {\r\n      var el = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\r\n      return ((window.wpApiSettings && window.wpApiSettings.root) || (el && el.getAttribute('href')) || '\/wp-json\/').replace(\/\\\/$\/, '');\r\n    }\r\n    function thisPostId() { var m = document.body.className.match(\/\\bpostid-(\\d+)\\b\/); return m ? +m[1] : 0; }\r\n    function shuffled(a) { a = a.slice(); for (var i = a.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)), t = a[i]; a[i] = a[j]; a[j] = t; } return a; }\r\n    function getJSON(u) { return fetch(u).then(function (r) { if (!r.ok) throw new Error(r.status); return r.json().then(function (j) { return { j: j, pages: +(r.headers.get('X-WP-TotalPages') || 1) }; }); }); }\r\n    function loadPool() {\r\n      if (pool) return Promise.resolve();\r\n      var base = apiBase(), cached = null;\r\n      try { cached = sessionStorage.getItem('hpu_rv_cat'); } catch (e) {}\r\n      var cat = cached ? Promise.resolve(+cached) : getJSON(base + '\/wp\/v2\/categories?slug=hpu-videos&per_page=1&_fields=id').then(function (x) {\r\n        try { sessionStorage.setItem('hpu_rv_cat', x.j[0].id); } catch (e) {}\r\n        return x.j[0].id;\r\n      });\r\n      return cat.then(function (c) {\r\n        var url = function (p) { return base + '\/wp\/v2\/posts?categories=' + c + '&per_page=100&page=' + p + '&_fields=id'; };\r\n        return getJSON(url(1)).then(function (first) {\r\n          var rest = []; for (var p = 2; p <= first.pages; p++) rest.push(getJSON(url(p)));\r\n          return Promise.all(rest).then(function (more) { return more.reduce(function (all, x) { return all.concat(x.j); }, first.j); });\r\n        });\r\n      }).then(function (list) {\r\n        var me = thisPostId();\r\n        poolAll = list.map(function (p) { return p.id; }).filter(function (id) { return id !== me; });\r\n        pool = shuffled(poolAll);\r\n      });\r\n    }\r\n    function takeIds(k) {\r\n      var out = [];\r\n      while (out.length < k && poolAll && poolAll.length) {\r\n        if (!pool.length) { usedPosts = {}; pool = shuffled(poolAll); seenVids = {}; if (items[0]) seenVids[items[0].id] = 1; } \/\/ whole library shown: start a fresh shuffle\r\n        var id = pool.shift();\r\n        if (!usedPosts[id]) { usedPosts[id] = 1; out.push(id); }\r\n      }\r\n      return out;\r\n    }\r\n    \/\/ Hidden and waiting: keep two queued (light on page load). Open: keep four queued ahead of the one on screen, so the feed never ends.\r\n    function ahead() { return standby ? 2 : 4; }\r\n    function fillFeed() {\r\n      if (!modal || fetching || items.length - idx > ahead()) return;\r\n      fetching = true;\r\n      loadPool().then(function () {\r\n        var ids = takeIds(standby ? 2 : 4); if (!ids.length) return [];\r\n        return getJSON(apiBase() + '\/wp\/v2\/posts?include=' + ids.join(',') + '&per_page=' + ids.length + '&_fields=id,link,title,content').then(function (x) {\r\n          var byId = {}; x.j.forEach(function (p) { byId[p.id] = p; });\r\n          var dec = document.createElement('textarea');\r\n          return ids.map(function (id) {\r\n            var p = byId[id]; if (!p) return null;\r\n            var m = ((p.content && p.content.rendered) || '').match(\/youtube(?:-nocookie)?\\.com\\\/embed\\\/([A-Za-z0-9_-]{11})\/) || JSON.stringify(p.meta || {}).match(\/embed\\\\*\\\/([A-Za-z0-9_-]{11})\/);\r\n            dec.innerHTML = (p.title && p.title.rendered) || '';\r\n            return m ? { id: m[1], title: dec.value, link: p.link } : null;\r\n          }).filter(Boolean);\r\n        });\r\n      }).then(function (list) {\r\n        fetching = false;\r\n        if (!modal) return;\r\n        var added = 0;\r\n        list.forEach(function (v) {\r\n          if (seenVids[v.id]) return;\r\n          seenVids[v.id] = 1; added++;\r\n          items.push(v); var sl = makeSlide(v); slides.push(sl); feed.insertBefore(sl, decks[0] ? decks[0].el : null);\r\n        });\r\n        emptyRuns = added ? 0 : emptyRuns + 1;\r\n        modal.classList.toggle('at-end', idx >= slides.length - 1); navState();\r\n        if (!standby) preloadNext();\r\n        if (items.length - idx <= ahead() && emptyRuns < 3) fillFeed();\r\n      }).catch(function () { fetching = false; });\r\n    }\r\n    \/\/ \u2500\u2500 Inline RFI card \u2500\u2500\r\n    \/\/ After the visitor's second video, the next item in the feed is a request-info card built on the same Slate form\r\n    \/\/ as \/discoverCLT (same fields, endpoint and tagging). Step 1 shows first name, last name and email; Continue opens\r\n    \/\/ the rest of the Slate form inside the card. Slate's own submit, and GTM's existing slate_form_submission tag,\r\n    \/\/ handle the lead exactly as they do on \/discoverCLT.\r\n    var RFI_FORM = 'a9ec0982-d54a-4a59-97d9-7b14c638a048';\r\n    var rfiHost = null, rfiCard = null, rfiIdx = -1, rfiStarted = false, rfiSent = false, leftVids = 0;\r\n    function rfiState() { var s = null; try { s = JSON.parse(sessionStorage.getItem('hpu_rfi') || 'null'); } catch (e) {} return s || { views: 0, since: 0, started: 0, sent: 0 }; }\r\n    function rfiSave(s) { try { sessionStorage.setItem('hpu_rfi', JSON.stringify(s)); } catch (e) {} }\r\n    \/\/ Once per session. Skipped: once more after four more videos. Never for 30 days after a submit, never once the\r\n    \/\/ visitor has started the form, and never for an ?cta=apply visitor who already clicked Apply this session.\r\n    function rfiBlocked() {\r\n      try { var t = +localStorage.getItem('hpu_rfi_sent') || 0; if (t && Date.now() - t < 30 * 864e5) return true; } catch (e) {}\r\n      try { if (ctaParam === 'apply' && sessionStorage.getItem('hpu_apply_clicked')) return true; } catch (e) {}\r\n      var s = rfiState();\r\n      return !!(s.sent || s.started || s.views >= 2 || (s.views === 1 && s.since < 4));\r\n    }\r\n    function rfiTrack(name) { track(name, { feed_position: rfiIdx, video_id: mainId() }); }\r\n    function rfiForm() { if (!rfiHost) { rfiHost = document.createElement('div'); rfiHost.id = 'form_' + RFI_FORM; } return rfiHost; }\r\n    function rfiLoad() { \/\/ Slate's embed script renders into its div, so this runs once the card is in the page\r\n      if (rfiForm().__loading) return; rfiHost.__loading = 1;\r\n      var s = document.createElement('script'); s.async = true;\r\n      s.src = 'https:\/\/discover.highpoint.edu\/register\/?id=' + RFI_FORM + '&output=embed&div=form_' + RFI_FORM + (location.search.length > 1 ? '&' + location.search.substring(1) : '');\r\n      document.head.appendChild(s);\r\n      var t0 = Date.now(), iv = setInterval(function () {\r\n        if (rfiTagSteps(rfiHost)) { clearInterval(iv); var card = rfiHost.closest('.hpu-vm-rfi'); if (card) rfiMarkRequired(card, +card.getAttribute('data-step')); }\r\n        else if (Date.now() - t0 > 30000) clearInterval(iv);\r\n      }, 300);\r\n    }\r\n    \/\/ The full Slate form, one short step at a time. Questions go to a step by their Slate export key; anything\r\n    \/\/ unrecognized rides along with the question before it, so a field admissions adds later never gets lost.\r\n    var RFI_TOTAL = 7, RFI_STEPS = [null,\r\n      { title: 'Want the inside track on High&nbsp;Point&nbsp;University?', text: 'A few quick steps, and the admissions counselor for your area will follow up.' },\r\n      { title: 'A little about you' },\r\n      { title: 'How can we reach you?', text: 'Phone numbers are optional.' },\r\n      { title: 'Your plans' },\r\n      { title: 'Your mailing address' },\r\n      { title: 'Your high school' },\r\n      { title: 'Parent or guardian', text: 'Optional. Add a parent or guardian if you&rsquo;d like them included.' }];\r\n    function rfiStepOf(q) {\r\n      var k = q.getAttribute('data-export') || '', id = q.id || '';\r\n      if (\/^sys:(first|last|email)$\/.test(k)) return 1;\r\n      if (\/^sys:(suffix|preferred|birthdate|middle|sex)$\/.test(k)) return 2;\r\n      if (\/^sys:(mobile|phone)$\/.test(k) || k === 'sys:field:text_permission') return 3;\r\n      if (\/^sys:field:(prospect_type|ugstu_type|ugstart_term|ug_major|ug_preprofessional)$\/.test(k) || k === 'hs_grad' || id.indexOf('fea9b7ff') >= 0) return 4;\r\n      if (k === 'sys:address') return 5;\r\n      if (\/^sys:school:\/.test(k)) return 6;\r\n      if (\/^sys:relationship:\/.test(k) || id.indexOf('9007f0d0') >= 0) return 7;\r\n      if (\/241f7635|ce840c3c|279e25ea\/.test(id)) return 0; \/\/ Slate's section headings: the step titles replace them\r\n      return -1;\r\n    }\r\n    function rfiTagSteps(root) {\r\n      var qs = root ? root.querySelectorAll('.form_question') : [], last = 1;\r\n      for (var i = 0; i < qs.length; i++) { var n = rfiStepOf(qs[i]); if (n > 0) last = n; qs[i].setAttribute('data-hpu-step', n >= 0 ? n : last); }\r\n      return qs.length > 0;\r\n    }\r\n    function rfiHasFields(c, n) { \/\/ false when Slate's own logic has hidden every question in a step\r\n      var qs = c.querySelectorAll('.form_question[data-hpu-step=\"' + n + '\"]');\r\n      for (var i = 0; i < qs.length; i++) if (qs[i].style.display !== 'none' && !qs[i].classList.contains('hidden') && qs[i].querySelector('input:not([type=hidden]),select,textarea')) return true;\r\n      return false;\r\n    }\r\n    function rfiValid(c) { \/\/ required fields the visitor can see in the current step\r\n      var qs = c.querySelectorAll('.form_question[data-hpu-step=\"' + c.getAttribute('data-step') + '\"]');\r\n      for (var i = 0; i < qs.length; i++) {\r\n        if (!qs[i].offsetParent) continue;\r\n        var els = qs[i].querySelectorAll('input:not([type=hidden]),select,textarea');\r\n        for (var j = 0; j < els.length; j++) if (els[j].offsetParent && !els[j].checkValidity()) { try { els[j].reportValidity(); } catch (e) {} return false; }\r\n      }\r\n      return true;\r\n    }\r\n    \/\/ Star every required field in the step (the label it belongs to), and show the \"* Required\" note when there is one.\r\n    function rfiMarkRequired(c, n) {\r\n      [].forEach.call(c.querySelectorAll('.hpu-req'), function (l) { l.classList.remove('hpu-req'); });\r\n      var any = false, qs = c.querySelectorAll('.form_question[data-hpu-step=\"' + n + '\"]');\r\n      for (var i = 0; i < qs.length; i++) {\r\n        var req = qs[i].querySelectorAll('[required]');\r\n        for (var j = 0; j < req.length; j++) {\r\n          var el = req[j], lbl = (el.type !== 'radio' && el.type !== 'checkbox' && el.id) ? c.querySelector('label[for=\"' + el.id + '\"]') : null;\r\n          lbl = lbl || qs[i].querySelector('.form_label');\r\n          if (lbl) { lbl.classList.add('hpu-req'); if (qs[i].offsetParent) any = true; } \/\/ the note only counts questions on screen\r\n        }\r\n      }\r\n      var lg = c.querySelector('.hpu-vm-rfi-legend'); if (lg) lg.hidden = !any;\r\n    }\r\n    function rfiShow(c, n, dir) {\r\n      n = Math.max(1, Math.min(RFI_TOTAL, n));\r\n      while (dir && n > 1 && n < RFI_TOTAL && !rfiHasFields(c, n)) n += dir; \/\/ skip a step that has nothing to ask\r\n      var st = RFI_STEPS[n] || {}, p = c.querySelector('.hpu-vm-rfi-intro');\r\n      c.setAttribute('data-step', n); c.classList.toggle('is-last', n === RFI_TOTAL);\r\n      \/\/ On the last step, Back sits beside Slate's own Submit button (which has to stay inside Slate's form).\r\n      var bk = c.querySelector('.hpu-vm-rfi-back'), fa = c.querySelector('.form_action'), nv = c.querySelector('.hpu-vm-rfi-nav');\r\n      if (bk && fa && n === RFI_TOTAL) fa.insertBefore(bk, fa.firstChild); else if (bk && nv && bk.parentNode !== nv) nv.insertBefore(bk, nv.firstChild);\r\n      c.querySelector('.hpu-vm-rfi-count').textContent = 'Step ' + n + ' of ' + RFI_TOTAL;\r\n      c.querySelector('.hpu-vm-rfi-bar i').style.width = Math.round(n \/ RFI_TOTAL * 100) + '%';\r\n      c.querySelector('h2').innerHTML = st.title || '';\r\n      p.innerHTML = st.text || ''; p.hidden = !st.text;\r\n      rfiMarkRequired(c, n);\r\n      c.scrollTop = 0;\r\n      if (dir > 0) track('rfi_inline_step', { feed_position: rfiIdx, video_id: mainId(), step: n });\r\n    }\r\n    function makeRfiSlide() {\r\n      var s = document.createElement('section'); s.className = 'hpu-vm-slide is-rfi'; s.setAttribute('aria-label', 'Request information');\r\n      var c = document.createElement('div'); c.className = 'hpu-vm-rfi'; c.setAttribute('data-step', '1');\r\n      c.innerHTML = '<p class=\"hpu-vm-rfi-count\"><\/p><div class=\"hpu-vm-rfi-bar\"><i><\/i><\/div><h2><\/h2><p class=\"hpu-vm-rfi-intro\"><\/p><p class=\"hpu-vm-rfi-legend\" hidden><b aria-hidden=\"true\">*<\/b> Required<\/p>';\r\n      var old = rfiHost && rfiHost.closest ? rfiHost.closest('.hpu-vm-rfi') : null;\r\n      c.appendChild(rfiForm());\r\n      if (old) old.innerHTML = '<h2>Want the inside track on High&nbsp;Point&nbsp;University?<\/h2><p><a href=\"https:\/\/discover.highpoint.edu\/register\/inquiry\">Request information<\/a><\/p>';\r\n      var nav = document.createElement('div'); nav.className = 'hpu-vm-rfi-nav';\r\n      var back = document.createElement('button'); back.type = 'button'; back.className = 'hpu-vm-rfi-back'; back.textContent = 'Back';\r\n      var btn = document.createElement('button'); btn.type = 'button'; btn.className = 'hpu-vm-rfi-go'; btn.textContent = 'Continue';\r\n      var skip = document.createElement('button'); skip.type = 'button'; skip.className = 'hpu-vm-rfi-skip'; skip.textContent = 'Keep watching';\r\n      nav.appendChild(back); nav.appendChild(btn);\r\n      c.appendChild(nav); c.appendChild(skip); s.appendChild(c);\r\n      rfiShow(c, 1, 0);\r\n      fastTap(btn, function () {\r\n        if (!rfiTagSteps(rfiHost)) return; \/\/ Slate is still loading\r\n        if (rfiValid(c)) rfiShow(c, +c.getAttribute('data-step') + 1, 1);\r\n      });\r\n      fastTap(back, function () { rfiShow(c, +c.getAttribute('data-step') - 1, -1); });\r\n      \/\/ Enter moves to the next step instead of submitting the form early.\r\n      c.addEventListener('keydown', function (e) {\r\n        if (e.key !== 'Enter' || !e.target.matches || !e.target.matches('input:not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit])')) return;\r\n        e.preventDefault(); if (!c.classList.contains('is-last')) btn.click();\r\n      });\r\n      \/\/ Slate shows and hides questions as answers change (text reminders after a mobile number, say): re-check the note.\r\n      c.addEventListener('change', function () { setTimeout(function () { rfiMarkRequired(c, +c.getAttribute('data-step')); }, 60); });\r\n      fastTap(skip, function () { go(idx + 1, 'rfi_skip'); });\r\n      c.addEventListener('focusin', function (e) {\r\n        if (rfiStarted || !e.target.matches || !e.target.matches('input,select,textarea')) return;\r\n        rfiStarted = true; var st = rfiState(); st.started = 1; rfiSave(st); rfiTrack('rfi_inline_start');\r\n      });\r\n      \/\/ Slate validates and submits on its own button; a successful submit replaces the form with Slate's confirmation.\r\n      c.addEventListener('click', function (e) {\r\n        if (rfiSent || !e.target.closest || !e.target.closest('.form_button_submit')) return;\r\n        var t0 = Date.now();\r\n        (function check() {\r\n          if (rfiSent) return;\r\n          if (!c.querySelector('.form_question[data-export=\"sys:email\"]')) {\r\n            rfiSent = true; var st = rfiState(); st.sent = 1; rfiSave(st);\r\n            try { localStorage.setItem('hpu_rfi_sent', String(Date.now())); } catch (er) {}\r\n            rfiTrack('rfi_inline_submit'); return;\r\n          }\r\n          if (Date.now() - t0 < 20000) setTimeout(check, 400);\r\n        })();\r\n      }, true);\r\n      return s;\r\n    }\r\n    function rfiInsertAfter(i) {\r\n      if (rfiCard || !feed || rfiBlocked()) return;\r\n      var p = i + 1, sl = makeRfiSlide();\r\n      rfiCard = sl; rfiIdx = p;\r\n      items.splice(p, 0, { id: null, rfi: true, title: 'Request information' });\r\n      slides.splice(p, 0, sl);\r\n      feed.insertBefore(sl, slides[p + 1] || (decks[0] ? decks[0].el : null));\r\n      rfiLoad();\r\n      decks.forEach(function (d) { if (d.slot >= p) placeDeck(d, d.slot + 1); }); \/\/ players below the card move down one slide\r\n      modal.classList.toggle('at-end', idx >= slides.length - 1); navState();\r\n    }\r\n    function cardLanded(n, how) {\r\n      modal.classList.add('on-rfi', 'cta-hidden');\r\n      clearTimeout(soundTimer); clearTimeout(hideTimer);\r\n      if (cur) { cur.warm = false; cur.leaving = false; try { cur.player.pauseVideo(); } catch (e) {} cur.el.classList.remove('is-live'); cur.el.classList.add('is-preview'); }\r\n      track('video_modal_swipe', { feed_position: n, method: how });\r\n      rfiIdx = n;\r\n      if (!slides[n].__viewed) { slides[n].__viewed = 1; var st = rfiState(); st.views++; st.since = 0; rfiSave(st); rfiTrack('rfi_inline_view'); }\r\n      preloadNext();\r\n    }\r\n    function rfiLeft(from, n) {\r\n      if (from === n || !items[from] || !items[from].rfi) return;\r\n      modal.classList.remove('on-rfi');\r\n      if (!rfiStarted && !rfiSent && !slides[from].__skipped) { slides[from].__skipped = 1; rfiIdx = from; rfiTrack('rfi_inline_skip'); rfiCard = null; }\r\n    }\r\n    function rfiAfterVideo(from, n) {\r\n      if (from === n) return;\r\n      if (items[from] && !items[from].rfi) leftVids++;\r\n      if (n > from) { var st = rfiState(); if (st.views) { st.since++; rfiSave(st); } }\r\n      if (leftVids >= 1) rfiInsertAfter(n);\r\n    }\r\n    function makeCta() {\r\n      var wrap = document.createElement('div'); wrap.className = 'hpu-vm-cta';\r\n      var p = document.createElement('p'); p.textContent = cta.title;\r\n      var a = document.createElement('a'); a.textContent = cta.buttons[0].text; a.href = cta.buttons[0].link;\r\n      fastTap(a, function (e) {\r\n        track('video_modal_cta_click', { link_url: a.href, feed_position: idx });\r\n        if (ctaParam === 'apply') { try { sessionStorage.setItem('hpu_apply_clicked', '1'); } catch (er) {} }\r\n        if (e.type === 'touchend') window.location.href = a.href; \/\/ a plain click follows the link on its own\r\n      });\r\n      wrap.appendChild(p); wrap.appendChild(a);\r\n      return wrap;\r\n    }\r\n    function makeSlide(item) {\r\n      var s = document.createElement('section'); s.className = 'hpu-vm-slide';\r\n      if (item.title) s.setAttribute('aria-label', item.title);\r\n      var f = document.createElement('div'); f.className = 'hpu-vm-frame';\r\n      \/\/ No cover image: the frame stays black until the video itself is on screen.\r\n      \/\/ Ambient glow: the video's own colors, blurred out around the frame.\r\n      var g = document.createElement('div'); g.className = 'hpu-vm-glow'; g.setAttribute('aria-hidden', 'true');\r\n      g.innerHTML = '<i><\/i><i class=\"off\"><\/i>'; g.firstChild.style.backgroundImage = 'url(\"https:\/\/i.ytimg.com\/vi\/' + item.id + '\/mq1.jpg\")';\r\n      f.appendChild(g);\r\n      s.appendChild(f);\r\n      if (hasCta) s.appendChild(makeCta());\r\n      return s;\r\n    }\r\n    function addSlides() {\r\n      if (!modal) return;\r\n      feedItems().forEach(function (v) {\r\n        if (items.some(function (x) { return x.id === v.id; })) return;\r\n        items.push(v); var s = makeSlide(v); slides.push(s); feed.insertBefore(s, decks[0] ? decks[0].el : null);\r\n      });\r\n      modal.classList.toggle('at-end', idx >= slides.length - 1);\r\n      if (!standby && decks.length) preloadNext();\r\n    }\r\n    function markActive() {\r\n      slides.forEach(function (s, i) { s.classList.toggle('is-active', i === idx); });\r\n      modal.classList.toggle('at-end', idx >= slides.length - 1);\r\n      navState();\r\n    }\r\n    function navState() {\r\n      if (!modal) return;\r\n      var up = modal.querySelector('.hpu-vm-up'), dn = modal.querySelector('.hpu-vm-down');\r\n      if (up) up.disabled = idx <= 0;\r\n      if (dn) dn.disabled = idx >= slides.length - 1;\r\n    }\r\n    \/\/ Tint the phone's status bar \/ notch area to match the dark viewer while it is open.\r\n    \/\/ theme-color covers older iOS Safari; Safari 26 reads the page background near the top, so set that too.\r\n    var tint = null;\r\n    function setTint(on) {\r\n      var de = document.documentElement, b = document.body;\r\n      if (on && !tint) {\r\n        var metas = [].slice.call(document.querySelectorAll('meta[name=\"theme-color\"]'));\r\n        tint = { metas: metas.map(function (m) { return [m, m.getAttribute('content')]; }), html: de.style.backgroundColor, body: b.style.backgroundColor, created: null };\r\n        if (!metas.length) { var m = document.createElement('meta'); m.name = 'theme-color'; document.head.appendChild(m); tint.created = m; metas = [m]; }\r\n        metas.forEach(function (m) { m.setAttribute('content', '#0d0a14'); });\r\n        de.style.backgroundColor = '#0d0a14'; b.style.backgroundColor = '#0d0a14';\r\n      } else if (!on && tint) {\r\n        tint.metas.forEach(function (p) { if (p[1] === null) p[0].removeAttribute('content'); else p[0].setAttribute('content', p[1]); });\r\n        if (tint.created) tint.created.remove();\r\n        de.style.backgroundColor = tint.html; b.style.backgroundColor = tint.body; tint = null;\r\n      }\r\n    }\r\n    \/\/ Three players: the one on screen, the next video and the previous one, so swiping either way is instant.\r\n    function vidNear(i, dir) { var j = i + dir; if (items[j] && items[j].rfi) j += dir; return j; }\r\n    function holding(i) {\r\n      if (i < 0 || i >= items.length || items[i].rfi) return null;\r\n      var oc = onCard(); \/\/ on the RFI card, the paused video next to it still counts as ready\r\n      for (var k = 0; k < decks.length; k++) { var d = decks[k]; if ((d !== cur || oc) && d.vid === items[i].id) return d; }\r\n      return null;\r\n    }\r\n    function makeDeck(n) {\r\n      var el = document.createElement('div'); el.className = 'hpu-vm-stage';\r\n      el.innerHTML = '<button type=\"button\" class=\"hpu-vm-sound\">Tap for sound<\/button><div><\/div>';\r\n      feed.appendChild(el);\r\n      var d = { el: el, host: el.lastChild, player: null, ready: false, vid: null, slot: -1, preloading: false, seekOnSwap: false, parkTimer: null, loopTimer: null, wantSound: false, forcedMute: false, warm: false, capsDone: false, startAt: 0 };\r\n      fastTap(el.querySelector('.hpu-vm-sound'), function () {\r\n        wantAudio = true; d.forcedMute = false;\r\n        unlockAudio(); \/\/ inside the tap: allows sound on both players, so no second tap is needed\r\n        try { d.player.unMute(); d.player.setVolume(100); d.player.playVideo(); } catch (e) {}\r\n        modal && modal.classList.remove('needs-sound');\r\n      });\r\n      return d;\r\n    }\r\n    function hideDeck(d) {\r\n      if (!d) return;\r\n      d.el.classList.add('no-fade'); d.el.classList.remove('is-live', 'is-preview');\r\n      void d.el.offsetWidth; \/\/ apply the hide instantly, before the player moves\r\n      d.el.classList.remove('no-fade');\r\n    }\r\n    function placeDeck(d, slot) {\r\n      var s = slides[slot]; if (!d || !s) return;\r\n      d.slot = slot;\r\n      var r = s.querySelector('.hpu-vm-frame').getBoundingClientRect(), fr = feed.getBoundingClientRect();\r\n      d.el.style.top = (r.top - fr.top + feed.scrollTop) + 'px';\r\n      d.el.style.left = (r.left - fr.left) + 'px';\r\n      d.el.style.width = r.width + 'px';\r\n      d.el.style.height = r.height + 'px';\r\n    }\r\n    \/\/ iPhone only lets a player make sound if it was unmuted during a tap. Call this inside a tap: it unmutes the\r\n    \/\/ player on screen and briefly unmutes then re-mutes the others, which unlocks them for later swipes.\r\n    function unlockAudio() {\r\n      decks.forEach(function (d) {\r\n        if (!d.player || !d.ready || !d.player.unMute) return;\r\n        try {\r\n          if (d === cur) { d.player.unMute(); d.player.setVolume(100); }\r\n          else { d.player.unMute(); d.player.mute(); }\r\n        } catch (e) {}\r\n      });\r\n    }\r\n    function createPlayer(d, vid, o) {\r\n      d.vid = vid; d.ready = false;\r\n      return (d.creating = loadYT().then(function () {\r\n        return new Promise(function (res) {\r\n          if (!modal) return;\r\n          d.player = new YT.Player(d.host, {\r\n            videoId: vid,\r\n            playerVars: { autoplay: o.autoplay ? 1 : 0, mute: o.mute ? 1 : 0, playsinline: 1, cc_load_policy: 1, cc_lang_pref: 'en', rel: 0, start: Math.floor(o.start || 0) },\r\n            events: {\r\n              onReady: function () { if ((o.start || 0) % 1) { try { d.player.seekTo(o.start, true); } catch (e) {} } d.ready = true; res(); },\r\n              onApiChange: function () { if (d === cur) applyCaptions(d); },\r\n              onStateChange: function (e) { onState(d, e.data); }\r\n            }\r\n          });\r\n        });\r\n      }));\r\n    }\r\n    \/\/ While a video plays, drift the glow through YouTube's frame stills (about 25\/50\/75% in) so it shifts with the video.\r\n    var glowTimer = null;\r\n    function stopGlow() { clearInterval(glowTimer); glowTimer = null; }\r\n    function startGlow() {\r\n      stopGlow();\r\n      if (CALM.matches) return;\r\n      var s = slides[idx], item = items[idx]; if (!s || !item) return;\r\n      var g = s.querySelector('.hpu-vm-glow'); if (!g) return;\r\n      var list = [];\r\n      ['mq1', 'mq2', 'mq3'].forEach(function (n) { list.push('https:\/\/i.ytimg.com\/vi\/' + item.id + '\/' + n + '.jpg'); });\r\n      var k = 0;\r\n      glowTimer = setInterval(function () {\r\n        k = (k + 1) % list.length;\r\n        var src = list[k], im = new Image();\r\n        im.onload = function () {\r\n          if (!g.isConnected) return;\r\n          var on = g.querySelector('i:not(.off)'), off = g.querySelector('i.off');\r\n          if (!on || !off) return;\r\n          off.style.backgroundImage = 'url(\"' + src + '\")';\r\n          off.classList.remove('off'); on.classList.add('off');\r\n        };\r\n        im.src = src;\r\n      }, 6500);\r\n    }\r\n    \/\/ Keep the cover image up until the new video is really rolling, so no loading chrome or old frame shows.\r\n    function revealWhenRolling(d) {\r\n      clearTimeout(revealTimer);\r\n      var want = items[idx] && items[idx].id, t0 = Date.now();\r\n      (function check() {\r\n        if (!modal || d !== cur) return;\r\n        var ok;\r\n        try {\r\n          var vd = d.player.getVideoData ? d.player.getVideoData() : null;\r\n          ok = (!vd || !vd.video_id || vd.video_id === want) && d.player.getPlayerState() === 1 && d.player.getCurrentTime() > d.startAt + 0.05;\r\n        } catch (e) { ok = true; }\r\n        if (ok || Date.now() - t0 > 3000) { d.el.classList.add('is-live'); d.el.classList.remove('is-preview'); showCta(300); startGlow(); return; }\r\n        revealTimer = setTimeout(check, 60);\r\n      })();\r\n    }\r\n    function onState(d, s) {\r\n      if (!modal) return;\r\n      if (d === cur && onCard()) return; \/\/ the video next to the RFI card stays paused\r\n      if (d !== cur || standby) {\r\n        \/\/ Next-up player: plays muted for a moment so a few seconds buffer, then parks paused on its opening frame\r\n        \/\/ and shows under the next slide, so the swipe brings in the real first frame. It plays when the slide lands.\r\n        if (s === 1 && d.preloading) {\r\n          d.preloading = false; stopPreview(d);\r\n          d.parkTimer = setTimeout(function () {\r\n            d.parkTimer = null;\r\n            if (d === cur) return;\r\n            try { d.player.pauseVideo(); d.player.seekTo(d.skipAt || SKIP, true); } catch (e) {}\r\n            d.seekOnSwap = false;\r\n            if (d.slot !== idx && Math.abs(d.slot - idx) <= 2) d.el.classList.add('is-preview');\r\n          }, 1500);\r\n        } else if (s === 1 && !d.parkTimer && !d.warm) {\r\n          try { d.player.pauseVideo(); } catch (e) {} \/\/ only one video ever plays\r\n        }\r\n        return;\r\n      }\r\n      clearTimeout(hideTimer);\r\n      if (s === 1) {\r\n        if (d.wantSound) {\r\n          \/\/ Start muted (always allowed), then match the viewer's sound choice. If the browser pauses the video\r\n          \/\/ for unmuting (iPhone, on a player that hasn't been tapped yet), go back to muted playback and offer the tap.\r\n          d.wantSound = false;\r\n          if (wantAudio) {\r\n            try { d.player.unMute(); d.player.setVolume(100); } catch (e) {}\r\n            setTimeout(function () {\r\n              if (d !== cur || !modal || onCard()) return;\r\n              try { if (d.player.getPlayerState() === 2) { d.forcedMute = true; d.player.mute(); d.player.playVideo(); modal.classList.add('needs-sound'); } } catch (e) {}\r\n            }, 350);\r\n          } else {\r\n            try { d.player.mute(); } catch (e) {}\r\n          }\r\n        }\r\n        if (!d.el.classList.contains('is-live')) revealWhenRolling(d);\r\n        if (!d.capsDone) { d.capsDone = true; applyCaptions(d); }\r\n        hideTimer = setTimeout(function () { modal && modal.classList.add('is-playing'); }, 4000);\r\n        clearTimeout(preloadTimer); preloadTimer = setTimeout(preloadNext, 0); \/\/ queue the next video the moment this one starts\r\n      } else {\r\n        modal.classList.remove('is-playing');\r\n        if (s === 0 && idx < slides.length - 1) go(idx + 1, 'auto');\r\n      }\r\n    }\r\n    function stopPreview(d) { clearTimeout(d.parkTimer); clearInterval(d.loopTimer); d.parkTimer = null; d.loopTimer = null; }\r\n    function loadInto(d, n) {\r\n      if (!d.player && d.creating) { d.creating.then(function () { preloadNext(); }); return; } \/\/ still being built\r\n      hideDeck(d); placeDeck(d, n); d.capsDone = false; d.skipAt = startFor(items[n]); d.startAt = d.skipAt; d.preloading = true; d.seekOnSwap = true; stopPreview(d);\r\n      if (!d.player) {\r\n        createPlayer(d, items[n].id, { autoplay: true, mute: true, start: d.skipAt }).then(function () { try { d.player.mute(); if (d.player.getPlayerState() !== 1 && d.player.getPlayerState() !== 3) d.player.playVideo(); } catch (e) {} });\r\n      } else {\r\n        d.vid = items[n].id;\r\n        try { d.player.mute(); d.player.loadVideoById({ videoId: items[n].id, startSeconds: d.skipAt }); } catch (e) {}\r\n      }\r\n    }\r\n    \/\/ Make sure the next and previous videos each sit ready in a spare player (next first).\r\n    function preloadNext() {\r\n      if (!modal || standby) return;\r\n      var nn = vidNear(idx, 1), pp = vidNear(idx, -1); \/\/ the RFI card holds no video: look past it\r\n      [nn, pp].forEach(function (n) {\r\n        if (n < 0 || n >= items.length || holding(n)) return;\r\n        var keep = [cur, holding(nn), holding(pp)];\r\n        var free = decks.filter(function (d) { return keep.indexOf(d) < 0; })[0];\r\n        if (free) loadInto(free, n);\r\n      });\r\n    }\r\n    function soundCheck(d) {\r\n      clearTimeout(soundTimer);\r\n      soundTimer = setTimeout(function () {\r\n        if (!modal || d !== cur || !d.player || !d.player.getPlayerState || onCard()) return;\r\n        try {\r\n          if (d.player.getPlayerState() === 2 || d.player.getPlayerState() === 5) { d.forcedMute = true; d.player.mute(); d.player.playVideo(); if (wantAudio) modal.classList.add('needs-sound'); }\r\n          else if (wantAudio && d.player.isMuted && d.player.isMuted()) { d.forcedMute = true; modal.classList.add('needs-sound'); }\r\n          else modal.classList.remove('needs-sound');\r\n        } catch (e) {}\r\n      }, 1500);\r\n    }\r\n    function showCta(delay) {\r\n      clearTimeout(ctaTimer);\r\n      ctaTimer = setTimeout(function () { if (modal && !swiping) modal.classList.remove('cta-hidden'); }, delay || 0);\r\n    }\r\n    \/\/ How the visitor moved, sent as method on video_modal_swipe: touch, arrow_click, keyboard, wheel,\r\n    \/\/ auto (a video ended and the next one came up) or rfi_skip (Keep watching on the RFI card).\r\n    var navMethod = null;\r\n    function go(n, how) {\r\n      if (!feed || n < 0 || n >= slides.length) return;\r\n      navMethod = how || null;\r\n      feed.scrollTo({ top: slides[n].offsetTop, behavior: CALM.matches ? 'auto' : 'smooth' });\r\n    }\r\n\r\n    function onScroll() {\r\n      if (resizing || !slides[idx]) return;\r\n      if (lastH && feed.clientHeight !== lastH) { onResize(); return; } \/\/ the phone turned: this scroll is the layout shifting, not a swipe\r\n      if (!swiping && Math.abs(feed.scrollTop - slides[idx].offsetTop) > 6) {\r\n        swiping = true; clearTimeout(ctaTimer);\r\n        modal.classList.add('is-swiping', 'cta-hidden');\r\n      }\r\n      \/\/ The moment a swipe starts, the video coming in starts playing (muted), so it is already moving as it slides in.\r\n      if (swiping) {\r\n        var dir = feed.scrollTop > slides[idx].offsetTop ? 1 : -1, w = holding(idx + dir);\r\n        if (w && w.ready && !w.warm) {\r\n          w.warm = true; w.preloading = false; stopPreview(w);\r\n          if (w.seekOnSwap) { try { w.player.seekTo(w.skipAt || SKIP, true); } catch (e) {} w.seekOnSwap = false; }\r\n          try { w.player.mute(); w.player.playVideo(); } catch (e) {}\r\n        }\r\n      }\r\n      \/\/ Start the next video while the snap is still finishing, so it is already rolling when the slide lands.\r\n      var h = feed.clientHeight || 1, p = feed.scrollTop \/ h, n = Math.round(p);\r\n      if (n !== idx && n >= 0 && n < slides.length && Math.abs(p - n) < 0.3) {\r\n        var nx = holding(n);\r\n        if (nx && nx.ready) commit(n);\r\n      }\r\n      clearTimeout(settleTimer); settleTimer = setTimeout(settle, 90);\r\n    }\r\n    function settle() {\r\n      if (!modal || resizing) return;\r\n      clearTimeout(settleTimer);\r\n      var h = feed.clientHeight || 1;\r\n      var n = Math.max(0, Math.min(slides.length - 1, Math.round(feed.scrollTop \/ h)));\r\n      if (Math.abs(feed.scrollTop - slides[n].offsetTop) > 2) return; \/\/ still snapping\r\n      swiping = false; modal.classList.remove('is-swiping');\r\n      \/\/ Anything still rolling off screen stops once the slide has landed.\r\n      decks.forEach(function (d) { if (d !== cur && (d.warm || d.leaving)) { d.warm = false; d.leaving = false; try { d.player.pauseVideo(); } catch (e) {} } });\r\n      if (n === idx) { showCta(cur && cur.el.classList.contains('is-live') ? 150 : 1200); return; }\r\n      commit(n);\r\n    }\r\n    function commit(n) {\r\n      var from = idx, how = navMethod || 'touch'; navMethod = null;\r\n      idx = n; markActive();\r\n      fillFeed();\r\n      modal.classList.remove('is-playing', 'needs-sound');\r\n      clearTimeout(preloadTimer); clearTimeout(revealTimer); stopGlow();\r\n      rfiLeft(from, n);\r\n      if (items[n].rfi) { cardLanded(n, how); return; }\r\n      if (items[from] && items[from].rfi && cur && cur.vid === items[n].id) {\r\n        \/\/ Back from the RFI card to the video it paused: carry on from where it stopped.\r\n        cur.warm = false; cur.leaving = false; cur.forcedMute = false; cur.wantSound = true; placeDeck(cur, n);\r\n        cur.el.classList.add('is-live'); cur.el.classList.remove('is-preview');\r\n        try { cur.player.playVideo(); if (cur.player.getPlayerState() === 1) onState(cur, 1); } catch (e) {}\r\n        soundCheck(cur); showCta(300);\r\n        track('video_modal_swipe', { feed_position: idx, method: how });\r\n        rfiAfterVideo(from, n);\r\n        return;\r\n      }\r\n      var prev = cur, nx = holding(n);\r\n      \/\/ Remember the sound choice from the video being left: muted by the viewer (YouTube's own button) stays muted,\r\n      \/\/ unmuted stays unmuted. A mute we forced because the browser blocked sound doesn't count as their choice.\r\n      try { if (prev && prev.player && prev.player.isMuted && !prev.forcedMute) wantAudio = !prev.player.isMuted(); } catch (e) {}\r\n      if (nx && nx.ready) {\r\n        \/\/ The next video is already buffered in the other player: swap to it.\r\n        cur = nx; nx.preloading = false; nx.warm = false; stopPreview(nx);\r\n        \/\/ The video being left stays ready (paused, in view on its slide) for an instant swipe back.\r\n        \/\/ It keeps playing (muted) while it slides away, and pauses once the new slide has landed.\r\n        stopPreview(prev); prev.leaving = true; try { prev.player.mute(); } catch (e) {}\r\n        prev.el.classList.add('no-fade'); prev.el.classList.remove('is-live'); prev.el.classList.add('is-preview'); void prev.el.offsetWidth; prev.el.classList.remove('no-fade');\r\n        prev.seekOnSwap = false; \/\/ swiping back resumes where it was paused\r\n        placeDeck(cur, n);\r\n        try {\r\n          if (cur.seekOnSwap && !(cur.player.getPlayerState() === 1 && cur.player.getCurrentTime() < (cur.skipAt || SKIP) + 3)) { cur.player.seekTo(cur.skipAt || SKIP, true); cur.startAt = cur.skipAt || SKIP; }\r\n          else cur.startAt = cur.player.getCurrentTime() || 0;\r\n          cur.seekOnSwap = false;\r\n          cur.forcedMute = false;\r\n          cur.wantSound = true;\r\n          cur.player.playVideo();\r\n          if (cur.player.getPlayerState() === 1) onState(cur, 1); \/\/ it was still pre-buffering, so no state change will fire\r\n        } catch (e) {}\r\n        var sw = cur;\r\n        setTimeout(function () { try { if (sw === cur && sw.player.getPlayerState() === 1 && !sw.el.classList.contains('is-live')) onState(sw, 1); } catch (e) {} }, 400);\r\n      } else {\r\n        hideDeck(cur); placeDeck(cur, n); cur.capsDone = false; cur.skipAt = startFor(items[n]); cur.startAt = cur.skipAt; cur.vid = items[n].id; cur.forcedMute = false; cur.wantSound = true;\r\n        try { cur.player.loadVideoById({ videoId: items[n].id, startSeconds: cur.skipAt }); } catch (e) {}\r\n      }\r\n      soundCheck(cur);\r\n      showCta(1500); \/\/ fallback if the new video is slow to start\r\n      track('video_modal_swipe', { feed_position: idx, method: how });\r\n      rfiAfterVideo(from, n);\r\n    }\r\n    \/\/ Turning the phone: every slide changes height, so the feed's scroll position briefly points at the wrong video.\r\n    \/\/ While that settles, swipe handling is paused and the feed is pinned to the current video; playback is untouched.\r\n    var resizing = false, resizeTimer = null, lastH = 0;\r\n    function onResize() {\r\n      if (!modal) return;\r\n      resizing = true; clearTimeout(resizeTimer); lastH = feed.clientHeight;\r\n      function pin() {\r\n        if (!modal || !slides[idx]) return;\r\n        feed.style.scrollSnapType = 'none';\r\n        feed.scrollTop = slides[idx].offsetTop;\r\n        decks.forEach(function (d) { if (d.slot >= 0) placeDeck(d, d.slot); });\r\n      }\r\n      pin(); requestAnimationFrame(pin);\r\n      resizeTimer = setTimeout(function () {\r\n        pin();\r\n        if (!modal) return;\r\n        feed.style.scrollSnapType = '';\r\n        resizing = false; swiping = false; modal.classList.remove('is-swiping'); lastH = feed.clientHeight;\r\n        \/\/ Only the caption size changes with orientation; don't reload the captions module mid-playback.\r\n        decks.forEach(function (d) { try { if (d.player && d.player.setOption) d.player.setOption('captions', 'fontSize', capSize()); } catch (e) {} });\r\n        showCta(0);\r\n      }, 500);\r\n    }\r\n\r\n    function close(fromPop) {\r\n      if (!modal) return;\r\n      var wasOpen = !standby;\r\n      decks.forEach(function (d) { stopPreview(d); try { if (d.player && d.player.destroy) d.player.destroy(); } catch (e) {} });\r\n      decks = []; cur = null; standby = false;\r\n      [hideTimer, settleTimer, ctaTimer, soundTimer, revealTimer, preloadTimer].forEach(clearTimeout); stopGlow();\r\n      if (modal.__ro) modal.__ro.disconnect();\r\n      if (rfiHost && rfiHost.parentNode) rfiHost.parentNode.removeChild(rfiHost); \/\/ keep the form (and anything typed) for next time\r\n      rfiCard = null; rfiIdx = -1; leftVids = 0;\r\n      modal.remove(); modal = feed = null; items = []; slides = []; idx = 0; swiping = false;\r\n      document.documentElement.style.overflow = '';\r\n      setTint(false);\r\n      LAND.removeEventListener && LAND.removeEventListener('change', onResize);\r\n      window.removeEventListener('resize', onResize);\r\n      window.removeEventListener('orientationchange', onResize);\r\n      clearTimeout(resizeTimer); resizing = false;\r\n      if (wasOpen && !fromPop && history.state && history.state.hpuVm) history.back();\r\n      if (wasOpen) setTimeout(prewarm, 1500); \/\/ get ready again in case they reopen\r\n    }\r\n    \/\/ Build the viewer hidden, with the page's own video loading muted and parked just past the fade,\r\n    \/\/ so tapping the video opens it as fast as a swipe does.\r\n    function build() {\r\n      items = feedItems(); if (!items.length) return false;\r\n      modal = document.createElement('div');\r\n      modal.className = 'hpu-vm cta-hidden is-standby'; modal.setAttribute('role', 'dialog'); modal.setAttribute('aria-modal', 'true'); modal.setAttribute('aria-label', 'Video player'); modal.setAttribute('aria-hidden', 'true');\r\n      var x = document.createElement('button'); x.type = 'button'; x.className = 'hpu-vm-close'; x.setAttribute('aria-label', 'Close video'); x.innerHTML = '&times;';\r\n      feed = document.createElement('div'); feed.className = 'hpu-vm-feed';\r\n      slides = items.map(function (v) { var s = makeSlide(v); feed.appendChild(s); return s; });\r\n      decks = [makeDeck(0), makeDeck(1), makeDeck(2)]; cur = decks[0];\r\n      var more = document.createElement('button'); more.type = 'button'; more.className = 'hpu-vm-more'; more.setAttribute('aria-label', 'Next video');\r\n      more.innerHTML = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 11l6-6 6 6\"\/><path d=\"M6 18l6-6 6 6\" opacity=\".5\"\/><\/svg>';\r\n      var nav = document.createElement('div'); nav.className = 'hpu-vm-nav';\r\n      nav.innerHTML = '<button type=\"button\" class=\"hpu-vm-up\" aria-label=\"Previous video\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 15l6-6 6 6\"\/><\/svg><\/button>' +\r\n        '<button type=\"button\" class=\"hpu-vm-down\" aria-label=\"Next video\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>';\r\n      modal.appendChild(x); modal.appendChild(feed); modal.appendChild(more); modal.appendChild(nav);\r\n      nav.firstChild.addEventListener('click', function () { go(idx - 1, 'arrow_click'); });\r\n      nav.lastChild.addEventListener('click', function () { go(idx + 1, 'arrow_click'); });\r\n      document.body.appendChild(modal);\r\n      standby = true;\r\n      idx = 0; markActive(); placeDeck(cur, 0); lastH = feed.clientHeight;\r\n      seenVids = {}; seenVids[items[0].id] = 1; emptyRuns = 0; fetching = false;\r\n      fillFeed(); \/\/ line up the first random videos while the page is being read\r\n\r\n      fastTap(x, function () { close(false); });\r\n      \/\/ The arrows don't catch touches, so a swipe that starts on them still moves the feed. A tap on them goes to the next video.\r\n      feed.addEventListener('click', function (e) {\r\n        if (modal.classList.contains('at-end')) return;\r\n        var r = more.getBoundingClientRect(); if (!r.width) return;\r\n        if (e.clientX >= r.left - 20 && e.clientX <= r.right + 20 && e.clientY >= r.top - 16 && e.clientY <= r.bottom + 16) go(idx + 1);\r\n      });\r\n      feed.addEventListener('scroll', onScroll, { passive: true });\r\n      feed.addEventListener('scrollend', settle);\r\n      \/\/ Desktop: one video per wheel or trackpad gesture, with a short lockout so one flick doesn't skip three videos.\r\n      var wheelAt = 0, wheelLock = 0, wheelMoved = false;\r\n      modal.addEventListener('wheel', function (e) {\r\n        if (!DESK.matches || Math.abs(e.deltaY) <= Math.abs(e.deltaX)) return;\r\n        var card = e.target.closest && e.target.closest('.hpu-vm-rfi');\r\n        if (card && card.scrollHeight > card.clientHeight + 1 && (e.deltaY > 0 ? card.scrollTop + card.clientHeight < card.scrollHeight - 1 : card.scrollTop > 0)) return; \/\/ the form scrolls first\r\n        e.preventDefault();\r\n        var now = Date.now();\r\n        if (now - wheelAt > 250) wheelMoved = false; \/\/ a new gesture\r\n        wheelAt = now;\r\n        if (wheelMoved || now < wheelLock || Math.abs(e.deltaY) < 4) return;\r\n        wheelMoved = true; wheelLock = now + 600;\r\n        go(idx + (e.deltaY > 0 ? 1 : -1), 'wheel');\r\n      }, { passive: false });\r\n      LAND.addEventListener && LAND.addEventListener('change', onResize);\r\n      window.addEventListener('resize', onResize);\r\n      window.addEventListener('orientationchange', onResize);\r\n      if (window.ResizeObserver) { var ro = new ResizeObserver(function () { onResize(); }); ro.observe(modal); modal.__ro = ro; }\r\n\r\n      \/\/ The other two players are created now too (idle, no video loading), so a tap on open can unlock their sound.\r\n      [decks[1], decks[2]].forEach(function (d) { createPlayer(d, items[0].id, { autoplay: false, mute: true }); d.vid = null; });\r\n      var first = cur; first.preloading = true; first.skipAt = startFor(items[0], true); first.startAt = first.skipAt; first.seekOnSwap = true; first.startOnReady = null;\r\n      createPlayer(first, items[0].id, { autoplay: true, mute: true, start: first.skipAt }).then(function () {\r\n        if (!modal || first !== cur) return;\r\n        if (!standby && first.startOnReady !== null) {\r\n          \/\/ They tapped before the player finished loading: start it now.\r\n          var at = first.startOnReady; first.startOnReady = null;\r\n          try { first.player.seekTo(at, true); first.player.playVideo(); if (first.player.getPlayerState() === 1) onState(first, 1); } catch (e) {}\r\n          applyCaptions(first); soundCheck(first);\r\n        } else {\r\n          try { first.player.mute(); var st = first.player.getPlayerState(); if (st !== 1 && st !== 3) first.player.playVideo(); } catch (e) {}\r\n        }\r\n      });\r\n      return true;\r\n    }\r\n    function prewarm() {\r\n      if (modal || !PHONE.matches || document.hidden) return;\r\n      build();\r\n    }\r\n    function open(start) {\r\n      if (!modal && !build()) return false;\r\n      if (!standby) return false; \/\/ already open\r\n      standby = false;\r\n      modal.classList.remove('is-standby'); modal.removeAttribute('aria-hidden');\r\n      document.documentElement.style.overflow = 'hidden';\r\n      setTint(true);\r\n      feed.scrollTop = 0; idx = 0; markActive(); placeDeck(cur, 0);\r\n      requestAnimationFrame(function () { modal && modal.classList.add('is-open'); });\r\n      try { history.pushState({ hpuVm: 1 }, ''); } catch (e) {}\r\n      track('video_modal_open', { feed_length: items.length });\r\n      fillFeed(); \/\/ open: top the queue up to four\r\n      showCta(1800);\r\n\r\n      wantAudio = true;\r\n      var first = cur, at = start || startFor(items[0], true);\r\n      first.preloading = false; stopPreview(first); first.seekOnSwap = false; first.startAt = at;\r\n      first.forcedMute = false; first.wantSound = true;\r\n      if (first.ready && first.player) {\r\n        try { first.player.seekTo(at, true); first.player.playVideo(); } catch (e) {}\r\n        if (wantAudio) unlockAudio(); \/\/ still inside the tap, so iPhone allows sound on both players\r\n        try { if (first.player.getPlayerState() === 1) onState(first, 1); } catch (e) {}\r\n        applyCaptions(first); soundCheck(first);\r\n      } else {\r\n        first.startOnReady = at; \/\/ still loading: it starts the moment it is ready\r\n      }\r\n      preloadNext(); \/\/ queue the next video right away\r\n      return true;\r\n    }\r\n    if (PHONE.matches) {\r\n      var kick = function () { setTimeout(prewarm, 800); };\r\n      if (document.readyState === 'complete') kick(); else window.addEventListener('load', kick);\r\n    }\r\n    \/\/ Desktop: build the viewer when the pointer reaches the video, so the click opens it fast.\r\n    box.addEventListener('pointerenter', function () { if (DESK.matches && !modal && !document.hidden) build(); });\r\n    window.addEventListener('popstate', function () { if (modal && !standby) close(true); });\r\n    document.addEventListener('keydown', function (e) {\r\n      if (!modal || standby) return;\r\n      var tg = e.target;\r\n      if (tg && tg.closest && tg.closest('input,select,textarea,[contenteditable=\"true\"]')) return; \/\/ typing in the RFI form\r\n      if (e.key === 'Escape') close(false);\r\n      else if (e.key === 'ArrowDown' || e.key === 'PageDown') { e.preventDefault(); go(idx + 1, 'keyboard'); }\r\n      else if (e.key === 'ArrowUp' || e.key === 'PageUp') { e.preventDefault(); go(idx - 1, 'keyboard'); }\r\n    });\r\n\r\n    \/\/ Tap on the main video (theme turns it into a thumbnail that opens Fancybox): phones get our modal instead.\r\n    document.addEventListener('click', function (e) {\r\n      if (!useModal()) return;\r\n      if (e.target.closest && e.target.closest('.hpu-video-section-iframe')) {\r\n        if (open(0)) { e.preventDefault(); e.stopPropagation(); }\r\n      }\r\n    }, true);\r\n    \/\/ Chapter timestamps: same modal on phones, starting at that time.\r\n    document.addEventListener('click', function (e) {\r\n      if (!useModal() || !e.target.closest) return;\r\n      var inner = e.target.closest('.hpu-video-transcript-text-inner'); if (!inner) return;\r\n      var link = inner.querySelector('.hpu-video-transcript-chapter-time a'); if (!link) return;\r\n      var t = parseInt(new URL(link.href).searchParams.get('t'), 10);\r\n      if (open(isNaN(t) ? 0 : t)) { e.preventDefault(); e.stopPropagation(); }\r\n    }, true);\r\n  })();\r\n\r\n  \/\/ \u2500\u2500 Tag Pills \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  (function() {\r\n    var containers = document.querySelectorAll('.hpu-video-tags');\r\n    if (!containers.length) return;\r\n\r\n    var match = document.body.className.match(\/\\bpostid-(\\d+)\\b\/);\r\n    if (!match) return;\r\n\r\n    var apiRootEl = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\r\n    var apiRoot = (window.wpApiSettings && window.wpApiSettings.root)\r\n      || (apiRootEl && apiRootEl.getAttribute('href'))\r\n      || '\/wp-json\/';\r\n    var url = apiRoot.replace(\/\\\/$\/, '') + '\/wp\/v2\/tags?post=' + match[1] + '&per_page=100';\r\n\r\n    fetch(url)\r\n      .then(function(r) { return r.ok ? r.json() : Promise.reject(); })\r\n      .then(function(tags) {\r\n        if (!tags.length) return;\r\n        var decoder = document.createElement('textarea');\r\n        containers.forEach(function(container) {\r\n          tags.forEach(function(tag) {\r\n            decoder.innerHTML = tag.name;\r\n            var pill = document.createElement('span');\r\n            pill.className = 'hpu-video-tag';\r\n            pill.textContent = decoder.value;\r\n            container.appendChild(pill);\r\n          });\r\n        });\r\n      })\r\n      .catch(function() {});\r\n  })();\r\n\r\n  \/\/ \u2500\u2500 Related Videos: Loader + Scroll Indicators \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  (function() {\r\n    var slider    = document.querySelector('.hpu-related-videos-slider');\r\n    var noResults = document.querySelector('.hpu-related-videos-none');\r\n    var section   = slider && slider.closest('.hpu-related-videos');\r\n    if (!slider || !section) return;\r\n\r\n    \/\/ Scroll indicators \u2014 wired immediately, before any fetch\r\n    function updateIndicators() {\r\n      section.classList.toggle('has-scroll-left',  slider.scrollLeft > 0);\r\n      section.classList.toggle('has-scroll-right',\r\n        slider.scrollLeft + slider.clientWidth < slider.scrollWidth - 1);\r\n    }\r\n    slider.addEventListener('scroll', updateIndicators, { passive: true });\r\n    window.addEventListener('load', updateIndicators);\r\n\r\n    \/\/ Nav chevron buttons\r\n    var prevBtn = document.createElement('button');\r\n    prevBtn.className = 'hpu-rv-nav hpu-rv-nav-prev';\r\n    prevBtn.setAttribute('aria-label', 'Scroll left');\r\n    var prevChev = document.createElement('span');\r\n    prevChev.className = 'hpu-rv-nav-chevron';\r\n    prevBtn.appendChild(prevChev);\r\n    section.appendChild(prevBtn);\r\n\r\n    var nextBtn = document.createElement('button');\r\n    nextBtn.className = 'hpu-rv-nav hpu-rv-nav-next';\r\n    nextBtn.setAttribute('aria-label', 'Scroll right');\r\n    var nextChev = document.createElement('span');\r\n    nextChev.className = 'hpu-rv-nav-chevron';\r\n    nextBtn.appendChild(nextChev);\r\n    section.appendChild(nextBtn);\r\n\r\n    prevBtn.addEventListener('click', function() {\r\n      var firstCard = slider.querySelector('.hpu-related-videos-card, .hpu-rv-skel');\r\n      var n = window.innerWidth <= 1279 ? 2 : 4;\r\n      var dist = firstCard ? (firstCard.offsetWidth + 12) * n : slider.clientWidth * 0.8;\r\n      slider.scrollBy({ left: -dist, behavior: 'smooth' });\r\n    });\r\n    nextBtn.addEventListener('click', function() {\r\n      var firstCard = slider.querySelector('.hpu-related-videos-card, .hpu-rv-skel');\r\n      var n = window.innerWidth <= 1279 ? 2 : 4;\r\n      var dist = firstCard ? (firstCard.offsetWidth + 12) * n : slider.clientWidth * 0.8;\r\n      slider.scrollBy({ left: dist, behavior: 'smooth' });\r\n    });\r\n\r\n    \/\/ Align nav buttons to the vertical center of the thumbnail image row\r\n    function positionNavButtons() {\r\n      var firstThumb = slider.querySelector('.hpu-related-videos-card-thumb, .hpu-rv-skel-thumb');\r\n      if (!firstThumb) return;\r\n      var thumbH = firstThumb.getBoundingClientRect().height;\r\n      if (!thumbH) return; \/\/ element is hidden (display:none tab)\r\n      var top = slider.getBoundingClientRect().top - section.getBoundingClientRect().top + thumbH \/ 2;\r\n      [prevBtn, nextBtn].forEach(function(btn) {\r\n        btn.style.top = top + 'px';\r\n        btn.style.transform = 'translateY(-50%)';\r\n      });\r\n    }\r\n    if (typeof ResizeObserver !== 'undefined') {\r\n      new ResizeObserver(positionNavButtons).observe(section);\r\n    }\r\n    window.addEventListener('resize', positionNavButtons);\r\n\r\n    \/\/ Related videos fetch \u2014 runs after page load, yields to idle work\r\n    function loadRelatedVideos() {\r\n      var match = document.body.className.match(\/\\bpostid-(\\d+)\\b\/);\r\n      if (!match) return;\r\n      var postId = match[1];\r\n\r\n      var apiRootEl = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\r\n      var base = ((window.wpApiSettings && window.wpApiSettings.root)\r\n        || (apiRootEl && apiRootEl.getAttribute('href'))\r\n        || '\/wp-json\/').replace(\/\\\/$\/, '');\r\n\r\n      var decoder = document.createElement('textarea');\r\n      var catId   = null;\r\n\r\n      function showSkeletons() {\r\n        for (var i = 0; i < 5; i++) {\r\n          var skel = document.createElement('div');\r\n          skel.className = 'hpu-rv-skel';\r\n          var t = document.createElement('div');\r\n          t.className = 'hpu-rv-skel-thumb';\r\n          var l1 = document.createElement('div');\r\n          l1.className = 'hpu-rv-skel-line';\r\n          var l2 = document.createElement('div');\r\n          l2.className = 'hpu-rv-skel-line hpu-rv-skel-line-short';\r\n          skel.appendChild(t); skel.appendChild(l1); skel.appendChild(l2);\r\n          slider.appendChild(skel);\r\n        }\r\n      }\r\n\r\n      function shuffle(arr) {\r\n        for (var i = arr.length - 1; i > 0; i--) {\r\n          var j = Math.floor(Math.random() * (i + 1));\r\n          var tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;\r\n        }\r\n        return arr;\r\n      }\r\n\r\n      function appendCard(post) {\r\n        decoder.innerHTML = (post.title && post.title.rendered) ? post.title.rendered : 'Untitled';\r\n        var title    = decoder.value;\r\n        var link     = post.link || '#';\r\n        var embedded = post._embedded && post._embedded['wp:featuredmedia'];\r\n        var thumbUrl = Array.isArray(embedded) && embedded[0] && embedded[0].source_url\r\n          ? embedded[0].source_url : null;\r\n\r\n        var card = document.createElement('a');\r\n        card.className = 'hpu-related-videos-card';\r\n        card.href = link;\r\n\r\n        var thumb = document.createElement('div');\r\n        thumb.className = 'hpu-related-videos-card-thumb';\r\n        if (thumbUrl) {\r\n          var img = document.createElement('img');\r\n          img.src = thumbUrl; img.alt = title; img.loading = 'lazy';\r\n          thumb.appendChild(img);\r\n        } else {\r\n          var ph = document.createElement('div');\r\n          ph.className = 'hpu-related-videos-card-thumb-placeholder';\r\n          thumb.appendChild(ph);\r\n        }\r\n\r\n        var titleEl = document.createElement('div');\r\n        titleEl.className = 'hpu-related-videos-card-title';\r\n        titleEl.textContent = title;\r\n\r\n        card.appendChild(thumb);\r\n        card.appendChild(titleEl);\r\n        slider.appendChild(card);\r\n      }\r\n\r\n      \/\/ Share the related list with the mobile video modal's swipe feed.\r\n      function pushFeed(list) {\r\n        try {\r\n          var add = list.map(function(p) {\r\n            var c = (p.content && p.content.rendered) || '';\r\n            var m = c.match(\/youtube(?:-nocookie)?\\.com\\\/embed\\\/([A-Za-z0-9_-]{11})\/) || JSON.stringify(p.meta || {}).match(\/embed\\\\*\\\/([A-Za-z0-9_-]{11})\/);\r\n            var e = p._embedded && p._embedded['wp:featuredmedia'];\r\n            decoder.innerHTML = (p.title && p.title.rendered) || '';\r\n            return { id: m ? m[1] : null, title: decoder.value, link: p.link, thumb: (Array.isArray(e) && e[0] && e[0].source_url) || null };\r\n          }).filter(function(v) { return v.id; });\r\n          window.hpuRelatedFeed = (window.hpuRelatedFeed || []).concat(add);\r\n          document.dispatchEvent(new CustomEvent('hpu:related-ready'));\r\n        } catch (err) {}\r\n      }\r\n\r\n      var cachedCatId = (function() { try { return sessionStorage.getItem('hpu_rv_cat'); } catch(e) { return null; } })();\r\n\r\n      showSkeletons();\r\n\r\n      Promise.all([\r\n        fetch(base + '\/wp\/v2\/posts\/' + postId + '?_fields=tags')\r\n          .then(function(r) { return r.ok ? r.json() : Promise.reject(); }),\r\n        cachedCatId\r\n          ? Promise.resolve(+cachedCatId)\r\n          : fetch(base + '\/wp\/v2\/categories?slug=hpu-videos&per_page=1&_fields=id')\r\n              .then(function(r) { return r.ok ? r.json() : Promise.reject(); })\r\n              .then(function(cats) {\r\n                if (!cats.length) return Promise.reject();\r\n                try { sessionStorage.setItem('hpu_rv_cat', cats[0].id); } catch(e) {}\r\n                return cats[0].id;\r\n              })\r\n      ])\r\n      .then(function(results) {\r\n        var tagIds = Array.isArray(results[0].tags) ? results[0].tags : [];\r\n        catId = results[1];\r\n        var params = new URLSearchParams({\r\n          categories: catId,\r\n          per_page: 12,\r\n          status: 'publish',\r\n          orderby: 'date',\r\n          order: 'desc',\r\n          exclude: postId,\r\n          _embed: 'wp:featuredmedia'\r\n        });\r\n        if (tagIds.length) params.set('tags', tagIds.join(','));\r\n        return fetch(base + '\/wp\/v2\/posts?' + params)\r\n          .then(function(r) { return r.ok ? r.json() : Promise.reject(); });\r\n      })\r\n        .then(function(posts) {\r\n          var verticalMode = window.innerWidth <= 900;\r\n          slider.innerHTML = '';\r\n          shuffle(posts);\r\n          pushFeed(posts);\r\n          (verticalMode ? posts.slice(0, 6) : posts).forEach(appendCard);\r\n          updateIndicators();\r\n\r\n          if (posts.length < 12 && catId) {\r\n            var excludeIds = [postId].concat(posts.map(function(p) { return p.id; }));\r\n            var backfillParams = new URLSearchParams({\r\n              categories: catId,\r\n              per_page: 12 - posts.length,\r\n              status: 'publish',\r\n              orderby: 'date',\r\n              order: 'desc',\r\n              exclude: excludeIds.join(','),\r\n              _embed: 'wp:featuredmedia'\r\n            });\r\n            fetch(base + '\/wp\/v2\/posts?' + backfillParams)\r\n              .then(function(r) { return r.ok ? r.json() : []; })\r\n              .then(function(extra) {\r\n                if (!extra.length) {\r\n                  if (!slider.children.length) noResults.style.display = 'block';\r\n                  return;\r\n                }\r\n                shuffle(extra);\r\n                pushFeed(extra);\r\n                if (!verticalMode) extra.forEach(appendCard);\r\n                else if (!slider.children.length) noResults.style.display = 'block';\r\n                updateIndicators();\r\n              })\r\n              .catch(function() {\r\n                if (!slider.children.length) noResults.style.display = 'block';\r\n              });\r\n          } else if (!slider.children.length) {\r\n            noResults.style.display = 'block';\r\n          }\r\n        })\r\n        .catch(function() { slider.innerHTML = ''; noResults.style.display = 'block'; });\r\n    }\r\n\r\n    if (document.readyState === 'loading') {\r\n      document.addEventListener('DOMContentLoaded', loadRelatedVideos);\r\n    } else {\r\n      loadRelatedVideos();\r\n    }\r\n  })();\r\n\r\n  \/\/ \u2500\u2500 Dynamic Breadcrumb Logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  (function() {\r\n    try {\r\n      const breadcrumbElements = document.querySelectorAll('.breadcrumbs [property=\"v:title\"]');\r\n      \r\n      breadcrumbElements.forEach(el => {\r\n        if (el.textContent.trim().toLowerCase() === 'hpu videos') {\r\n          const wrapper = el.closest('[typeof=\"v:Breadcrumb\"]');\r\n          \r\n          if (wrapper) {\r\n            \/\/ Find and remove the text node following the span to get rid of the stray \">\"\r\n            const nextNode = wrapper.nextSibling;\r\n            if (nextNode && nextNode.nodeType === Node.TEXT_NODE) {\r\n              nextNode.remove();\r\n            }\r\n            \/\/ Remove the parent span element itself\r\n            wrapper.remove();\r\n          } else {\r\n            \/\/ Fallback: just remove the element if no wrapper is found\r\n            el.remove();\r\n          }\r\n        }\r\n      });\r\n    } catch (error) {\r\n      \/\/ Fail gracefully: Do nothing and prevent JS from breaking\r\n      \/\/ console.warn('Breadcrumb swap skipped.');\r\n    }\r\n  })();\r\n\r\n\r\n\r\n\r\n\r\n\r\n  \/\/ \u2500\u2500 Mobile Transcript Tab \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  (function () {\r\n    const BREAKPOINT       = 1365;\r\n    const LABEL_BREAKPOINT = 767;\r\n\r\n    const transcriptEl = document.getElementById('hpu-video-transcript');\r\n    const sidebarInner = document.querySelector('.hpu-video-sidebar-inner');\r\n    const tabsBar      = document.querySelector('.hpu-video-tabs');\r\n    const videoBody    = document.querySelector('.hpu-video-body');\r\n\r\n    if (!transcriptEl || !sidebarInner || !tabsBar || !videoBody) return;\r\n\r\n    const relatedBtn = tabsBar.querySelector('[data-tab=\"related\"]');\r\n\r\n    \/\/ New tab button\r\n    const tabBtn = document.createElement('button');\r\n    tabBtn.className = 'hpu-video-tab-btn';\r\n    tabBtn.setAttribute('data-tab', 'transcript');\r\n    tabBtn.textContent = 'Chapters & Transcript';\r\n    tabBtn.style.display = 'none';\r\n    tabsBar.appendChild(tabBtn);\r\n\r\n    \/\/ New tab content wrapper\r\n    const tabContent = document.createElement('div');\r\n    tabContent.className = 'hpu-video-tab-content';\r\n    tabContent.id = 'tab-transcript';\r\n    videoBody.appendChild(tabContent);\r\n\r\n    \/\/ Wire new tab button (uses fresh querySelectorAll to cover all tabs\/contents)\r\n    tabBtn.addEventListener('click', () => {\r\n      document.querySelectorAll('.hpu-video-tab-btn').forEach(b => b.classList.remove('active'));\r\n      document.querySelectorAll('.hpu-video-tab-content').forEach(c => c.classList.remove('active'));\r\n      tabBtn.classList.add('active');\r\n      tabContent.classList.add('active');\r\n    });\r\n\r\n    \/\/ Patch existing buttons \u2014 their load-time NodeLists don't include the new tab,\r\n    \/\/ so add a second listener that deactivates it when they're clicked\r\n    tabsBar.querySelectorAll('.hpu-video-tab-btn:not([data-tab=\"transcript\"])').forEach(btn => {\r\n      btn.addEventListener('click', () => {\r\n        tabBtn.classList.remove('active');\r\n        tabContent.classList.remove('active');\r\n      });\r\n    });\r\n\r\n    let currentlyMobile = null;\r\n    let currentlySmall  = null;\r\n\r\n    function applyLayout() {\r\n      const mobile = window.innerWidth <= BREAKPOINT;\r\n      const small  = window.innerWidth <= LABEL_BREAKPOINT;\r\n\r\n      \/\/ \u2500\u2500 Transcript tab: show\/hide at 1365px \u2500\u2500\r\n      if (mobile !== currentlyMobile) {\r\n        currentlyMobile = mobile;\r\n\r\n        if (mobile) {\r\n          tabContent.appendChild(transcriptEl);\r\n          tabBtn.style.display = '';\r\n        } else {\r\n          sidebarInner.appendChild(transcriptEl);\r\n          tabBtn.style.display = 'none';\r\n          \/\/ Fall back to description tab if transcript was active\r\n          if (tabContent.classList.contains('active')) {\r\n            tabContent.classList.remove('active');\r\n            tabBtn.classList.remove('active');\r\n            const descBtn = document.querySelector('[data-tab=\"description\"]');\r\n            const descContent = document.getElementById('tab-description');\r\n            if (descBtn) descBtn.classList.add('active');\r\n            if (descContent) descContent.classList.add('active');\r\n          }\r\n        }\r\n      }\r\n\r\n      \/\/ \u2500\u2500 Tab labels: shorten at 767px \u2500\u2500\r\n      if (small !== currentlySmall) {\r\n        currentlySmall = small;\r\n        tabBtn.textContent = small ? 'Transcript' : 'Chapters & Transcript';\r\n        if (relatedBtn) relatedBtn.textContent = small ? 'Related' : 'Related Videos';\r\n      }\r\n    }\r\n\r\n    applyLayout();\r\n    window.addEventListener('resize', applyLayout);\r\n  })();\r\n<\/script>\r\n\r\n<style>\r\n  \/* \u2500\u2500 HPU Video Article \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n\r\n  .hpu-video-article {\r\n    --purple:     #330072;\r\n    --purple-tint: rgba(51, 0, 114, .08);\r\n    --gray:       #f5f5f5;\r\n    --border:     #e0e0e0;\r\n    --muted:      #6b6b6b;\r\n    --r:          15px;\r\n    --r-sm:       5px;\r\n    --gap:        16px;\r\n  }\r\n  p:empty{\r\n    display: none;\r\n  }\r\n  .hpu-tm-r {\r\n    font-size: .75rem;\r\n  }\r\n\r\n  \/* Suppress page header on video posts *\/\r\n  .archives_related.article-header { display: none; }\r\n\r\n  \/* Widen the WordPress content frame to accommodate the full layout *\/\r\n  .wysiwyg-content.wysiwyg-frame:has(.hpu-video-article) { max-width: 1800px !important; }\r\n\r\n \/* \u2500\u2500 Main Layout \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n.hpu-video-layout {\r\n  display: flex;\r\n  flex-wrap: nowrap;\r\n  gap: var(--gap);\r\n  align-items: stretch;\r\n  max-width: 1800px;\r\n  margin: 0 auto;\r\n}\r\n \r\n.hpu-video-sidebar {\r\n  width: 380px; \r\n  flex-shrink: 0;\r\n  position: relative;\r\n  overflow: hidden; \/* hide native scrollbars *\/\r\n  border-radius: var(--r);\r\n}\r\n\r\n\/* \u2500\u2500 Sidebar Inner (Scroll Container) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n.hpu-video-sidebar-inner {\r\n  position: absolute;\r\n  top: 0; \r\n  left: 0; \r\n  right: 0; \r\n  bottom: 0;\r\n  background: var(--gray);\r\n  padding: 20px;\r\n  border-radius: var(--r);\r\n  overflow-y: auto; \r\n  \r\n  \/* Firefox: Default state is completely invisible *\/\r\n  scrollbar-width: thin; \r\n  scrollbar-color: transparent transparent; \r\n  transition: scrollbar-color 0.3s ease;\r\n}\r\n\r\n\/* Firefox: Hover state *\/\r\n.hpu-video-sidebar-inner:hover {\r\n  scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\r\n}\r\n\r\n\/* WebKit (Chrome, Edge, Safari): Base Structure *\/\r\n.hpu-video-sidebar-inner::-webkit-scrollbar {\r\n  width: 6px; \r\n}\r\n\r\n.hpu-video-sidebar-inner::-webkit-scrollbar-track {\r\n  background: transparent; \r\n}\r\n\r\n\/* WebKit: Default state is completely invisible *\/\r\n.hpu-video-sidebar-inner::-webkit-scrollbar-thumb {\r\n  background: transparent; \r\n  border-radius: 10px;\r\n}\r\n\r\n\/* WebKit: Hover state makes the thumb visible *\/\r\n.hpu-video-sidebar-inner:hover::-webkit-scrollbar-thumb {\r\n  background: rgba(0, 0, 0, 0.2); \r\n}\r\n\r\n\/* \u2500\u2500 Main Video Area \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n.hpu-video-main {\r\n  flex-grow: 1;\r\n  min-width: 0; \r\n}\r\n\r\n  \/* \u2500\u2500 Video player \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-video-section { margin-bottom: 24px; }\r\n\r\n  .hpu-video-section-iframe {\r\n    position: relative;\r\n    aspect-ratio: 16 \/ 9;\r\n    background: #000;\r\n    border-radius: var(--r);\r\n    overflow: hidden;\r\n    box-shadow: 0 4px 24px rgba(0, 0, 0, .14);\r\n  }\r\n\r\n  \/* Flatten WordPress oEmbed wrappers (figure, div, etc.) *\/\r\n  .hpu-video-section-iframe > *,\r\n  .hpu-video-section-iframe .wp-block-embed,\r\n  .hpu-video-section-iframe .wp-block-embed__wrapper {\r\n    position: absolute !important;\r\n    inset: 0 !important;\r\n    width:  100% !important;\r\n    height: 100% !important;\r\n    margin:  0 !important;\r\n    padding: 0 !important;\r\n  }\r\n\r\n  .hpu-video-section-iframe iframe {\r\n    position: absolute;\r\n    inset: 0;\r\n    width:  100%;\r\n    height: 100%;\r\n    border: 0;\r\n  }\r\n\r\n  \/* \u2500\u2500 Tabbed Container \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-video-body {\r\n    background: var(--gray);\r\n    border-radius: var(--r);\r\n    padding: 20px 24px;\r\n  }\r\n\r\n  .hpu-video-tabs {\r\n    display: flex;\r\n    gap: 16px;\r\n    margin-bottom: 16px;\r\n    border-bottom: 2px solid var(--border);\r\n  }\r\n\r\n  .hpu-video-tab-btn {\r\n    background: none;\r\n    border: none;\r\n    padding: 10px 4px;\r\n    cursor: pointer;\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    color: var(--muted);\r\n    position: relative;\r\n    margin-bottom: -2px; \/* overlay the border *\/\r\n    transition: color 0.2s;\r\n  }\r\n\r\n  .hpu-video-tab-btn:hover {\r\n    color: #000;\r\n  }\r\n\r\n  .hpu-video-tab-btn.active:not(:only-child) {\r\n    color: var(--purple);\r\n  }\r\n\r\n  .hpu-video-tab-btn.active:not(:only-child)::after {\r\n    content: '';\r\n    position: absolute;\r\n    bottom: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 2px;\r\n    background: var(--purple);\r\n    border-radius: 2px 2px 0 0;\r\n  }\r\n\r\n  .hpu-video-tab-content {\r\n    display: none;\r\n  }\r\n\r\n  .hpu-video-tab-content.active {\r\n    display: block;\r\n    animation: fadeIn 0.4s ease;\r\n  }\r\n\r\n  @keyframes fadeIn {\r\n    from { opacity: 0; transform: translateY(4px); }\r\n    to { opacity: 1; transform: translateY(0); }\r\n  }\r\n\r\n  .hpu-video-summary p {\r\n    font-size: 14px;\r\n    line-height: 1.7;\r\n    color: var(--muted);\r\n    margin: 0 0 12px;\r\n  }\r\n\r\n  .hpu-video-tags {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 6px;\r\n    margin-top: 4px;\r\n  }\r\n\r\n  .hpu-video-tag {\r\n    display: inline-block;\r\n    font-size: 12px;\r\n    font-weight: 500;\r\n    color: var(--purple);\r\n    background: var(--purple-tint);\r\n    border: 1px solid rgba(51, 0, 114, .18);\r\n    border-radius: 20px;\r\n    padding: 3px 10px;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  \/* \u2500\u2500 CTA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-btn-purple-outline {\r\n    display: inline-block;\r\n    border: 2px solid var(--purple);\r\n    color: var(--purple);\r\n    background: transparent;\r\n    padding: 10px 24px;\r\n    border-radius: 5px;\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    font-family: Bitter, sans-serif;\r\n    text-decoration: none !important;\r\n    transition: all 0.2s ease;\r\n  }\r\n  \r\n  .hpu-btn-purple-outline:hover {\r\n    background: var(--purple);\r\n    color: #fff !important;\r\n  }\r\n\r\n  .hpu-video-cta-container {\r\n    background: #fff;\r\n    padding: 24px;\r\n    text-align: center;\r\n    border: 1px solid var(--border);\r\n    border-radius: var(--r);\r\n    margin-bottom: 20px;\r\n  }\r\n\r\n  #hpu-video-cta { margin-top: 0; }\r\n  \r\n  #hpu-video-cta h2 {\r\n    margin-top: 0;\r\n    margin-bottom: 8px;\r\n    font-size: 20px;\r\n    font-weight: 600;\r\n    line-height: 1.3;\r\n  }\r\n\r\n  #hpu-video-cta p {\r\n    color: var(--muted);\r\n    margin-bottom: 16px;\r\n    font-size: 13px;\r\n  }\r\n\r\n  \/* \u2500\u2500 Transcript container \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-video-transcript {\r\n    background: #fff;\r\n    border: 1px solid var(--border);\r\n    border-radius: var(--r);\r\n    overflow: hidden;\r\n  }\r\n\r\n  \/* \u2500\u2500 Transcript header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-video-transcript-header {\r\n    padding: 16px 20px;\r\n    background: transparent;\r\n    border-bottom: 1px solid var(--border);\r\n  }\r\n\r\n  .hpu-video-transcript-title {\r\n    font-size: 16px;\r\n    font-weight: 500;\r\n    color: #333;\r\n  }\r\n\r\n  .hpu-video-transcript-content {\r\n    background: transparent;\r\n  }\r\n\r\n  \/* \u2500\u2500 FAQ Accordion Chapters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-video-transcript-chapter {\r\n    border-bottom: 1px solid var(--border);\r\n  }\r\n\r\n  .hpu-video-transcript-chapter:last-child { \r\n    border-bottom: none; \r\n  }\r\n\r\n  .hpu-video-transcript-chapter-header {\r\n    padding: 16px 20px;\r\n    cursor: pointer;\r\n    position: relative;\r\n    transition: background-color 0.2s;\r\n  }\r\n\r\n  .hpu-video-transcript-chapter-header:hover {\r\n    background-color: rgba(0,0,0,0.02);\r\n  }\r\n\r\n  \/* Accordion chevron *\/\r\n  .hpu-video-transcript-chapter-header::after {\r\n    content: '';\r\n    position: absolute;\r\n    right: 20px;\r\n    top: 50%;\r\n    transform: translateY(-50%) rotate(45deg); \/* Point straight down *\/\r\n    width: 10px;\r\n    height: 10px;\r\n    border-right: 2px solid var(--muted);\r\n    border-bottom: 2px solid var(--muted);\r\n    transition: transform 0.3s ease;\r\n    transform-origin: 65% 65%;\r\n  }\r\n\r\n  .hpu-video-transcript-chapter.expanded .hpu-video-transcript-chapter-header::after {\r\n    transform: translateY(-50%) rotate(-135deg); \/* Point straight up *\/\r\n  }\r\n\r\n  .hpu-video-transcript-chapter-header-top {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 12px;\r\n    padding-right: 24px; \/* avoid chevron *\/\r\n  }\r\n\r\n  .hpu-video-transcript-chapter-number {\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n    color: #333;\r\n  }\r\n\r\n  \/* h2 preserved for heading hierarchy and AEO *\/\r\n  .hpu-video-transcript-speaker {\r\n    font-size: 16px !important;\r\n    font-weight: 500 !important;\r\n    font-family: Poppins, sans-serif !important;\r\n    color: #333 !important;\r\n    margin: 0 !important;\r\n    line-height: 1.4 !important;\r\n  }\r\n\r\n  .hpu-video-transcript-text-container {\r\n    height: 0;\r\n    overflow: hidden;\r\n    transition: height 0.3s ease;\r\n  }\r\n\r\n  .hpu-video-transcript-text-inner {\r\n    padding: 0 20px 20px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 12px;\r\n    cursor: pointer;\r\n  }\r\n\r\n  .hpu-video-transcript-chapter-time {\r\n    margin-top: 4px;\r\n  }\r\n\r\n  .hpu-video-transcript-chapter-time a {\r\n    font-size: 11px;\r\n    font-weight: 400;\r\n    color: #000;\r\n    text-decoration: none;\r\n    background: var(--purple-tint);\r\n    padding: 3px 8px;\r\n    border-radius: var(--r-sm);\r\n    font-variant-numeric: tabular-nums;\r\n    display: inline-block;\r\n  }\r\n\r\n  .hpu-video-transcript-text-inner:hover .hpu-video-transcript-chapter-time a {\r\n    background: var(--purple);\r\n    color: #fff;\r\n  }\r\n\r\n  .hpu-video-transcript-text {\r\n    font-size: 13px;\r\n    line-height: 1.6;\r\n    color: var(--muted);\r\n    margin: 0;\r\n  }\r\n\r\n  \/* \u2500\u2500 Related Videos \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  .hpu-related-videos {\r\n    position: relative;\r\n  }\r\n\r\n  .hpu-related-videos::before,\r\n  .hpu-related-videos::after {\r\n    content: '';\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: 16px;\r\n    pointer-events: none;\r\n    z-index: 1;\r\n    opacity: 0;\r\n    transition: opacity 0.3s ease;\r\n  }\r\n\r\n  .hpu-related-videos::before {\r\n    left: 0;\r\n    background: linear-gradient(to right, var(--gray), transparent);\r\n  }\r\n\r\n  .hpu-related-videos::after {\r\n    right: 0;\r\n    background: linear-gradient(to left, var(--gray), transparent);\r\n  }\r\n\r\n  .hpu-related-videos.has-scroll-left::before  { opacity: 1; }\r\n  .hpu-related-videos.has-scroll-right::after  { opacity: 1; }\r\n\r\n  .hpu-rv-nav {\r\n    position: absolute;\r\n    top: 50%;\r\n    transform: translateY(-50%);\r\n    width: 48px;\r\n    height: 48px;\r\n    padding: 0;\r\n    background: rgba(255, 255, 255, 0.7);\r\n    border: 1px solid var(--border);\r\n    border-radius: 50%;\r\n    cursor: pointer;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    z-index: 2;\r\n    opacity: 0;\r\n    transition: opacity 0.3s ease;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .hpu-rv-nav-prev { left: 8px; }\r\n  .hpu-rv-nav-next { right: 8px; }\r\n\r\n  .hpu-related-videos.has-scroll-left  .hpu-rv-nav-prev,\r\n  .hpu-related-videos.has-scroll-right .hpu-rv-nav-next {\r\n    opacity: 1;\r\n    pointer-events: auto;\r\n  }\r\n\r\n  .hpu-rv-nav-chevron {\r\n    display: block;\r\n    width: 12px;\r\n    height: 12px;\r\n    border-right: 2.5px solid var(--muted);\r\n    border-bottom: 2.5px solid var(--muted);\r\n  }\r\n\r\n  .hpu-rv-nav-prev .hpu-rv-nav-chevron { transform: rotate(135deg);  margin-left: 3px; }\r\n  .hpu-rv-nav-next .hpu-rv-nav-chevron { transform: rotate(-45deg);  margin-right: 3px; }\r\n\r\n  .hpu-related-videos-none {\r\n    display: none;\r\n    font-size: 13px;\r\n    color: var(--muted);\r\n    margin: 8px 0 0;\r\n  }\r\n\r\n  @keyframes hpu-rv-shimmer {\r\n    0%   { background-position: 200% 0; }\r\n    100% { background-position: -200% 0; }\r\n  }\r\n\r\n  .hpu-rv-skel {\r\n    flex: 0 0 calc((100% - 132px) \/ 4);\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 8px;\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .hpu-rv-skel-thumb {\r\n    width: 100%;\r\n    aspect-ratio: 16 \/ 9;\r\n    border-radius: var(--r-sm);\r\n    background: linear-gradient(90deg, #e8e8e8 25%, #f4f4f4 50%, #e8e8e8 75%);\r\n    background-size: 200% 100%;\r\n    animation: hpu-rv-shimmer 1.4s ease-in-out infinite;\r\n  }\r\n\r\n  .hpu-rv-skel-line {\r\n    height: 12px;\r\n    border-radius: 4px;\r\n    background: linear-gradient(90deg, #e8e8e8 25%, #f4f4f4 50%, #e8e8e8 75%);\r\n    background-size: 200% 100%;\r\n    animation: hpu-rv-shimmer 1.4s ease-in-out infinite;\r\n  }\r\n\r\n  .hpu-rv-skel-line-short {\r\n    width: 60%;\r\n  }\r\n\r\n  .hpu-related-videos-slider {\r\n    display: flex;\r\n    gap: 12px;\r\n    overflow-x: auto;\r\n    min-height: 130px;\r\n    scroll-snap-type: x mandatory;\r\n    -webkit-overflow-scrolling: touch;\r\n    padding-bottom: 6px;\r\n    scroll-padding-left: 48px;\r\n    scrollbar-width: thin;\r\n    scrollbar-color: transparent transparent;\r\n    transition: scrollbar-color 0.3s ease;\r\n  }\r\n\r\n  .hpu-related-videos-slider:hover {\r\n    scrollbar-color: rgba(0, 0, 0, 0.2) transparent;\r\n  }\r\n\r\n  .hpu-related-videos-slider::-webkit-scrollbar { height: 4px; }\r\n  .hpu-related-videos-slider::-webkit-scrollbar-track { background: transparent; }\r\n  .hpu-related-videos-slider::-webkit-scrollbar-thumb {\r\n    background: transparent;\r\n    border-radius: 10px;\r\n  }\r\n  .hpu-related-videos-slider:hover::-webkit-scrollbar-thumb {\r\n    background: rgba(0, 0, 0, 0.2);\r\n  }\r\n\r\n  .hpu-related-videos-card {\r\n    flex: 0 0 calc((100% - 132px) \/ 4);\r\n    scroll-snap-align: start;\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 8px;\r\n    text-decoration: none !important;\r\n    color: inherit;\r\n    transition: transform 0.2s ease;\r\n  }\r\n\r\n  .hpu-related-videos-card:last-child  { scroll-snap-align: end; }\r\n\r\n  .hpu-related-videos-card:hover {\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  .hpu-related-videos-card-thumb {\r\n    width: 100%;\r\n    aspect-ratio: 16 \/ 9;\r\n    border-radius: var(--r-sm);\r\n    overflow: hidden;\r\n    background: #ccc;\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .hpu-related-videos-card-thumb img {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: cover;\r\n    display: block;\r\n    transition: transform 0.3s ease;\r\n  }\r\n\r\n  .hpu-related-videos-card:hover .hpu-related-videos-card-thumb img {\r\n    transform: scale(1.05);\r\n  }\r\n\r\n  .hpu-related-videos-card-thumb-placeholder {\r\n    width: 100%;\r\n    height: 100%;\r\n    background: linear-gradient(135deg, #e0e0e0, #c8c8c8);\r\n  }\r\n\r\n  .hpu-related-videos-card-title {\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    line-height: 1.4;\r\n    color: #111;\r\n    display: -webkit-box;\r\n    -webkit-line-clamp: 2;\r\n    line-clamp: 2;\r\n    -webkit-box-orient: vertical;\r\n    overflow: hidden;\r\n    transition: color 0.2s;\r\n  }\r\n\r\n  .hpu-related-videos-card:hover .hpu-related-videos-card-title {\r\n    color: var(--purple);\r\n  }\r\n\r\n  \/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  @media (max-width: 1365px) {\r\n    .hpu-video-layout {\r\n      flex-direction: column;\r\n    }\r\n\r\n    .hpu-video-sidebar {\r\n      width: 100%;\r\n      order: 2;\r\n    }\r\n    \r\n    .hpu-video-sidebar-inner {\r\n      position: static;\r\n      overflow-y: visible; \/* normal scrolling on mobile *\/\r\n    }\r\n    \r\n    .hpu-video-main {\r\n      order: 1;\r\n      width: 100%;\r\n    }\r\n\r\n   .hpu-video-cta-container { margin-bottom: 0; }\r\n   .hpu-video-main > .hpu-video-cta-container { margin: 20px 0 24px; }\r\n  }\r\n\r\n  @media (max-width: 1279px) {\r\n    .hpu-related-videos-card,\r\n    .hpu-rv-skel {\r\n      flex: 0 0 calc((100% - 108px) \/ 2);\r\n    }\r\n    .hpu-related-videos::before,\r\n    .hpu-related-videos::after { width: 8px; }\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    \/* \u2500\u2500 Related videos: vertical list, 10 items, container fits content \u2500\u2500 *\/\r\n    .hpu-related-videos-slider {\r\n      display: flex !important;\r\n      flex-direction: column !important;\r\n      overflow-x: hidden !important;\r\n      overflow-y: visible !important;\r\n      scroll-snap-type: none !important;\r\n    }\r\n\r\n    .hpu-related-videos-slider > * {\r\n      width: 100% !important;\r\n      min-width: 0 !important;\r\n      flex-shrink: 0;\r\n      transform: none !important;\r\n    }\r\n\r\n    .hpu-related-videos-card,\r\n    .hpu-rv-skel {\r\n      flex: 0 0 auto !important;\r\n    }\r\n\r\n    .hpu-rv-nav { display: none; }\r\n\r\n    \/* \u2500\u2500 Tab button spacing \u2500\u2500 *\/\r\n    .hpu-video-tabs {\r\n      gap: 0;\r\n    }\r\n    .hpu-video-tab-btn {\r\n      flex: 1;\r\n      text-align: center;\r\n      padding: 10px 6px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .hpu-related-videos-card,\r\n    .hpu-rv-skel {\r\n      flex: 0 0 calc(100% - 96px);\r\n    }\r\n    .hpu-related-videos::before,\r\n    .hpu-related-videos::after { width: 4px; }\r\n    .hpu-rv-nav { display: none; }\r\n\r\n    .hpu-related-videos-slider {\r\n      gap: 16px;\r\n    }\r\n    .hpu-related-videos-card-title {\r\n      font-size: 14px;\r\n    }\r\n    .wysiwyg-frame { padding: 0 10px; }\r\n  }\r\n\r\n<\/style><\/div>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>Chapters &amp; Transcript 1 How does High Point University foster student success? 0:00 My name is Cameron Scott. I&#039;m from Queens, New York. I graduated High Point University in 2017. I majored in broadcast journalism. I currently work for Major League Baseball headquarters in New York city. 2 Why do students choose to attend High&#8230;<\/p>\n","protected":false},"author":13788,"featured_media":246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_hpuaeo_plugin_post_data":"{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"VideoObject\",\"@id\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#video\",\"isPartOf\":{\"@id\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#webpage\"},\"name\":\"Destination Success | Cameron Scott\",\"description\":\"Cameron Scott, a 2017 High Point University graduate in broadcast journalism, shares how HPU's caring community and exceptional mentorship\u2014particularly from Dr. Hall\u2014shaped his career trajectory and personal growth. Originally recruited for baseball, Cameron discovered that HPU's supportive environment offered far greater value than athletics alone, ultimately leading to a successful transition into a career with Major League Baseball. He reflects on how choosing to be extraordinary means showing up for yourself and others through continuous personal development and service.\",\"thumbnailUrl\":\"https:\/\/i.ytimg.com\/vi\/3tMQMjEauuc\/maxresdefault.jpg\",\"uploadDate\":\"2023-03-16\",\"duration\":\"PT2M11S\",\"embedUrl\":\"https:\/\/www.youtube.com\/embed\/3tMQMjEauuc\",\"url\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/\",\"sameAs\":[\"https:\/\/www.youtube.com\/watch?v=3tMQMjEauuc\"],\"publisher\":{\"@id\":\"https:\/\/www.highpoint.edu\/#University\"},\"transcript\":\"foreign [Applause] [Music] my name is Cameron Scott I'm from Queens New York I graduated High Point University in 2017. I majored in broadcast journalism I currently work for Major League Baseball headquarters in New York city so I came to High Point University through baseball I was recruited to play baseball here but one of the biggest things that that I realized when I actually stepped foot on campus for my official visit and something that my coaches in high school had always told me my parents had always told me or if you're going to school and you didn't have sports just make sure that it's a place that you would actually love to be and love to learn if you weren't playing sports as soon as I stepped foot on campus I knew that HPU was the place for me the Caring Community caring professors the friends that I had met even on my official visit before even enrolling into campus I really felt at home and I knew that HPU was a place where I could succeed meeting Dr Hall my first day of classes went through the Gauntlet of this is what is offered to you at High Point University this is how we can help you Dr Hall really made me feel at home he was the first person that made me feel at home along with millions of other people at High Point University I stayed very close with Dr Hall through freshman year sophomore year and especially junior year when it was time to start looking for jobs and start looking for internships at that time I had realized that being a professional baseball player wasn't going to be the plan for my life but I always wanted to keep the game in my life that's when Dr Hall connected me to someone at Major League Baseball and from there I just haven't looked back the door opened and High Point University was a huge part of that and Dr Hall choosing to be extraordinary to me means showing up for not only yourself but for others showing up for yourself taking care of yourself developing yourself always having a quest for knowledge passion and faith and doing the same for others I think one of the biggest things and why we're put on this Earth is to help others truly is so showing up for yourself so that you have the capacity to show up for others thank you\",\"keywords\":[\"Cameron Scott\",\"High Point University\",\"Major League Baseball\",\"Baseball\",\"Mentorship\",\"Dr. Hall\",\"Broadcast journalism\",\"Career development\",\"Choose to be Extraordinary\"],\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"How does High Point University foster student success?\",\"description\":\"How does High Point University foster student success\",\"startOffset\":0,\"url\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#t=0\",\"transcript\":\"My name is Cameron Scott. I'm from Queens, New York. I graduated High Point University in 2017. I majored in broadcast journalism. I currently work for Major League Baseball headquarters in New York city.\",\"endOffset\":22},{\"@type\":\"Clip\",\"name\":\"Why do students choose to attend High Point University?\",\"description\":\"Why do students choose to attend High Point University\",\"startOffset\":22,\"url\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#t=22\",\"transcript\":\"So I came to High Point University through baseball. I was recruited to play baseball here, but one of the biggest things that I realized when I actually stepped foot on campus for my official visit\u2014and something that my coaches in high school had always told me, my parents had always told me\u2014or if you're going to school and you didn't have sports, just make sure that it's a place that you would actually love to be and love to learn. If you weren't playing sports, as soon as I stepped foot on campus, I knew that HPU was the place for me. The caring community, caring professors, the friends that I had met even on my official visit before even enrolling into campus\u2014I really felt at home and I knew that HPU was a place where I could succeed.\",\"endOffset\":58},{\"@type\":\"Clip\",\"name\":\"How does High Point University provide student mentorship?\",\"description\":\"How does High Point University provide student mentorship\",\"startOffset\":58,\"url\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#t=58\",\"transcript\":\"Meeting Dr. Hall, my first day of classes went through the Gauntlet\u2014this is what is offered to you at High Point University, this is how we can help you. Dr. Hall really made me feel at home. He was the first person that made me feel at home, along with millions of other people at High Point University. I stayed very close with Dr. Hall through freshman year, sophomore year, and especially junior year when it was time to start looking for jobs and start looking for internships.\",\"endOffset\":83},{\"@type\":\"Clip\",\"name\":\"How does HPU help students land jobs and internships?\",\"description\":\"How does HPU help students land jobs and internships\",\"startOffset\":83,\"url\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#t=83\",\"transcript\":\"At that time I had realized that being a professional baseball player wasn't going to be the plan for my life, but I always wanted to keep the game in my life. That's when Dr. Hall connected me to someone at Major League Baseball, and from there I just haven't looked back. The door opened, and High Point University was a huge part of that.\",\"endOffset\":98},{\"@type\":\"Clip\",\"name\":\"What does it mean to choose to be extraordinary?\",\"description\":\"What does it mean to choose to be extraordinary\",\"startOffset\":98,\"url\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#t=98\",\"transcript\":\"Choosing to be extraordinary to me means showing up for not only yourself but for others. Showing up for yourself, taking care of yourself, developing yourself, always having a quest for knowledge, passion, and faith, and doing the same for others. I think one of the biggest things and why we're put on this Earth is to help others. Truly, showing up for yourself so that you have the capacity to show up for others. Thank you.\",\"endOffset\":131}]},{\"@type\":\"FAQPage\",\"@id\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#faqpage\",\"isPartOf\":{\"@id\":\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#webpage\"},\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How does High Point University foster student success?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"My name is Cameron Scott. I'm from Queens, New York. I graduated High Point University in 2017. I majored in broadcast journalism. I currently work for Major League Baseball headquarters in New York city.\"}},{\"@type\":\"Question\",\"name\":\"Why do students choose to attend High Point University?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"So I came to High Point University through baseball. I was recruited to play baseball here, but one of the biggest things that I realized when I actually stepped foot on campus for my official visit\u2014and something that my coaches in high school had always told me, my parents had always told me\u2014or if you're going to school and you didn't have sports, just make sure that it's a place that you would actually love to be and love to learn. If you weren't playing sports, as soon as I stepped foot on campus, I knew that HPU was the place for me. The caring community, caring professors, the friends that I had met even on my official visit before even enrolling into campus\u2014I really felt at home and I knew that HPU was a place where I could succeed.\"}},{\"@type\":\"Question\",\"name\":\"How does High Point University provide student mentorship?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Meeting Dr. Hall, my first day of classes went through the Gauntlet\u2014this is what is offered to you at High Point University, this is how we can help you. Dr. Hall really made me feel at home. He was the first person that made me feel at home, along with millions of other people at High Point University. I stayed very close with Dr. Hall through freshman year, sophomore year, and especially junior year when it was time to start looking for jobs and start looking for internships.\"}},{\"@type\":\"Question\",\"name\":\"How does HPU help students land jobs and internships?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"At that time I had realized that being a professional baseball player wasn't going to be the plan for my life, but I always wanted to keep the game in my life. That's when Dr. Hall connected me to someone at Major League Baseball, and from there I just haven't looked back. The door opened, and High Point University was a huge part of that.\"}},{\"@type\":\"Question\",\"name\":\"What does it mean to choose to be extraordinary?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Choosing to be extraordinary to me means showing up for not only yourself but for others. Showing up for yourself, taking care of yourself, developing yourself, always having a quest for knowledge, passion, and faith, and doing the same for others. I think one of the biggest things and why we're put on this Earth is to help others. Truly, showing up for yourself so that you have the capacity to show up for others. Thank you.\"}}]}]}","_hpuaeo_plugin_meta_tags":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[2],"tags":[4,5,9],"class_list":["post-29","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hpu-videos","tag-alumni-spotlights","tag-media-entertainment","tag-sports-industry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.9 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Destination Success | Cameron Scott | Watch HPU<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Destination Success | Cameron Scott | Watch HPU\" \/>\n<meta name=\"twitter:description\" content=\"Chapters &amp; Transcript 1 How does High Point University foster student success? 0:00 My name is Cameron Scott. I&#039;m from Queens, New York. I graduated High Point University in 2017. I majored in broadcast journalism. I currently work for Major League Baseball headquarters in New York city. 2 Why do students choose to attend High...\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.highpoint.edu\/watch\/files\/2026\/05\/destination-success-cameron-scott.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"aeobot\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/\"},\"author\":{\"name\":\"aeobot\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/#\\\/schema\\\/person\\\/f25da9285de0d9fcecb04e2579e447c6\"},\"headline\":\"Destination Success | Cameron Scott\",\"datePublished\":\"2026-05-06T19:23:25+00:00\",\"dateModified\":\"2026-05-11T15:12:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/\"},\"wordCount\":575,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/files\\\/2026\\\/05\\\/destination-success-cameron-scott.jpg\",\"keywords\":[\"Alumni Spotlights\",\"Media &amp; Entertainment\",\"Sports Industry\"],\"articleSection\":[\"HPU Videos\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#respond\"]}],\"publisher\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/#University\"},\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/\",\"url\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/\",\"name\":\"Destination Success | Cameron Scott | Watch HPU\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/files\\\/2026\\\/05\\\/destination-success-cameron-scott.jpg\",\"datePublished\":\"2026-05-06T19:23:25+00:00\",\"dateModified\":\"2026-05-11T15:12:10+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/#\\\/schema\\\/person\\\/f25da9285de0d9fcecb04e2579e447c6\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/\"]}],\"publisher\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/#University\"}},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/files\\\/2026\\\/05\\\/destination-success-cameron-scott.jpg\",\"contentUrl\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/files\\\/2026\\\/05\\\/destination-success-cameron-scott.jpg\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/cameron-scott-mlb-broadcast-journalism-hpu-alum\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Destination Success | Cameron Scott\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/#website\",\"url\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/\",\"name\":\"Watch HPU\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/#University\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/#\\\/schema\\\/person\\\/f25da9285de0d9fcecb04e2579e447c6\",\"name\":\"aeobot\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a47823927b1f146f27e8fb23ab760191ad6f9660023944ab144ff01c5135251d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a47823927b1f146f27e8fb23ab760191ad6f9660023944ab144ff01c5135251d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a47823927b1f146f27e8fb23ab760191ad6f9660023944ab144ff01c5135251d?s=96&d=mm&r=g\",\"caption\":\"aeobot\"},\"url\":\"https:\\\/\\\/www.highpoint.edu\\\/watch\\\/author\\\/aeobot\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Destination Success | Cameron Scott | Watch HPU","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/","twitter_card":"summary_large_image","twitter_title":"Destination Success | Cameron Scott | Watch HPU","twitter_description":"Chapters &amp; Transcript 1 How does High Point University foster student success? 0:00 My name is Cameron Scott. I&#039;m from Queens, New York. I graduated High Point University in 2017. I majored in broadcast journalism. I currently work for Major League Baseball headquarters in New York city. 2 Why do students choose to attend High...","twitter_image":"https:\/\/www.highpoint.edu\/watch\/files\/2026\/05\/destination-success-cameron-scott.jpg","twitter_misc":{"Written by":"aeobot","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#article","isPartOf":{"@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/"},"author":{"name":"aeobot","@id":"https:\/\/www.highpoint.edu\/watch\/#\/schema\/person\/f25da9285de0d9fcecb04e2579e447c6"},"headline":"Destination Success | Cameron Scott","datePublished":"2026-05-06T19:23:25+00:00","dateModified":"2026-05-11T15:12:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/"},"wordCount":575,"commentCount":0,"image":{"@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#primaryimage"},"thumbnailUrl":"https:\/\/www.highpoint.edu\/watch\/files\/2026\/05\/destination-success-cameron-scott.jpg","keywords":["Alumni Spotlights","Media &amp; Entertainment","Sports Industry"],"articleSection":["HPU Videos"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#respond"]}],"publisher":{"@id":"https:\/\/www.highpoint.edu\/#University"},"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/www.highpoint.edu\/#organization"}},{"@type":"WebPage","@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/","url":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/","name":"Destination Success | Cameron Scott | Watch HPU","isPartOf":{"@id":"https:\/\/www.highpoint.edu\/watch\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#primaryimage"},"image":{"@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#primaryimage"},"thumbnailUrl":"https:\/\/www.highpoint.edu\/watch\/files\/2026\/05\/destination-success-cameron-scott.jpg","datePublished":"2026-05-06T19:23:25+00:00","dateModified":"2026-05-11T15:12:10+00:00","author":{"@id":"https:\/\/www.highpoint.edu\/watch\/#\/schema\/person\/f25da9285de0d9fcecb04e2579e447c6"},"breadcrumb":{"@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/"]}],"publisher":{"@id":"https:\/\/www.highpoint.edu\/#University"}},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#primaryimage","url":"https:\/\/www.highpoint.edu\/watch\/files\/2026\/05\/destination-success-cameron-scott.jpg","contentUrl":"https:\/\/www.highpoint.edu\/watch\/files\/2026\/05\/destination-success-cameron-scott.jpg","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/www.highpoint.edu\/watch\/cameron-scott-mlb-broadcast-journalism-hpu-alum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.highpoint.edu\/watch\/"},{"@type":"ListItem","position":2,"name":"Destination Success | Cameron Scott"}]},{"@type":"WebSite","@id":"https:\/\/www.highpoint.edu\/watch\/#website","url":"https:\/\/www.highpoint.edu\/watch\/","name":"Watch HPU","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.highpoint.edu\/watch\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US","publisher":{"@id":"https:\/\/www.highpoint.edu\/#University"}},{"@type":"Person","@id":"https:\/\/www.highpoint.edu\/watch\/#\/schema\/person\/f25da9285de0d9fcecb04e2579e447c6","name":"aeobot","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a47823927b1f146f27e8fb23ab760191ad6f9660023944ab144ff01c5135251d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a47823927b1f146f27e8fb23ab760191ad6f9660023944ab144ff01c5135251d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a47823927b1f146f27e8fb23ab760191ad6f9660023944ab144ff01c5135251d?s=96&d=mm&r=g","caption":"aeobot"},"url":"https:\/\/www.highpoint.edu\/watch\/author\/aeobot\/"}]}},"_links":{"self":[{"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/posts\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/users\/13788"}],"replies":[{"embeddable":true,"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/comments?post=29"}],"version-history":[{"count":0,"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/posts\/29\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/media\/246"}],"wp:attachment":[{"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/media?parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/categories?post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.highpoint.edu\/watch\/wp-json\/wp\/v2\/tags?post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}