











{"id":32204,"date":"2026-03-02T19:56:23","date_gmt":"2026-03-02T12:56:23","guid":{"rendered":"https:\/\/happyteachersacademy.com\/community\/?page_id=32204"},"modified":"2026-03-21T09:16:03","modified_gmt":"2026-03-21T02:16:03","slug":"videos","status":"publish","type":"page","link":"https:\/\/happyteachersacademy.com\/community\/","title":{"rendered":""},"content":{"rendered":"    <style>\n        .cvp-activities-page {\n            display: flex;\n            flex-direction: column;\n            gap: 1.5rem;\n            padding: 20px;\n        }\n        .cvp-video-player-wrapper {\n            margin-bottom: 0.5rem;\n        }\n        .cvp-filters-section {\n            margin-bottom: 0.5rem;\n        }\n        \/* Reserve space for star rating images to prevent layout shift *\/\n        .cvp-star-rating img,\n        .user-image-star-rating img {\n            width: 14px;\n            height: 14px;\n            display: inline-block;\n        }\n        @media (min-width: 768px) {\n            .cvp-activities-page {\n                gap: 2rem;\n            }\n        }\n        \/* \u2500\u2500 Mobile page 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 *\/\n        @media (max-width: 767px) {\n            .cvp-activities-page {\n                padding: 0;\n                gap: 0;\n            }\n            .cvp-video-player-wrapper {\n                margin-bottom: 0;\n            }\n            .cvp-filters-section {\n                padding: 1rem;\n            }\n            .cvp-videos-section {\n                padding: 0;\n            }\n            \/* Full-width player on mobile *\/\n            .cvp-video-player-wrapper .cvp-single-video-container {\n                border-radius: 0;\n                border-left: none;\n                border-right: none;\n                box-shadow: none;\n            }\n            .cvp-video-player-wrapper .cvp-single-video-grid {\n                padding: 0;\n            }\n            .cvp-video-player-wrapper .cvp-single-video-area {\n                border-radius: 0;\n            }\n            .cvp-video-player-wrapper .cvp-single-video-details {\n                padding: 1rem 1.5rem;\n            }\n            \/* Sticky mini-player: applied directly to .cvp-single-video-area *\/\n            .cvp-single-video-area {\n                transition: max-height 0.3s ease, border-radius 0.3s ease;\n            }\n            .cvp-single-video-area.cvp-is-sticky {\n                position: fixed !important;\n                top: 0 !important;\n                z-index: 99999 !important;\n                border-radius: 0 !important;\n                overflow: hidden !important;\n                padding: 0 !important;\n                margin: 0 !important;\n                \/* width & height set via inline style in JS to match original size *\/\n            }\n            .cvp-sticky-spacer {\n                display: block;\n            }\n            \/* Sticky filter bar: pins below the sticky video *\/\n            .cvp-filters-section {\n                transition: box-shadow 0.3s ease, padding 0.3s ease, opacity 0.3s ease;\n            }\n            .cvp-filters-section.cvp-filters-sticky {\n                position: fixed !important;\n                left: 0 !important;\n                width: 100% !important;\n                z-index: 99998 !important;\n                background: #fff !important;\n                padding: 0.5rem 1rem !important;\n                margin-top: 0 !important;\n                box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;\n                animation: cvpFilterFadeIn 0.3s ease forwards;\n            }\n            @keyframes cvpFilterFadeIn {\n                from { opacity: 0; transform: translateY(-8px); }\n                to   { opacity: 1; transform: translateY(0); }\n            }\n            .cvp-filters-sticky-spacer {\n                display: block;\n            }\n        }\n    <\/style>\n    <div class=\"cvp-activities-page\">\n            <div id=\"single-video-resources\" class=\"cvp-video-player-wrapper\">\n            <div id=\"single-video-resources\" class=\"cvp-single-video-container\" >\n                \n\t\t<div class=\"cvp-single-video-grid\">\n\t\t\t<!-- Video Area -->\n\t\t\t<div class=\"cvp-single-video-area cvp-single-video-playing\">\n\t\t\t\t<iframe src=\"https:\/\/player.vimeo.com\/video\/1195081016\"\n\t\t\t\t\t\tframeborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen\n\t\t\t\t\t\tstyle=\"position: absolute; inset: 0; width: 100%; height: 100%;\"><\/iframe>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<!-- Details Area -->\n\t\t\t<div class=\"cvp-single-video-details\">\n\t\t\t\t<!-- Type Badge -->\n\t\t\t\t<div class=\"cvp-single-video-badge\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Video Resource<\/div>\n\t\t\t\t\n\t\t\t\t<!-- Title with mobile dots menu -->\n\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-title-row\">\n\t\t\t\t\t<div class=\"cvp-single-video-title-wrap\">\n\t\t\t\t\t\t<h1 class=\"cvp-single-video-title\">HTA Teacher Kickoff#2 - Break the pronunciation loop<\/h1><button type=\"button\" class=\"cvp-desc-more-btn\" data-cvp-info-trigger>...more<\/button>\t\t\t\t\t<\/div>\n\t\t\t\t\t<button type=\"button\" class=\"cvp-mobile-dots-btn\" aria-label=\"More options\" data-cvp-dots-trigger>\n\t\t\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"#374151\" aria-hidden=\"true\" style=\"display:block;\"><circle cx=\"12\" cy=\"5\" r=\"2\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/><circle cx=\"12\" cy=\"19\" r=\"2\"\/><\/svg>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t<!-- Author and Rating Row -->\n\t\t\t\t<div class=\"cvp-single-video-author-row\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-author\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/251\/69c56f9ab5b7f-bpthumb.jpg\" alt=\"L\u00e2m T\u01b0\u1eddng Duy L\u00e2m\" class=\"cvp-single-video-author-avatar\" \/>\n\t\t\t\t\t\t\t<span class=\"cvp-single-video-author-name\">L\u00e2m T\u01b0\u1eddng Duy L\u00e2m<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-divider\"><\/div>\t\t\t\t\t\t<div class=\"cvp-single-video-author\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/144\/680ef495b3e64-bpthumb.jpg\" alt=\"Hi\u1ec1n \u0110inh\" class=\"cvp-single-video-author-avatar\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cvp-single-video-author-name\">Hi\u1ec1n \u0110inh<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<div class=\"cvp-single-video-rating\">\n\t\t\t\t\t\t<span class=\"cvp-single-video-rating-number\">5.0<\/span>\n\t\t\t\t\t\t<div class=\"cvp-single-video-stars user-image-star-rating\" data-post-id=\"35582\" data-average=\"5\" data-count=\"1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"1\" class=\"user-star-img\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"2\" class=\"user-star-img\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"3\" class=\"user-star-img\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"4\" class=\"user-star-img\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"5\" class=\"user-star-img\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t<script>\n\t\t\t\t(function(){\n\t\t\t\t\tvar row = document.querySelector('.cvp-single-video-author-row');\n\t\t\t\t\tif (!row) return;\n\t\t\t\t\tfunction checkOverflow() {\n\t\t\t\t\t\trow.classList.remove('cvp-avatars-only');\n\t\t\t\t\t\tif (row.scrollWidth > row.clientWidth) {\n\t\t\t\t\t\t\trow.classList.add('cvp-avatars-only');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcheckOverflow();\n\t\t\t\t\twindow.addEventListener('resize', checkOverflow);\n\t\t\t\t})();\n\t\t\t\t<\/script>\n\n\t\t\t\t<!-- Rating and Rate CTA Row -->\n\t\t\t\t<div class=\"cvp-single-video-rating-row\">\n\t\t\t\t\t<div class=\"cvp-single-video-rating cvp-rating-display\">\n\t\t\t\t\t\t<span class=\"cvp-single-video-rating-number\">5.0<\/span>\n\t\t\t\t\t\t<div class=\"cvp-single-video-stars\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t<!-- Meta Info Bar -->\n\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-meta-bar\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-meta-item cvp-meta-duration\">58 mins<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-meta-item\">Vietnamese<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n\t\t\t\t<!-- Description -->\n\t\t\t\t\t\t\t\t<div class=\"cvp-single-video-description\">\n\t\t\t\t\tWelcome to HTA Teacher Kickoff, Happy Teachers Academy\u2019s biweekly online meetup series where teachers come together to connect, learn, and discuss rea...\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t<!-- Self-Study Badge -->\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t<!-- Mobile Info Slide-Up Modal -->\n\t\t<div class=\"cvp-info-modal-overlay\" id=\"cvp-info-modal-overlay\"><\/div>\n\t\t<div class=\"cvp-info-modal-sheet\" id=\"cvp-info-modal-sheet\">\n\t\t\t<div class=\"cvp-info-modal-handle\"><span><\/span><\/div>\n\t\t\t<div class=\"cvp-info-modal-body\">\n\t\t\t\t<h2>HTA Teacher Kickoff#2 - Break the pronunciation loop<\/h2>\n\t\t\t\t\t\t\t\t<div class=\"cvp-info-modal-stars\">\n\t\t\t\t\t<span class=\"cvp-single-video-rating-number\">5.0<\/span>\n\t\t\t\t\t<div class=\"cvp-single-video-stars\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png\" alt=\"\" \/>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-info-modal-meta\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-info-modal-meta-row\">\n\t\t\t\t\t\t<span class=\"cvp-info-modal-meta-label\">Creator<\/span>\n\t\t\t\t\t\t<span class=\"cvp-info-modal-meta-value\">L\u00e2m T\u01b0\u1eddng Duy L\u00e2m, Hi\u1ec1n \u0110inh<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-info-modal-meta-row\">\n\t\t\t\t\t\t<span class=\"cvp-info-modal-meta-label\">Language<\/span>\n\t\t\t\t\t\t<span class=\"cvp-info-modal-meta-value\">Vietnamese<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"cvp-info-modal-desc\">Welcome to HTA Teacher Kickoff, Happy Teachers Academy\u2019s biweekly online meetup series where teachers come together to connect, learn, and discuss real classroom challenges while keeping their passion for teaching alive.\r\nEach episode features a special guest speaker joining our host, Mr. \u0110a-Duy-N\u0103ng, for engaging conversations that explore authentic teaching situations, share practical insights, and provide actionable strategies that teachers can apply immediately in their own classrooms.\r\nA cozy community talk for ESL teachers to share the common challenges of correcting students\u2019 pronunciation. No complicated theories or formal lectures \u2014 just real stories, honest perspectives, and practical classroom experiences with host Lam Tuong Duy and guest speaker Hien Thi Thu Dinh.<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<script>\n\t\t(function(){\n\t\t\tvar overlay = document.getElementById('cvp-info-modal-overlay');\n\t\t\tvar sheet   = document.getElementById('cvp-info-modal-sheet');\n\t\t\tif (!overlay || !sheet) return;\n\t\t\tfunction openModal() { overlay.classList.add('cvp-modal-open'); sheet.classList.add('cvp-modal-open'); }\n\t\t\tfunction closeModal() { overlay.classList.remove('cvp-modal-open'); sheet.classList.remove('cvp-modal-open'); }\n\t\t\tdocument.querySelectorAll('[data-cvp-info-trigger]').forEach(function(btn){ btn.addEventListener('click', openModal); });\n\t\t\toverlay.addEventListener('click', closeModal);\n\t\t\tsheet.querySelector('.cvp-info-modal-handle').addEventListener('click', closeModal);\n\t\t})();\n\t\t<\/script>\n\n\t\t<!-- Mobile Dots Menu Bottom Sheet -->\n\t\t<div class=\"cvp-dots-sheet-overlay\" id=\"cvp-dots-sheet-overlay\"><\/div>\n\t\t<div class=\"cvp-dots-sheet\" id=\"cvp-dots-sheet\" role=\"dialog\">\n\t\t\t<div class=\"cvp-card-sheet-handle\"><span><\/span><\/div>\n\t\t\t<button type=\"button\" class=\"cvp-card-sheet-option\" id=\"cvp-dots-sheet-share\">\n\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"18\" cy=\"5\" r=\"3\"\/><circle cx=\"6\" cy=\"12\" r=\"3\"\/><circle cx=\"18\" cy=\"19\" r=\"3\"\/><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"\/><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"\/><\/svg>\n\t\t\t\t<span>Share Video<\/span>\n\t\t\t<\/button>\n\t\t\t\t\t\t<button type=\"button\" class=\"cvp-card-sheet-cancel\" id=\"cvp-dots-sheet-cancel\">Cancel<\/button>\n\t\t<\/div>\n\t\t<script>\n\t\t(function(){\n\t\t\tvar dotsOverlay = document.getElementById('cvp-dots-sheet-overlay');\n\t\t\tvar dotsSheet   = document.getElementById('cvp-dots-sheet');\n\t\t\tif (!dotsOverlay || !dotsSheet) return;\n\n\t\t\tfunction openDots() { dotsOverlay.classList.add('cvp-sheet-open'); dotsSheet.classList.add('cvp-sheet-open'); }\n\t\t\tfunction closeDots() { dotsOverlay.classList.remove('cvp-sheet-open'); dotsSheet.classList.remove('cvp-sheet-open'); }\n\n\t\t\tdocument.querySelectorAll('[data-cvp-dots-trigger]').forEach(function(btn){ btn.addEventListener('click', openDots); });\n\t\t\tdotsOverlay.addEventListener('click', closeDots);\n\t\t\tvar cancelBtn = document.getElementById('cvp-dots-sheet-cancel');\n\t\t\tif (cancelBtn) cancelBtn.addEventListener('click', closeDots);\n\n\t\t\t\/* Share *\/\n\t\t\tvar shareBtn = document.getElementById('cvp-dots-sheet-share');\n\t\t\tvar shareUrl = \"https:\\\/\\\/happyteachersacademy.com\\\/community\\\/?video=35582\";\n\t\t\tif (shareBtn) shareBtn.addEventListener('click', function() {\n\t\t\t\tcloseDots();\n\t\t\t\tif (navigator.share) {\n\t\t\t\t\tnavigator.share({ title: document.title, url: shareUrl });\n\t\t\t\t} else {\n\t\t\t\t\tnavigator.clipboard.writeText(shareUrl).then(function() { alert('Link copied!'); });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t\/* Add to Playlist *\/\n\t\t\tvar playlistBtn = document.getElementById('cvp-dots-sheet-playlist');\n\t\t\tif (playlistBtn) playlistBtn.addEventListener('click', function() {\n\t\t\t\tcloseDots();\n\t\t\t\tvar videoId = 35582;\n\t\t\t\tvar ajaxUrl = 'https:\/\/happyteachersacademy.com\/community\/wp-admin\/admin-ajax.php';\n\t\t\t\tvar nonce   = '2ecd441903';\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\t\txhr.open('POST', ajaxUrl, true);\n\t\t\t\txhr.setRequestHeader('Content-Type', 'application\/x-www-form-urlencoded');\n\t\t\t\txhr.onload = function() {\n\t\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tvar res = JSON.parse(xhr.responseText);\n\t\t\t\t\t\t\tif (res.success) {\n\t\t\t\t\t\t\t\tplaylistBtn.querySelector('span').textContent = res.data.new_status === 'favorite' ? 'Remove from Playlist' : 'Add to Playlist';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\txhr.send('action=cvp_toggle_favorite&post_id=' + videoId + '&nonce=' + nonce);\n\t\t\t});\n\n\t\t\t\/* Swipe-down to close *\/\n\t\t\tvar startY = 0;\n\t\t\tdotsSheet.addEventListener('touchstart', function(e) { startY = e.touches[0].clientY; }, { passive: true });\n\t\t\tdotsSheet.addEventListener('touchend', function(e) {\n\t\t\t\tif (e.changedTouches[0].clientY - startY > 60) closeDots();\n\t\t\t}, { passive: true });\n\t\t})();\n\t\t<\/script>\n\n\t\t<!-- Mobile Rate Slide-Up Modal -->\n\t\t<div class=\"cvp-rate-modal-overlay\" id=\"cvp-rate-modal-overlay\"><\/div>\n\t\t<div class=\"cvp-rate-modal-sheet\" id=\"cvp-rate-modal-sheet\">\n\t\t\t<div class=\"cvp-info-modal-handle\"><span><\/span><\/div>\n\t\t\t<div class=\"cvp-rate-modal-body\">\n\t\t\t\t<h2>Rate this Video<\/h2>\n\t\t\t\t<p class=\"cvp-rate-modal-subtitle\">How would you rate: <em>HTA Teacher Kickoff#2 - Break the pronunciation loop<\/em>?<\/p>\n\t\t\t\t<div class=\"cvp-rate-modal-stars\" id=\"cvp-rate-modal-stars\" data-post-id=\"35582\">\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"1\" class=\"cvp-rate-star-img\" alt=\"1 star\" \/>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"2\" class=\"cvp-rate-star-img\" alt=\"2 star\" \/>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"3\" class=\"cvp-rate-star-img\" alt=\"3 star\" \/>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"4\" class=\"cvp-rate-star-img\" alt=\"4 star\" \/>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png\" data-value=\"5\" class=\"cvp-rate-star-img\" alt=\"5 star\" \/>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<button type=\"button\" class=\"cvp-rate-modal-confirm\" id=\"cvp-rate-modal-confirm\" disabled>Confirm Rating<\/button>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<script>\n\t\t(function(){\n\t\t\tvar overlay = document.getElementById('cvp-rate-modal-overlay');\n\t\t\tvar sheet = document.getElementById('cvp-rate-modal-sheet');\n\t\t\tvar starsWrap = document.getElementById('cvp-rate-modal-stars');\n\t\t\tvar confirmBtn = document.getElementById('cvp-rate-modal-confirm');\n\t\t\tif (!overlay || !sheet || !starsWrap || !confirmBtn) return;\n\n\t\t\tvar full = 'https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/star-full.png';\n\t\t\tvar empty = 'https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.54.58.png';\n\t\t\tvar stars = starsWrap.querySelectorAll('.cvp-rate-star-img');\n\t\t\tvar selectedRating = 0;\n\n\t\t\tfunction renderStars(val) {\n\t\t\t\tstars.forEach(function(s, i) { s.src = (i + 1) <= val ? full : empty; });\n\t\t\t}\n\t\t\tfunction requireLogin() {\n\t\t\t\tif (typeof cvp_rating_data !== 'undefined' && !cvp_rating_data.isLoggedIn) {\n\t\t\t\t\twindow.location.href = cvp_rating_data.loginUrl + (cvp_rating_data.loginUrl.indexOf('?') > -1 ? '&' : '?') + 'redirect_to=' + encodeURIComponent(window.location.href);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfunction openModal() { if (requireLogin()) return; overlay.classList.add('cvp-modal-open'); sheet.classList.add('cvp-modal-open'); }\n\t\t\tfunction closeModal() { overlay.classList.remove('cvp-modal-open'); sheet.classList.remove('cvp-modal-open'); selectedRating = 0; renderStars(0); confirmBtn.disabled = true; }\n\n\t\t\tdocument.querySelectorAll('[data-cvp-rate-trigger]').forEach(function(btn) { btn.addEventListener('click', openModal); });\n\t\t\toverlay.addEventListener('click', closeModal);\n\t\t\tsheet.querySelector('.cvp-info-modal-handle').addEventListener('click', closeModal);\n\n\t\t\tstars.forEach(function(star) {\n\t\t\t\tstar.addEventListener('click', function() {\n\t\t\t\t\tselectedRating = parseInt(this.dataset.value);\n\t\t\t\t\trenderStars(selectedRating);\n\t\t\t\t\tconfirmBtn.disabled = false;\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tconfirmBtn.addEventListener('click', function() {\n\t\t\t\tif (!selectedRating) return;\n\t\t\t\tconfirmBtn.textContent = 'Submitting...';\n\t\t\t\tconfirmBtn.disabled = true;\n\t\t\t\tvar postId = starsWrap.dataset.postId;\n\t\t\t\tfetch(cvp_rating_data.ajax_url, {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n\t\t\t\t\tbody: new URLSearchParams({ action: 'cvp_submit_star_rating', post_id: postId, rating: selectedRating, nonce: cvp_rating_data.nonce })\n\t\t\t\t})\n\t\t\t\t.then(function(r) { return r.json(); })\n\t\t\t\t.then(function(data) {\n\t\t\t\t\tconfirmBtn.textContent = 'Thank you!';\n\t\t\t\t\tsetTimeout(function() { closeModal(); confirmBtn.textContent = 'Confirm Rating'; }, 1200);\n\t\t\t\t\tif (typeof initStarRatings === 'function') {\n\t\t\t\t\t\tdocument.querySelectorAll('.user-image-star-rating').forEach(function(c) { c.removeAttribute('data-bound'); });\n\t\t\t\t\t\tinitStarRatings();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(function() { confirmBtn.textContent = 'Error, try again'; confirmBtn.disabled = false; });\n\t\t\t});\n\t\t})();\n\t\t<\/script>\n    <\/div>\n\n        <\/div>\n        <style>\n        \/* \u2500\u2500 Unified filter card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-filter-card {\n            background: #fff;\n            border-radius: 0.75rem;\n            border: 1px solid #e2e8f0;\n            padding: 1.5rem;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.03);\n            margin-bottom: 1.5rem;\n        }\n        .cvp-filter-card-inner {\n            display: flex;\n            flex-direction: column;\n            gap: 1.5rem;\n        }\n\n        \/* \u2500\u2500 Row 1: type pills + search \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-filter-row-top {\n            display: flex;\n            flex-direction: column;\n            gap: 1rem;\n        }\n        @media (min-width: 768px) {\n            .cvp-filter-row-top {\n                flex-direction: row;\n                align-items: center;\n                justify-content: space-between;\n            }\n        }\n        .cvp-type-pills {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 0.5rem;\n            align-items: center;\n        }\n        .cvp-video-type-btn {\n            display: inline-flex;\n            align-items: center;\n            padding: 0.625rem 1.25rem;\n            font-size: 14px;\n            font-weight: 600;\n            border-radius: 0.5rem;\n            cursor: pointer;\n            transition: all 0.2s ease;\n            white-space: nowrap;\n            line-height: 1.4;\n            background: #fff;\n            border: 1px solid #e2e8f0;\n            color: #475569;\n        }\n        .cvp-video-type-btn:hover {\n            border-color: #efbf6d;\n            color: #efbf6d;\n            background: #fdf8ef;\n        }\n        .cvp-video-type-btn.active {\n            background: #efbf6d;\n            border-color: #efbf6d;\n            color: #fff;\n            box-shadow: 0 1px 2px rgba(0,0,0,0.1);\n        }\n        \/* \u2500\u2500 More dropdown (overflow pills) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-more-dropdown {\n            position: relative;\n            display: inline-flex;\n            align-items: center;\n        }\n        .cvp-more-btn {\n            display: inline-flex;\n            align-items: center;\n            padding: 0.625rem 1.25rem;\n            font-size: 14px;\n            font-weight: 600;\n            border-radius: 0.5rem;\n            cursor: pointer;\n            transition: all 0.2s ease;\n            white-space: nowrap;\n            line-height: 1.4;\n            background: #fff;\n            border: 1px solid #e2e8f0;\n            color: #475569;\n            gap: 0.375rem;\n        }\n        .cvp-more-btn:hover {\n            border-color: #efbf6d;\n            color: #efbf6d;\n            background: #fdf8ef;\n        }\n        .cvp-more-btn.has-active {\n            background: #fdf8ef;\n            border-color: #efbf6d;\n            color: #b8860b;\n        }\n        .cvp-more-arrow {\n            font-size: 10px;\n            transition: transform 0.2s;\n        }\n        .cvp-more-dropdown.open .cvp-more-arrow {\n            transform: rotate(180deg);\n        }\n        .cvp-more-menu {\n            display: none;\n            position: absolute;\n            top: calc(100% + 0.375rem);\n            left: 0;\n            min-width: 12rem;\n            background: #fff;\n            border: 1px solid #e2e8f0;\n            border-radius: 0.5rem;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n            padding: 0.375rem;\n            z-index: 100;\n            flex-direction: column;\n            gap: 0.25rem;\n        }\n        .cvp-more-dropdown.open .cvp-more-menu {\n            display: flex;\n        }\n        .cvp-more-menu .cvp-video-type-btn {\n            width: 100%;\n            justify-content: flex-start;\n            border: none;\n            border-radius: 0.375rem;\n            background: transparent;\n        }\n        .cvp-more-menu .cvp-video-type-btn:hover {\n            background: #fdf8ef;\n        }\n        .cvp-more-menu .cvp-video-type-btn.active {\n            background: #efbf6d;\n            color: #fff;\n        }\n\n        .cvp-search-wrapper {\n            position: relative;\n            width: 100%;\n        }\n        @media (min-width: 768px) {\n            .cvp-search-wrapper { width: 20rem; flex-shrink: 0; }\n        }\n        .cvp-search-input {\n            width: 100%;\n            box-sizing: border-box;\n            height: 36px;\n            padding: 0 0.625rem;\n            border: 1px solid #e2e8f0;\n            border-radius: 0.5rem;\n            font-size: 13px;\n            background: #f8fafc;\n            color: #334155;\n            transition: border-color 0.2s, box-shadow 0.2s;\n        }\n        .cvp-search-input::placeholder { color: #94a3b8; }\n        .cvp-search-input:focus {\n            outline: none;\n            border-color: #e76e3c;\n            box-shadow: 0 0 0 3px rgba(231,110,60,0.1);\n            background: #fff;\n        }\n\n        \/* \u2500\u2500 Row 2: dropdowns left, actions right \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-filter-row-secondary {\n            display: flex;\n            flex-direction: column !important;\n            gap: 1rem;\n        }\n        @media (min-width: 1440px) {\n            .cvp-filter-row-secondary {\n                flex-direction: row !important;\n                align-items: flex-end;\n                justify-content: space-between;\n            }\n        }\n        .cvp-filter-groups {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 1rem;\n            align-items: flex-end;\n        }\n        @media (min-width: 768px) and (max-width: 1439px) {\n            .cvp-filter-groups {\n                width: 100%;\n            }\n            .cvp-filter-group {\n                min-width: 0;\n            }\n            .cvp-filter-select {\n                width: 100%;\n            }\n            .cvp-filter-actions-right {\n                width: 100%;\n                justify-content: flex-start;\n                padding-top: 0.25rem;\n            }\n        }\n        .cvp-filter-group {\n            display: flex;\n            flex-direction: column;\n            gap: 0.375rem;\n        }\n        .cvp-filter-group-label {\n            display: block;\n            font-size: 10px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 0.08em;\n            color: #94a3b8;\n            margin-left: 0.25rem;\n        }\n        .cvp-filter-select {\n            width: 11rem;\n            min-width: 0;\n            height: 42px;\n            padding: 0 2.25rem 0 0.875rem;\n            border: 1px solid #e2e8f0;\n            border-radius: 0.5rem;\n            font-size: 14px;\n            font-weight: 500;\n            color: #334155;\n            background-color: #f8fafc;\n            background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C\/polyline%3E%3C\/svg%3E\");\n            background-repeat: no-repeat;\n            background-position: right 0.5rem center;\n            appearance: none;\n            -webkit-appearance: none;\n            transition: border-color 0.2s, box-shadow 0.2s;\n            cursor: pointer;\n            box-sizing: border-box;\n        }\n        .cvp-filter-select:focus {\n            outline: none;\n            border-color: #e76e3c;\n            box-shadow: 0 0 0 3px rgba(231,110,60,0.1);\n            background-color: #fff;\n        }\n        .cvp-filter-actions-right {\n            display: flex;\n            flex-wrap: wrap;\n            align-items: center;\n            gap: 1.5rem;\n        }\n        .cvp-filter-toggles {\n            display: flex;\n            align-items: center;\n            gap: 1.5rem;\n        }\n        .cvp-toggle-label {\n            display: inline-flex;\n            align-items: center;\n            cursor: pointer;\n        }\n        .cvp-toggle-input {\n            position: absolute;\n            width: 1px;\n            height: 1px;\n            overflow: hidden;\n            clip: rect(0,0,0,0);\n            border: 0;\n        }\n        .cvp-toggle-switch {\n            width: 2.5rem;\n            height: 1.25rem;\n            background: #cbd5e1;\n            border-radius: 9999px;\n            position: relative;\n            flex-shrink: 0;\n            transition: background 0.2s;\n        }\n        .cvp-toggle-switch::after {\n            content: '';\n            position: absolute;\n            top: 2px;\n            left: 2px;\n            width: 1rem;\n            height: 1rem;\n            background: #fff;\n            border: 1px solid #d1d5db;\n            border-radius: 50%;\n            transition: transform 0.2s;\n        }\n        .cvp-toggle-input:checked + .cvp-toggle-switch { background: #e76e3c; }\n        .cvp-toggle-input:checked + .cvp-toggle-switch::after {\n            transform: translateX(1.25rem);\n            border-color: #fff;\n        }\n        .cvp-toggle-text {\n            margin-left: 0.625rem;\n            font-size: 14px;\n            font-weight: 500;\n            color: #334155;\n            white-space: nowrap;\n        }\n        .cvp-filter-vdivider {\n            width: 1px;\n            height: 1.5rem;\n            background: #e2e8f0;\n        }\n        @media (max-width: 640px) { .cvp-filter-vdivider { display: none; } }\n        .cvp-reset-btn {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.375rem;\n            font-size: 14px;\n            font-weight: 600;\n            color: #475569;\n            background: none;\n            border: none;\n            padding: 0;\n            cursor: pointer;\n            transition: color 0.2s;\n            white-space: nowrap;\n        }\n        .cvp-reset-btn:hover { color: #e76e3c; }\n        .cvp-reset-btn svg { display: block; }\n\n        \/* \u2500\u2500 Active filters row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-active-filters-row {\n            padding-top: 0.75rem;\n            border-top: 1px solid #f1f5f9;\n            display: flex;\n            flex-wrap: wrap;\n            align-items: center;\n            gap: 0.5rem;\n        }\n        .cvp-active-filters-label {\n            font-size: 9px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 0.08em;\n            color: #94a3b8;\n            white-space: nowrap;\n        }\n        .cvp-active-filters-list {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 0.375rem;\n        }\n        \/* Close button inside .hta-filter-pill *\/\n        .hta-filter-pill {\n            padding: 3px 8px !important;\n            font-size: 11px !important;\n            gap: 4px !important;\n        }\n        .hta-filter-pill .cvp-pill-remove {\n            display: inline-flex;\n            align-items: center;\n            background: none;\n            border: none;\n            padding: 0;\n            margin-left: 4px;\n            cursor: pointer;\n            color: inherit;\n            opacity: 0.7;\n            transition: opacity 0.15s;\n            line-height: 1;\n        }\n        .hta-filter-pill .cvp-pill-remove:hover { opacity: 1; }\n        .hta-filter-pill .cvp-pill-remove svg { display: block; }\n\n        \/* \u2500\u2500 Mobile filter bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-mobile-filter-btn {\n            display: none;\n        }\n        .cvp-mobile-search-btn {\n            display: none;\n        }\n        @media (max-width: 767px) {\n            .cvp-mobile-filter-btn {\n                display: inline-flex;\n                align-items: center;\n                gap: 0.375rem;\n                padding: 0.5rem 0.75rem;\n                border-radius: 0.5rem;\n                font-weight: 700;\n                font-size: 13px;\n                border: none;\n                cursor: pointer;\n                flex-shrink: 0;\n                background: #f1f5f9;\n                color: #334155;\n            }\n            .cvp-mobile-filter-btn svg {\n                flex-shrink: 0;\n            }\n            .cvp-mobile-filter-btn.active {\n                background: #e76e3c;\n                color: #fff;\n            }\n            .cvp-mobile-filter-btn.active svg {\n                stroke: #fff;\n            }\n            .cvp-filter-row-top {\n                flex-direction: row !important;\n                align-items: center;\n                gap: 0.75rem;\n            }\n            .cvp-type-pills { display: none !important; }\n            .cvp-search-wrapper { display: none !important; }\n            .cvp-mobile-search-btn {\n                display: inline-flex !important;\n                align-items: center;\n                gap: 0.375rem;\n                padding: 0.5rem 0.75rem;\n                border-radius: 0.5rem;\n                font-weight: 700;\n                font-size: 13px;\n                border: none;\n                cursor: pointer;\n                flex-shrink: 0;\n                background: #f1f5f9;\n                color: #334155;\n            }\n            .cvp-mobile-search-btn svg {\n                flex-shrink: 0;\n            }\n            \/* Hide the inline secondary row on mobile \u2014 modal replaces it *\/\n            .cvp-filter-row-secondary {\n                display: none !important;\n            }\n            .cvp-filter-card {\n                padding: 0;\n                border: none;\n                box-shadow: none;\n                background: transparent;\n                margin-bottom: 0;\n            }\n            .cvp-filter-card-inner {\n                gap: 0.75rem;\n            }\n            .cvp-filters-section {\n                margin-bottom: 0;\n            }\n        }\n\n        \/* \u2500\u2500 Filter slide-up modal (mobile) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-filter-modal-overlay {\n            position: fixed;\n            inset: 0;\n            z-index: 100000;\n            background: rgba(0, 0, 0, 0.4);\n            opacity: 0;\n            visibility: hidden;\n            transition: opacity 0.3s ease, visibility 0.3s ease;\n        }\n        .cvp-filter-modal-overlay.cvp-modal-open {\n            opacity: 1;\n            visibility: visible;\n        }\n        .cvp-filter-modal-sheet {\n            position: fixed;\n            bottom: 0;\n            left: 0;\n            right: 0;\n            z-index: 100001;\n            background: #fff;\n            border-radius: 1rem 1rem 0 0;\n            max-height: 80vh;\n            overflow-y: auto;\n            transform: translateY(100%);\n            transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1);\n            box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.12);\n        }\n        .cvp-filter-modal-overlay.cvp-modal-open + .cvp-filter-modal-sheet,\n        .cvp-filter-modal-sheet.cvp-modal-open {\n            transform: translateY(0);\n        }\n        .cvp-filter-modal-handle {\n            display: flex;\n            justify-content: center;\n            padding: 0.75rem 0 0.25rem;\n        }\n        .cvp-filter-modal-handle span {\n            width: 2rem;\n            height: 4px;\n            background: #d1d5db;\n            border-radius: 9999px;\n        }\n        .cvp-filter-modal-body {\n            padding: 0.5rem 1.5rem 2rem;\n        }\n        .cvp-filter-modal-header {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            margin-bottom: 1.25rem;\n        }\n        .cvp-filter-modal-header h3 {\n            font-size: 1.125rem;\n            font-weight: 700;\n            color: #111827;\n            margin: 0;\n        }\n        .cvp-filter-modal-close {\n            background: none;\n            border: none;\n            cursor: pointer;\n            padding: 4px;\n            color: #6b7280;\n        }\n        .cvp-filter-modal-group {\n            margin-bottom: 1.25rem;\n        }\n        .cvp-filter-modal-group label {\n            display: block;\n            font-size: 12px;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 0.05em;\n            color: #6b7280;\n            margin-bottom: 0.5rem;\n        }\n        .cvp-filter-modal-group select {\n            width: 100%;\n            padding: 0.5rem 1rem;\n            font-size: 15px;\n            border: 1px solid #e5e7eb;\n            border-radius: 0.75rem;\n            background: #f9fafb;\n            color: #111827;\n            -webkit-appearance: none;\n            appearance: none;\n            background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n            background-repeat: no-repeat;\n            background-position: right 12px center;\n        }\n        .cvp-filter-modal-toggles {\n            display: flex;\n            flex-direction: row;\n            align-items: center;\n            gap: 1.5rem;\n            margin-bottom: 1.5rem;\n        }\n        .cvp-filter-modal-toggles .cvp-toggle-label {\n            margin: 0;\n        }\n        .cvp-filter-modal-actions {\n            display: flex;\n            gap: 0.75rem;\n        }\n        .cvp-filter-modal-actions button {\n            flex: 1;\n            padding: 0.875rem;\n            font-size: 15px;\n            font-weight: 700;\n            border-radius: 0.75rem;\n            cursor: pointer;\n            border: none;\n        }\n        .cvp-filter-modal-reset {\n            background: #f1f5f9;\n            color: #334155;\n        }\n        .cvp-filter-modal-apply {\n            background: #e76e3c;\n            color: #fff;\n        }\n\n        \/* \u2500\u2500 Mobile search bottom sheet \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        .cvp-search-overlay-backdrop {\n            position: fixed;\n            inset: 0;\n            z-index: 100002;\n            background: rgba(0,0,0,0.4);\n            opacity: 0;\n            visibility: hidden;\n            transition: opacity 0.3s ease, visibility 0.3s ease;\n        }\n        .cvp-search-overlay-backdrop.cvp-search-open {\n            opacity: 1;\n            visibility: visible;\n        }\n        .cvp-search-overlay {\n            position: fixed;\n            bottom: 0;\n            left: 0;\n            right: 0;\n            z-index: 100003;\n            background: #fff;\n            border-radius: 1rem 1rem 0 0;\n            padding: 0;\n            box-shadow: 0 -4px 20px rgba(0,0,0,0.12);\n            transform: translateY(100%);\n            transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1);\n        }\n        .cvp-search-overlay.cvp-search-open {\n            transform: translateY(0);\n        }\n        .cvp-search-overlay-handle {\n            display: flex;\n            justify-content: center;\n            padding: 0.75rem 0 0.25rem;\n        }\n        .cvp-search-overlay-handle span {\n            width: 2rem;\n            height: 4px;\n            background: #d1d5db;\n            border-radius: 9999px;\n        }\n        .cvp-search-overlay-body {\n            padding: 0.5rem 1.25rem 1.5rem;\n        }\n        .cvp-search-overlay-header {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            margin-bottom: 1rem;\n        }\n        .cvp-search-overlay-header h3 {\n            font-size: 1rem;\n            font-weight: 700;\n            color: #111827;\n            margin: 0;\n        }\n        .cvp-search-overlay-close {\n            background: none;\n            border: none;\n            color: #6b7280;\n            cursor: pointer;\n            padding: 0.25rem;\n            flex-shrink: 0;\n        }\n        .cvp-search-overlay-input-wrap {\n            position: relative;\n            display: flex;\n            align-items: center;\n        }\n        .cvp-search-overlay-input-wrap svg {\n            position: absolute;\n            left: 0.75rem;\n            pointer-events: none;\n        }\n        .cvp-search-overlay-input {\n            width: 100%;\n            height: 44px;\n            border: 1px solid #e2e8f0;\n            border-radius: 0.75rem;\n            padding: 0 0.75rem 0 2.5rem;\n            font-size: 15px;\n            background: #f8fafc;\n            color: #334155;\n        }\n        .cvp-search-overlay-input:focus {\n            outline: none;\n            border-color: #e76e3c;\n            box-shadow: 0 0 0 3px rgba(231,110,60,0.1);\n            background: #fff;\n        }\n        .cvp-search-overlay-input::placeholder { color: #94a3b8; }\n        .cvp-search-overlay-actions {\n            display: flex;\n            gap: 0.75rem;\n            margin-top: 1rem;\n        }\n        .cvp-search-overlay-clear {\n            flex: 1;\n            height: 44px;\n            border: 1px solid #e2e8f0;\n            border-radius: 0.75rem;\n            background: #fff;\n            color: #374151;\n            font-size: 15px;\n            font-weight: 600;\n            cursor: pointer;\n        }\n        .cvp-search-overlay-submit {\n            flex: 2;\n            height: 44px;\n            border: none;\n            border-radius: 0.75rem;\n            background: #e76e3c;\n            color: #fff;\n            font-size: 15px;\n            font-weight: 600;\n            cursor: pointer;\n        }\n    <\/style>\n\n    <div class=\"cvp-filters-section\">\n        <div class=\"cvp-filter-card\">\n            <div class=\"cvp-filter-card-inner\">\n\n                <!-- Row 1: Video type pills + search bar -->\n                <div class=\"cvp-filter-row-top\">\n                    <button type=\"button\" class=\"cvp-mobile-filter-btn\" id=\"cvp-mobile-filter-toggle\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"\/><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"\/><line x1=\"11\" y1=\"18\" x2=\"13\" y2=\"18\"\/><\/svg>\n                        Filter\n                    <\/button>\n                    <button type=\"button\" class=\"cvp-mobile-search-btn\" id=\"cvp-mobile-search-toggle\" aria-label=\"Search videos\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#334155\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\n                        Search\n                    <\/button>\n                    <div class=\"cvp-type-pills\" role=\"group\" aria-label=\"Filter by video type\">\n                        <button type=\"button\" class=\"cvp-video-type-btn active\" data-video-type=\"\">All Types<\/button>\n                        <button type=\"button\" class=\"cvp-video-type-btn\" data-video-type=\"tutorials\">Activity Tutorials<\/button><button type=\"button\" class=\"cvp-video-type-btn\" data-video-type=\"activities\">Classroom Activities<\/button><button type=\"button\" class=\"cvp-video-type-btn\" data-video-type=\"lesson-breakdowns\">Lesson Breakdowns<\/button><button type=\"button\" class=\"cvp-video-type-btn\" data-video-type=\"workshop-recording\">Workshop Recording<\/button>                        <div class=\"cvp-more-dropdown\" style=\"display:none;\">\n                            <button type=\"button\" class=\"cvp-more-btn\">More <span class=\"cvp-more-arrow\">&#9660;<\/span><\/button>\n                            <div class=\"cvp-more-menu\"><\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"cvp-search-wrapper\">\n                        <input type=\"search\" id=\"video-search-filter\" class=\"cvp-search-input\" placeholder=\"Search videos...\" autocomplete=\"off\" \/>\n                    <\/div>\n                <\/div>\n\n                <!-- Row 2: Secondary dropdowns (left) + toggles & reset (right) -->\n                <div class=\"cvp-filter-row-secondary\">\n                    <div class=\"cvp-filter-groups\">\n\n                        <!-- Topic (custom_category taxonomy) -->\n                        <div class=\"cvp-filter-group\">\n                            <span class=\"cvp-filter-group-label\">Topic<\/span>\n                            <select id=\"video-topic-filter\" class=\"cvp-filter-select\" data-filter-label=\"Topic\">\n                                <option value=\"\">All Topics<\/option>\n                                <option value=\"active-learning\">Active Learning<\/option><option value=\"classin\">ClassIn<\/option><option value=\"classin-instruction\">ClassIn Instruction<\/option><option value=\"classroom-management\">Classroom Management<\/option><option value=\"gamification\">Gamification<\/option><option value=\"grammar\">Grammar<\/option><option value=\"lesson-design\">Lesson Design<\/option><option value=\"listening-reading\">Listening &amp; Reading<\/option><option value=\"speaking-fluency\">Speaking &amp; Fluency<\/option><option value=\"tailored-teaching\">Tailored Teaching<\/option><option value=\"team-learning\">Team Learning<\/option><option value=\"vocabulary\">Vocabulary<\/option><optgroup label=\"\u2014 Grammar\"><option value=\"controlled-practice\">Controlled Practice<\/option><option value=\"form-meaning-and-use\">Form, Meaning and Use<\/option><option value=\"grammar-activities\">Grammar Activities<\/option><option value=\"grammar-in-context\">Grammar in Context<\/option><option value=\"review-questions\">Review Questions<\/option><\/optgroup><optgroup label=\"\u2014 Lesson Design\"><option value=\"assessment-techniques\">Assessment Techniques<\/option><option value=\"class-management\">Class Management<\/option><option value=\"differentiation\">Differentiation<\/option><option value=\"error-correction\">Error Correction<\/option><option value=\"lesson-staging\">Lesson Staging<\/option><option value=\"scaffolding\">Scaffolding<\/option><option value=\"warm-up-activities\">Warm-Up Activities<\/option><\/optgroup><optgroup label=\"\u2014 Listening &amp; Reading\"><option value=\"listening-activities\">Listening Activities<\/option><option value=\"listening-for-gist\">Listening for Gist<\/option><option value=\"pre-listening-activities\">Pre-Listening Activities<\/option><option value=\"pre-reading-activities\">Pre-Reading Activities<\/option><option value=\"reading-activities\">Reading Activities<\/option><option value=\"reading-introduction\">Reading Introduction<\/option><option value=\"teaching-reading-comprehension\">Teaching Reading Comprehension<\/option><\/optgroup><optgroup label=\"\u2014 Speaking &amp; Fluency\"><option value=\"encouraging-student-talk-time\">Encouraging Student Talk Time<\/option><option value=\"error-correction-in-speaking\">Error Correction in Speaking<\/option><option value=\"fluency-scaffolding\">Fluency Scaffolding<\/option><option value=\"guided-dialogue-practice\">Guided Dialogue Practice<\/option><option value=\"information-gap-tasks\">Information Gap Tasks<\/option><option value=\"role-play-activities\">Role Play Activities<\/option><option value=\"speaking-activities\">Speaking Activities<\/option><\/optgroup><optgroup label=\"\u2014 Vocabulary\"><option value=\"collocations-word-partnerships\">Collocations &amp; Word Partnerships<\/option><option value=\"retrieval-practice-techniques\">Retrieval Practice Techniques<\/option><option value=\"teaching-vocabulary-chunks\">Teaching Vocabulary &amp; Chunks<\/option><option value=\"teaching-vocabulary-in-context\">Teaching Vocabulary in Context<\/option><option value=\"vocabulary-activities\">Vocabulary Activities<\/option><option value=\"vocabulary-recycling\">Vocabulary Recycling<\/option><\/optgroup>                            <\/select>\n                        <\/div>\n\n                        <!-- Category (video_category taxonomy) -->\n                        <div class=\"cvp-filter-group\">\n                            <span class=\"cvp-filter-group-label\">Category<\/span>\n                            <select id=\"video-category\" class=\"cvp-filter-select\" data-filter-label=\"Category\">\n                                <option value=\"\">All Categories<\/option>\n                                <option value=\"acquisition-stages\">Acquisition Stages<\/option><option value=\"active-learning\">Active Learning<\/option><option value=\"active-learning-methods\">Active Learning Methods<\/option><option value=\"assessment-feedback\">Assessment &amp; Feedback<\/option><option value=\"chatty-champs\">Chatty Champs<\/option><option value=\"classin-instruction\">ClassIn Instruction<\/option><option value=\"classroom-management\">Classroom Management<\/option><option value=\"differentiation\">Differentiation<\/option><option value=\"fluent-flyers\">Fluent Flyers<\/option><option value=\"gamification\">Gamification<\/option><option value=\"gamification-in-teaching\">Gamification in Teaching<\/option><option value=\"grammar\">Grammar<\/option><option value=\"interactive-tools\">Interactive Tools<\/option><option value=\"lesson-design\">Lesson Design<\/option><option value=\"lesson-planning\">Lesson Planning<\/option><option value=\"listening-skills\">Listening Skills<\/option><option value=\"methodology\">Methodology<\/option><option value=\"phonics-early-literacy\">Phonics &amp; Early Literacy<\/option><option value=\"professional-growth\">Professional Growth<\/option><option value=\"pronunciation\">Pronunciation<\/option><option value=\"reading-skills\">Reading Skills<\/option><option value=\"silent-starters\">Silent Starters<\/option><option value=\"speaking-fluency\">Speaking &amp; Fluency<\/option><option value=\"tailored-teaching\">Tailored Teaching<\/option><option value=\"talking-tots\">Talking Tots<\/option><option value=\"teaching-adults\">Teaching Adults<\/option><option value=\"teaching-teens\">Teaching Teens<\/option><option value=\"teaching-young-learners\">Teaching Young Learners<\/option><option value=\"team-learning\">Team Learning<\/option><option value=\"technology-for-teaching\">Technology for Teaching<\/option><option value=\"topics\">Topics<\/option><option value=\"vocabulary\">Vocabulary<\/option><option value=\"writing-skills\">Writing Skills<\/option>                            <\/select>\n                        <\/div>\n\n                        <!-- By Filter (videos_filter taxonomy) -->\n                        <div class=\"cvp-filter-group\">\n                            <span class=\"cvp-filter-group-label\">By Filter<\/span>\n                            <select id=\"videos-filter\" class=\"cvp-filter-select\" data-filter-label=\"Filter\">\n                                <option value=\"\">All Access<\/option>\n                                <option value=\"advanced\">Advanced<\/option><option value=\"beginner\">Beginner<\/option><option value=\"free-workshops\">Free Workshops<\/option><option value=\"intermediate\">Intermediate<\/option><option value=\"restricted-workshop\">Restricted Workshop<\/option><option value=\"skill-level\">Skill Level<\/option><option value=\"type\">Type<\/option><optgroup label=\"\u2014 Type\"><option value=\"free-videos\">Free Videos<\/option><option value=\"paid-videos\">Paid Videos<\/option><\/optgroup>                            <\/select>\n                        <\/div>\n\n                        <!-- Level (video_level taxonomy) -->\n                        <div class=\"cvp-filter-group\">\n                            <span class=\"cvp-filter-group-label\">Level<\/span>\n                            <select id=\"video-level-filter\" class=\"cvp-filter-select\" data-filter-label=\"Level\">\n                                <option value=\"\">All Levels<\/option>\n                                <option value=\"early-years-3-5\">Early Years (3\u20135)<\/option><option value=\"lower-primary-6-8\">Lower Primary (6\u20138)<\/option><option value=\"lower-secondary-12-14\">Lower Secondary (12\u201314)<\/option><option value=\"upper-primary-9-11\">Upper Primary (9\u201311)<\/option><option value=\"upper-secondary-15-18\">Upper Secondary (15\u201318)<\/option>                            <\/select>\n                        <\/div>\n\n                    <\/div><!-- .cvp-filter-groups -->\n\n                    <!-- Toggles + divider + reset -->\n                    <div class=\"cvp-filter-actions-right\">\n                        <div class=\"cvp-filter-toggles\">\n                            <label class=\"cvp-toggle-label\" title=\"Show videos you've added to your playlist\">\n                                <input type=\"checkbox\" id=\"my-playlist-toggle\" class=\"cvp-toggle-input\" value=\"1\" \/>\n                                <div class=\"cvp-toggle-switch\"><\/div>\n                                <span class=\"cvp-toggle-text\">My Playlist<\/span>\n                            <\/label>\n                            <label class=\"cvp-toggle-label\" title=\"Show only videos you have access to\">\n                                <input type=\"checkbox\" id=\"has-access-toggle\" class=\"cvp-toggle-input\" value=\"1\" \/>\n                                <div class=\"cvp-toggle-switch\"><\/div>\n                                <span class=\"cvp-toggle-text\">Have Access<\/span>\n                            <\/label>\n                        <\/div>\n                        <div class=\"cvp-filter-vdivider\" aria-hidden=\"true\"><\/div>\n                        <button type=\"button\" id=\"cvp-reset-filters\" class=\"cvp-reset-btn\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"1 4 1 10 7 10\"\/><path d=\"M3.51 15a9 9 0 1 0 .49-4.5\"\/><\/svg>\n                            Reset Filters\n                        <\/button>\n                    <\/div>\n\n                <\/div><!-- .cvp-filter-row-secondary -->\n\n                <!-- Active filters bar (shown by JS when any filter is active) -->\n                <div class=\"cvp-active-filters-row\" id=\"cvp-active-filters-row\" style=\"display:none;\">\n                    <span class=\"cvp-active-filters-label\">Active Filters:<\/span>\n                    <div class=\"cvp-active-filters-list\" id=\"cvp-active-filters-list\"><\/div>\n                <\/div>\n\n            <\/div><!-- .cvp-filter-card-inner -->\n        <\/div><!-- .cvp-filter-card -->\n    <\/div><!-- .cvp-filters-section -->\n\n    <!-- Filter slide-up modal (mobile) -->\n    <div class=\"cvp-filter-modal-overlay\" id=\"cvp-filter-modal-overlay\"><\/div>\n    <div class=\"cvp-filter-modal-sheet\" id=\"cvp-filter-modal-sheet\">\n        <div class=\"cvp-filter-modal-handle\"><span><\/span><\/div>\n        <div class=\"cvp-filter-modal-body\">\n            <div class=\"cvp-filter-modal-header\">\n                <h3>Filters<\/h3>\n                <button type=\"button\" class=\"cvp-filter-modal-close\" id=\"cvp-filter-modal-close\" aria-label=\"Close\">\n                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\n                <\/button>\n            <\/div>\n\n            <!-- Video Type -->\n            <div class=\"cvp-filter-modal-group\">\n                <label>Video Type<\/label>\n                <select id=\"cvp-modal-video-type\">\n                    <option value=\"\">All Types<\/option>\n                    <option value=\"tutorials\">Activity Tutorials<\/option><option value=\"activities\">Classroom Activities<\/option><option value=\"lesson-breakdowns\">Lesson Breakdowns<\/option><option value=\"workshop-recording\">Workshop Recording<\/option>                <\/select>\n            <\/div>\n\n            <!-- Topic -->\n            <div class=\"cvp-filter-modal-group\">\n                <label>Topic<\/label>\n                <select id=\"cvp-modal-topic\">\n                    <option value=\"\">All Topics<\/option>\n                    <option value=\"active-learning\">Active Learning<\/option><option value=\"assessment-techniques\">Assessment Techniques<\/option><option value=\"class-management\">Class Management<\/option><option value=\"classin\">ClassIn<\/option><option value=\"classin-instruction\">ClassIn Instruction<\/option><option value=\"classroom-management\">Classroom Management<\/option><option value=\"collocations-word-partnerships\">Collocations &amp; Word Partnerships<\/option><option value=\"controlled-practice\">Controlled Practice<\/option><option value=\"differentiation\">Differentiation<\/option><option value=\"encouraging-student-talk-time\">Encouraging Student Talk Time<\/option><option value=\"error-correction\">Error Correction<\/option><option value=\"error-correction-in-speaking\">Error Correction in Speaking<\/option><option value=\"fluency-scaffolding\">Fluency Scaffolding<\/option><option value=\"form-meaning-and-use\">Form, Meaning and Use<\/option><option value=\"gamification\">Gamification<\/option><option value=\"grammar\">Grammar<\/option><option value=\"grammar-activities\">Grammar Activities<\/option><option value=\"grammar-in-context\">Grammar in Context<\/option><option value=\"guided-dialogue-practice\">Guided Dialogue Practice<\/option><option value=\"information-gap-tasks\">Information Gap Tasks<\/option><option value=\"lesson-design\">Lesson Design<\/option><option value=\"lesson-staging\">Lesson Staging<\/option><option value=\"listening-reading\">Listening &amp; Reading<\/option><option value=\"listening-activities\">Listening Activities<\/option><option value=\"listening-for-gist\">Listening for Gist<\/option><option value=\"pre-listening-activities\">Pre-Listening Activities<\/option><option value=\"pre-reading-activities\">Pre-Reading Activities<\/option><option value=\"reading-activities\">Reading Activities<\/option><option value=\"reading-introduction\">Reading Introduction<\/option><option value=\"retrieval-practice-techniques\">Retrieval Practice Techniques<\/option><option value=\"review-questions\">Review Questions<\/option><option value=\"role-play-activities\">Role Play Activities<\/option><option value=\"scaffolding\">Scaffolding<\/option><option value=\"speaking-fluency\">Speaking &amp; Fluency<\/option><option value=\"speaking-activities\">Speaking Activities<\/option><option value=\"tailored-teaching\">Tailored Teaching<\/option><option value=\"teaching-reading-comprehension\">Teaching Reading Comprehension<\/option><option value=\"teaching-vocabulary-chunks\">Teaching Vocabulary &amp; Chunks<\/option><option value=\"teaching-vocabulary-in-context\">Teaching Vocabulary in Context<\/option><option value=\"team-learning\">Team Learning<\/option><option value=\"vocabulary\">Vocabulary<\/option><option value=\"vocabulary-activities\">Vocabulary Activities<\/option><option value=\"vocabulary-recycling\">Vocabulary Recycling<\/option><option value=\"warm-up-activities\">Warm-Up Activities<\/option>                <\/select>\n            <\/div>\n\n            <!-- Category -->\n            <div class=\"cvp-filter-modal-group\">\n                <label>Category<\/label>\n                <select id=\"cvp-modal-category\">\n                    <option value=\"\">All Categories<\/option>\n                    <option value=\"acquisition-stages\">Acquisition Stages<\/option><option value=\"active-learning\">Active Learning<\/option><option value=\"active-learning-methods\">Active Learning Methods<\/option><option value=\"assessment-feedback\">Assessment &amp; Feedback<\/option><option value=\"chatty-champs\">Chatty Champs<\/option><option value=\"classin-instruction\">ClassIn Instruction<\/option><option value=\"classroom-management\">Classroom Management<\/option><option value=\"differentiation\">Differentiation<\/option><option value=\"fluent-flyers\">Fluent Flyers<\/option><option value=\"gamification\">Gamification<\/option><option value=\"gamification-in-teaching\">Gamification in Teaching<\/option><option value=\"grammar\">Grammar<\/option><option value=\"interactive-tools\">Interactive Tools<\/option><option value=\"lesson-design\">Lesson Design<\/option><option value=\"lesson-planning\">Lesson Planning<\/option><option value=\"listening-skills\">Listening Skills<\/option><option value=\"methodology\">Methodology<\/option><option value=\"phonics-early-literacy\">Phonics &amp; Early Literacy<\/option><option value=\"professional-growth\">Professional Growth<\/option><option value=\"pronunciation\">Pronunciation<\/option><option value=\"reading-skills\">Reading Skills<\/option><option value=\"silent-starters\">Silent Starters<\/option><option value=\"speaking-fluency\">Speaking &amp; Fluency<\/option><option value=\"tailored-teaching\">Tailored Teaching<\/option><option value=\"talking-tots\">Talking Tots<\/option><option value=\"teaching-adults\">Teaching Adults<\/option><option value=\"teaching-teens\">Teaching Teens<\/option><option value=\"teaching-young-learners\">Teaching Young Learners<\/option><option value=\"team-learning\">Team Learning<\/option><option value=\"technology-for-teaching\">Technology for Teaching<\/option><option value=\"topics\">Topics<\/option><option value=\"vocabulary\">Vocabulary<\/option><option value=\"writing-skills\">Writing Skills<\/option>                <\/select>\n            <\/div>\n\n            <!-- Access Filter -->\n            <div class=\"cvp-filter-modal-group\">\n                <label>Access<\/label>\n                <select id=\"cvp-modal-access\">\n                    <option value=\"\">All Access<\/option>\n                    <option value=\"advanced\">Advanced<\/option><option value=\"beginner\">Beginner<\/option><option value=\"free-videos\">Free Videos<\/option><option value=\"free-workshops\">Free Workshops<\/option><option value=\"intermediate\">Intermediate<\/option><option value=\"paid-videos\">Paid Videos<\/option><option value=\"restricted-workshop\">Restricted Workshop<\/option><option value=\"skill-level\">Skill Level<\/option><option value=\"type\">Type<\/option>                <\/select>\n            <\/div>\n\n            <!-- Level -->\n            <div class=\"cvp-filter-modal-group\">\n                <label>Level<\/label>\n                <select id=\"cvp-modal-level\">\n                    <option value=\"\">All Levels<\/option>\n                    <option value=\"early-years-3-5\">Early Years (3\u20135)<\/option><option value=\"lower-primary-6-8\">Lower Primary (6\u20138)<\/option><option value=\"lower-secondary-12-14\">Lower Secondary (12\u201314)<\/option><option value=\"upper-primary-9-11\">Upper Primary (9\u201311)<\/option><option value=\"upper-secondary-15-18\">Upper Secondary (15\u201318)<\/option>                <\/select>\n            <\/div>\n\n            <!-- Toggles -->\n            <div class=\"cvp-filter-modal-toggles\">\n                <label class=\"cvp-toggle-label\">\n                    <input type=\"checkbox\" id=\"cvp-modal-playlist\" class=\"cvp-toggle-input\" value=\"1\" \/>\n                    <div class=\"cvp-toggle-switch\"><\/div>\n                    <span class=\"cvp-toggle-text\">My Playlist<\/span>\n                <\/label>\n                <label class=\"cvp-toggle-label\">\n                    <input type=\"checkbox\" id=\"cvp-modal-access-toggle\" class=\"cvp-toggle-input\" value=\"1\" \/>\n                    <div class=\"cvp-toggle-switch\"><\/div>\n                    <span class=\"cvp-toggle-text\">Have Access<\/span>\n                <\/label>\n            <\/div>\n\n            <!-- Actions -->\n            <div class=\"cvp-filter-modal-actions\">\n                <button type=\"button\" class=\"cvp-filter-modal-reset\" id=\"cvp-filter-modal-reset\">Reset<\/button>\n                <button type=\"button\" class=\"cvp-filter-modal-apply\" id=\"cvp-filter-modal-apply\">Apply Filters<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Mobile search bottom sheet -->\n    <div class=\"cvp-search-overlay-backdrop\" id=\"cvp-search-backdrop\"><\/div>\n    <div class=\"cvp-search-overlay\" id=\"cvp-search-overlay\">\n        <div class=\"cvp-search-overlay-handle\"><span><\/span><\/div>\n        <div class=\"cvp-search-overlay-body\">\n            <div class=\"cvp-search-overlay-header\">\n                <h3>Search Videos<\/h3>\n                <button type=\"button\" class=\"cvp-search-overlay-close\" id=\"cvp-search-overlay-close\" aria-label=\"Close search\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#6b7280\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\n                <\/button>\n            <\/div>\n            <div class=\"cvp-search-overlay-input-wrap\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#94a3b8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\n                <input type=\"search\" class=\"cvp-search-overlay-input\" id=\"cvp-search-overlay-input\" placeholder=\"Search videos...\" autocomplete=\"off\" \/>\n            <\/div>\n            <div class=\"cvp-search-overlay-actions\">\n                <button type=\"button\" class=\"cvp-search-overlay-clear\" id=\"cvp-search-overlay-clear\">Clear<\/button>\n                <button type=\"button\" class=\"cvp-search-overlay-submit\" id=\"cvp-search-overlay-submit\">Search<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function () {\n        'use strict';\n\n        \/* \u2500\u2500 More dropdown \u2014 responsive overflow \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        var pillsContainer = document.querySelector('.cvp-type-pills');\n        var moreDropdown   = document.querySelector('.cvp-more-dropdown');\n        var moreMenu       = moreDropdown ? moreDropdown.querySelector('.cvp-more-menu') : null;\n        var moreBtn        = moreDropdown ? moreDropdown.querySelector('.cvp-more-btn') : null;\n        var allTypeBtns    = pillsContainer ? Array.prototype.slice.call(\n            pillsContainer.querySelectorAll('.cvp-video-type-btn:not(.cvp-more-menu .cvp-video-type-btn)')\n        ) : [];\n\n        function distributeOverflow() {\n            if (!pillsContainer || !moreDropdown || !moreMenu) return;\n\n            \/\/ 1. Move all buttons back into the pill bar (reset)\n            moreMenu.querySelectorAll('.cvp-video-type-btn').forEach(function (btn) {\n                btn.classList.remove('cvp-overflow-hidden');\n                pillsContainer.insertBefore(btn, moreDropdown);\n            });\n\n            \/\/ Refresh the list (only direct children, not those inside moreMenu)\n            allTypeBtns = Array.prototype.slice.call(\n                pillsContainer.querySelectorAll(':scope > .cvp-video-type-btn')\n            );\n\n            \/\/ 2. Hide More initially\n            moreDropdown.style.display = 'none';\n\n            \/\/ 3. Check if everything fits on one row\n            if (allTypeBtns.length === 0) return;\n            var baselineTop = allTypeBtns[0].getBoundingClientRect().top;\n            var needsOverflow = false;\n            for (var i = 1; i < allTypeBtns.length; i++) {\n                if (allTypeBtns[i].getBoundingClientRect().top > baselineTop + 2) {\n                    needsOverflow = true;\n                    break;\n                }\n            }\n\n            if (!needsOverflow) return; \/\/ All fits \u2014 done\n\n            \/\/ 4. Show the More button, then pull buttons from the end into\n            \/\/    the dropdown until the More button sits on the first row.\n            moreDropdown.style.display = '';\n\n            \/\/ Keep pulling the last visible type button into the menu\n            \/\/ until More is on the baseline row (or we run out of buttons).\n            var safety = allTypeBtns.length;\n            while (safety-- > 0) {\n                var moreBtnTop = moreDropdown.getBoundingClientRect().top;\n                if (moreBtnTop <= baselineTop + 2) break; \/\/ More is on row 1\n\n                \/\/ Take the last direct-child type button and prepend it into the menu\n                var visibleBtns = Array.prototype.slice.call(\n                    pillsContainer.querySelectorAll(':scope > .cvp-video-type-btn')\n                );\n                if (visibleBtns.length === 0) break;\n\n                var last = visibleBtns[visibleBtns.length - 1];\n                last.classList.add('cvp-overflow-hidden');\n                moreMenu.insertBefore(last, moreMenu.firstChild);\n            }\n\n            updateMoreBtnState();\n        }\n\n        \/\/ Run on load and resize\n        distributeOverflow();\n        var resizeTimer;\n        window.addEventListener('resize', function () {\n            clearTimeout(resizeTimer);\n            resizeTimer = setTimeout(distributeOverflow, 150);\n        });\n\n        \/\/ Toggle dropdown open\/close\n        if (moreBtn) {\n            moreBtn.addEventListener('click', function (e) {\n                e.stopPropagation();\n                moreDropdown.classList.toggle('open');\n            });\n        }\n\n        \/\/ Close dropdown when a type inside it is clicked\n        if (moreMenu) {\n            moreMenu.addEventListener('click', function (e) {\n                var btn = e.target.closest('.cvp-video-type-btn');\n                if (btn) {\n                    moreDropdown.classList.remove('open');\n                    setTimeout(updateMoreBtnState, 0);\n                }\n            });\n        }\n\n        \/\/ Close on outside click\n        document.addEventListener('click', function (e) {\n            if (moreDropdown && !moreDropdown.contains(e.target)) {\n                moreDropdown.classList.remove('open');\n            }\n        });\n\n        function updateMoreBtnState() {\n            if (!moreDropdown || !moreMenu) return;\n            var hasActive = moreMenu.querySelector('.cvp-video-type-btn.active');\n            if (moreBtn) moreBtn.classList.toggle('has-active', !!hasActive);\n        }\n\n        \/\/ Update More button highlight when any type button is clicked\n        document.querySelectorAll('.cvp-video-type-btn').forEach(function (btn) {\n            btn.addEventListener('click', function () {\n                setTimeout(updateMoreBtnState, 0);\n            });\n        });\n\n        \/* \u2500\u2500 Reset button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        var resetBtn = document.getElementById('cvp-reset-filters');\n        if (resetBtn) {\n            resetBtn.addEventListener('click', function () {\n                document.querySelectorAll('.cvp-filter-card select').forEach(function (s) { s.selectedIndex = 0; });\n\n                var search = document.getElementById('video-search-filter');\n                if (search) search.value = '';\n\n                document.querySelectorAll('.cvp-filter-card .cvp-toggle-input').forEach(function (t) { t.checked = false; });\n\n                document.querySelectorAll('.cvp-video-type-btn').forEach(function (btn) {\n                    btn.classList.toggle('active', btn.getAttribute('data-video-type') === '');\n                });\n\n                \/\/ Reset More dropdown state\n                if (moreDropdown) {\n                    moreDropdown.classList.remove('open');\n                    if (moreBtn) moreBtn.classList.remove('has-active');\n                }\n                distributeOverflow();\n\n                document.dispatchEvent(new CustomEvent('cvp:filtersReset'));\n\n                var firstSelect = document.getElementById('video-topic-filter');\n                if (firstSelect) firstSelect.dispatchEvent(new Event('change', { bubbles: true }));\n            });\n        }\n\n        \/* \u2500\u2500 Active filters 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 *\/\n        function getSelectedLabel(selectEl) {\n            if (!selectEl || !selectEl.value) return null;\n            var opt = selectEl.options[selectEl.selectedIndex];\n            return opt ? opt.text : null;\n        }\n\n        function updateActivePills() {\n            var row  = document.getElementById('cvp-active-filters-row');\n            var list = document.getElementById('cvp-active-filters-list');\n            if (!row || !list) return;\n\n            \/* When search is active, hide pills entirely \u2014 show only taxonomy results *\/\n            var searchEl = document.getElementById('video-search-filter');\n            var hasSearch = searchEl && searchEl.value.trim();\n            if (hasSearch) {\n                row.style.display = 'none';\n                list.innerHTML = '';\n                return;\n            }\n\n            var pills = [];\n\n            \/* Dropdown pills *\/\n            [\n                { id: 'video-topic-filter' },\n                { id: 'video-category' },\n                { id: 'videos-filter' },\n                { id: 'video-level-filter' },\n            ].forEach(function (cfg) {\n                var el = document.getElementById(cfg.id);\n                var label = getSelectedLabel(el);\n                if (label) {\n                    var capturedId = cfg.id;\n                    pills.push({ key: capturedId, label: label, clear: function () {\n                        var sel = document.getElementById(capturedId);\n                        if (sel) {\n                            sel.selectedIndex = 0;\n                            sel.dispatchEvent(new Event('change', { bubbles: true }));\n                        }\n                    }});\n                }\n            });\n\n            \/* Render *\/\n            if (pills.length === 0) {\n                row.style.display = 'none';\n                list.innerHTML = '';\n                return;\n            }\n\n            row.style.display = 'flex';\n            list.innerHTML = '';\n            pills.forEach(function (pill) {\n                var span = document.createElement('span');\n                span.className = 'hta-filter-pill';\n                span.innerHTML =\n                    '<span>' + pill.label + '<\/span>' +\n                    '<button type=\"button\" class=\"cvp-pill-remove\" aria-label=\"Remove filter\">' +\n                        '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>' +\n                    '<\/button>';\n                span.querySelector('.cvp-pill-remove').addEventListener('click', pill.clear);\n                list.appendChild(span);\n            });\n        }\n\n        \/* Watch all filter inputs for changes *\/\n        document.addEventListener('change', function (e) {\n            if (e.target.closest('.cvp-filter-card')) updateActivePills();\n        });\n        document.addEventListener('input', function (e) {\n            if (e.target.id === 'video-search-filter') updateActivePills();\n        });\n        document.addEventListener('click', function (e) {\n            if (e.target.closest('.cvp-video-type-btn')) {\n                setTimeout(updateActivePills, 0);\n            }\n        });\n        document.addEventListener('cvp:filtersReset', function () {\n            setTimeout(updateActivePills, 0);\n        });\n\n        \/* \u2500\u2500 Mobile filter modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        (function () {\n            var btn     = document.getElementById('cvp-mobile-filter-toggle');\n            var overlay = document.getElementById('cvp-filter-modal-overlay');\n            var sheet   = document.getElementById('cvp-filter-modal-sheet');\n            var closeBtn = document.getElementById('cvp-filter-modal-close');\n            var applyBtn = document.getElementById('cvp-filter-modal-apply');\n            var resetBtn2 = document.getElementById('cvp-filter-modal-reset');\n            if (!btn || !overlay || !sheet) return;\n\n            \/* Map modal selects \u2194 original filter controls *\/\n            var mappings = [\n                { modal: 'cvp-modal-video-type', original: null, typeBtn: true },\n                { modal: 'cvp-modal-topic',      original: 'video-topic-filter' },\n                { modal: 'cvp-modal-category',    original: 'video-category' },\n                { modal: 'cvp-modal-access',      original: 'videos-filter' },\n                { modal: 'cvp-modal-level',       original: 'video-level-filter' },\n            ];\n            var toggleMappings = [\n                { modal: 'cvp-modal-playlist',       original: 'my-playlist-toggle' },\n                { modal: 'cvp-modal-access-toggle',  original: 'has-access-toggle' },\n            ];\n\n            function openModal() {\n                \/* Sync modal state from original filters *\/\n                mappings.forEach(function (m) {\n                    var modalEl = document.getElementById(m.modal);\n                    if (!modalEl) return;\n                    if (m.typeBtn) {\n                        var activeType = document.querySelector('.cvp-video-type-btn.active');\n                        modalEl.value = activeType ? (activeType.getAttribute('data-video-type') || '') : '';\n                    } else {\n                        var origEl = document.getElementById(m.original);\n                        if (origEl) modalEl.value = origEl.value;\n                    }\n                });\n                toggleMappings.forEach(function (m) {\n                    var modalEl = document.getElementById(m.modal);\n                    var origEl  = document.getElementById(m.original);\n                    if (modalEl && origEl) modalEl.checked = origEl.checked;\n                });\n\n                overlay.classList.add('cvp-modal-open');\n                sheet.classList.add('cvp-modal-open');\n                document.body.style.overflow = 'hidden';\n            }\n\n            function closeModal() {\n                overlay.classList.remove('cvp-modal-open');\n                sheet.classList.remove('cvp-modal-open');\n                document.body.style.overflow = '';\n            }\n\n            function applyFilters() {\n                \/* Push ALL modal values to original controls silently (no events)\n                   to avoid race conditions from multiple filterVideos() calls. *\/\n                mappings.forEach(function (m) {\n                    var modalEl = document.getElementById(m.modal);\n                    if (!modalEl) return;\n                    if (m.typeBtn) {\n                        var val = modalEl.value;\n                        document.querySelectorAll('.cvp-video-type-btn').forEach(function (b) {\n                            b.classList.toggle('active', (b.getAttribute('data-video-type') || '') === val);\n                        });\n                    } else {\n                        var origEl = document.getElementById(m.original);\n                        if (origEl) {\n                            origEl.value = modalEl.value;\n                        }\n                    }\n                });\n                toggleMappings.forEach(function (m) {\n                    var modalEl = document.getElementById(m.modal);\n                    var origEl  = document.getElementById(m.original);\n                    if (modalEl && origEl) {\n                        origEl.checked = modalEl.checked;\n                    }\n                });\n\n                \/* Show active state on filter button *\/\n                var hasActive = false;\n                mappings.forEach(function (m) {\n                    var el = document.getElementById(m.modal);\n                    if (el && el.value) hasActive = true;\n                });\n                toggleMappings.forEach(function (m) {\n                    var el = document.getElementById(m.modal);\n                    if (el && el.checked) hasActive = true;\n                });\n                btn.classList.toggle('active', hasActive);\n\n                closeModal();\n\n                \/* Single filterVideos() call with all controls already updated *\/\n                if (typeof window.cvpForceFilter === 'function') {\n                    window.cvpForceFilter();\n                } else {\n                    \/* Fallback: dispatch change on one original control to trigger filterVideos *\/\n                    var fallbackEl = document.getElementById('has-access-toggle') || document.getElementById('videos-filter');\n                    if (fallbackEl) fallbackEl.dispatchEvent(new Event('change', { bubbles: true }));\n                }\n            }\n\n            function resetFilters() {\n                sheet.querySelectorAll('select').forEach(function (s) { s.selectedIndex = 0; });\n                sheet.querySelectorAll('.cvp-toggle-input').forEach(function (t) { t.checked = false; });\n            }\n\n            btn.addEventListener('click', openModal);\n            overlay.addEventListener('click', closeModal);\n            if (closeBtn) closeBtn.addEventListener('click', closeModal);\n            if (applyBtn) applyBtn.addEventListener('click', applyFilters);\n            if (resetBtn2) resetBtn2.addEventListener('click', resetFilters);\n        })();\n\n        \/* \u2500\u2500 Mobile search overlay \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        (function () {\n            var searchBtn      = document.getElementById('cvp-mobile-search-toggle');\n            var searchOverlay  = document.getElementById('cvp-search-overlay');\n            var searchBackdrop = document.getElementById('cvp-search-backdrop');\n            var searchInput    = document.getElementById('cvp-search-overlay-input');\n            var searchClose    = document.getElementById('cvp-search-overlay-close');\n            var realInput      = document.getElementById('video-search-filter');\n            if (!searchBtn || !searchOverlay || !searchInput || !realInput) return;\n\n            function openSearch() {\n                searchOverlay.classList.add('cvp-search-open');\n                if (searchBackdrop) searchBackdrop.classList.add('cvp-search-open');\n                searchInput.value = realInput.value;\n                document.body.style.overflow = 'hidden';\n                setTimeout(function () { searchInput.focus(); }, 350);\n            }\n\n            function closeSearch() {\n                searchOverlay.classList.remove('cvp-search-open');\n                if (searchBackdrop) searchBackdrop.classList.remove('cvp-search-open');\n                document.body.style.overflow = '';\n            }\n\n            searchInput.addEventListener('input', function () {\n                realInput.value = searchInput.value;\n                realInput.dispatchEvent(new Event('input', { bubbles: true }));\n            });\n\n            searchBtn.addEventListener('click', openSearch);\n            if (searchClose) searchClose.addEventListener('click', closeSearch);\n            if (searchBackdrop) searchBackdrop.addEventListener('click', closeSearch);\n\n            searchInput.addEventListener('keydown', function (e) {\n                if (e.key === 'Escape') closeSearch();\n                if (e.key === 'Enter') closeSearch();\n            });\n\n            var submitBtn = document.getElementById('cvp-search-overlay-submit');\n            var clearBtn  = document.getElementById('cvp-search-overlay-clear');\n\n            if (submitBtn) submitBtn.addEventListener('click', closeSearch);\n\n            if (clearBtn) clearBtn.addEventListener('click', function () {\n                searchInput.value = '';\n                realInput.value = '';\n                realInput.dispatchEvent(new Event('input', { bubbles: true }));\n                searchInput.focus();\n            });\n        })();\n    })();\n    <\/script>\n        <div class=\"cvp-videos-section\">\n\n                    <div class=\"tab-content active\" id=\"all-videos\">\n                <div id=\"videos-grid-all-videos\" class=\"videos-grid\" data-page=\"1\" data-tab=\"all-videos\">\n                        <div class=\"cvp-video-card cvp-card-clickable cvp-card-unlocked\" \n         id=\"cvp-video-35582\"\n         data-video-id=\"35582\"\n         data-video-link=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/hta-teacher-kickoff2-break-the-pronunciation-loop\/?video=35582\"\n         data-has-access=\"1\"\n         style=\"cursor: pointer;\">\n        <!-- Card Header with Gradient\/Image -->\n        <div class=\"cvp-card-header \" \n             style=\"background-image: url('https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2026\/05\/704811779_2008952283040057_2819955363359178339_n.jpg');\">\n            \n            \n                            <div class=\"cvp-card-duration-overlay\">58 mins<\/div>\n            \n                    <\/div>\n\n        <!-- Card Body -->\n        <div class=\"cvp-card-body\">\n                            <div class=\"cvp-card-mobile-meta\">\n                                            <span class=\"cvp-card-mobile-meta__type\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Activity Video<\/span>\n                                                        <\/div>\n            \n            <!-- Top Row: Badge + Actions -->\n            <div class=\"cvp-card-body__top\">\n                <span class=\"cvp-card-badge\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Activity Video<\/span>\n                \n                <div class=\"cvp-card-actions\">\n                                        \n                                        <div class=\"cvp-card-rating-mini\">\n                        <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.53.31.png\" alt=\"star\" \/>\n                        <span>5.0<\/span>\n                    <\/div>\n                                        \n                                        \n                    <div class=\"cvp-tooltip-wrapper\">\n                        <button type=\"button\" \n                                class=\"share-button\"\n                                data-link=\"https:\/\/happyteachersacademy.com\/community\/?video=35582\"\n                                data-title=\"HTA Teacher Kickoff#2 &#8211; Break the pronunciation loop\"\n                                aria-label=\"Share\">\n                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/copy.png\" alt=\"Share\" style=\"width: 24px; height: 24px;\">                        <\/button>\n                        <span class=\"cvp-tooltip hover-toast\">Share<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Title row with 3-dot menu on mobile -->\n            <div class=\"cvp-card-title-row\">\n                <h3 class=\"cvp-card-body__title\">\n                    <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/hta-teacher-kickoff2-break-the-pronunciation-loop\/?video=35582\" \n                       class=\"trigger-video-ajax\"\n                       data-video-id=\"35582\">\n                        HTA Teacher Kickoff#2 &#8211; Break the pronunciation loop                    <\/a>\n                <\/h3>\n                <button type=\"button\" class=\"cvp-card-more-btn\"\n                        data-video-id=\"35582\"\n                        data-video-link=\"https:\/\/happyteachersacademy.com\/community\/?video=35582\"\n                        data-video-title=\"HTA Teacher Kickoff#2 &#8211; Break the pronunciation loop\"\n                        data-fav-status=\"not_favorite\"\n                        aria-label=\"More options\">\n                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"12\" cy=\"5\" r=\"2\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/><circle cx=\"12\" cy=\"19\" r=\"2\"\/><\/svg>\n                <\/button>\n            <\/div>\n\n            <!-- Meta Row -->\n            <div class=\"cvp-card-meta\">\n                                    <span class=\"cvp-card-meta__duration\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"14\" height=\"14\" style=\"vertical-align: -4px; margin-right: 4px;\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\"\/><\/svg>\n                        58 mins                    <\/span>\n                \n                <span class=\"cvp-card-meta__separator\">|<\/span><span class=\"cvp-card-meta__language\">Vietnamese<\/span>            <\/div>\n        <\/div>\n\n        <!-- Card Footer -->\n        <div class=\"cvp-card-footer\">\n                            <div class=\"cvp-card-instructor cvp-card-instructor--multi\">\n                    <div class=\"cvp-card-instructor__author\">\n                                                    <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/251\/69c56f9ab5b7f-bpthumb.jpg\" \n                                 alt=\"L\u00e2m T\u01b0\u1eddng Duy L\u00e2m\" \n                                 class=\"cvp-card-instructor__avatar\"\n                                 loading=\"lazy\" \/>\n                                                <span class=\"cvp-card-instructor__name\">L\u00e2m T\u01b0\u1eddng Duy L\u00e2m<\/span>\n                    <\/div>\n                                            <div class=\"cvp-card-instructor__divider\"><\/div>\n                        <div class=\"cvp-card-instructor__author\">\n                                                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/144\/680ef495b3e64-bpthumb.jpg\" \n                                     alt=\"Hi\u1ec1n \u0110inh\" \n                                     class=\"cvp-card-instructor__avatar\"\n                                     loading=\"lazy\" \/>\n                                                        <span class=\"cvp-card-instructor__name\">Hi\u1ec1n \u0110inh<\/span>\n                        <\/div>\n                                    <\/div>\n            \n                            <div class=\"cvp-card-footer-rating\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"#eab308\" width=\"14\" height=\"14\" style=\"flex-shrink:0;\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n                    <span>5.0<\/span>\n                <\/div>\n            \n                            <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/hta-teacher-kickoff2-break-the-pronunciation-loop\/?video=35582\" \n                   class=\"cvp-card-watch-btn trigger-video-ajax\"\n                   data-video-id=\"35582\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" class=\"cvp-icon-play\"><circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#d97706\"\/><path d=\"M10 8l6 4-6 4V8z\" fill=\"white\"\/><\/svg>                    Start Watching                <\/a>\n                    <\/div>\n    <\/div>\n        <div class=\"cvp-video-card cvp-card-clickable cvp-card-unlocked\" \n         id=\"cvp-video-35577\"\n         data-video-id=\"35577\"\n         data-video-link=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/hta-teacher-kickoff-1-unlock-your-next-level\/?video=35577\"\n         data-has-access=\"1\"\n         style=\"cursor: pointer;\">\n        <!-- Card Header with Gradient\/Image -->\n        <div class=\"cvp-card-header \" \n             style=\"background-image: url('https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2026\/05\/1745221584737443996.jpg');\">\n            \n            \n                            <div class=\"cvp-card-duration-overlay\">66 mins<\/div>\n            \n                    <\/div>\n\n        <!-- Card Body -->\n        <div class=\"cvp-card-body\">\n                            <div class=\"cvp-card-mobile-meta\">\n                                            <span class=\"cvp-card-mobile-meta__type\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Activity Video<\/span>\n                                                        <\/div>\n            \n            <!-- Top Row: Badge + Actions -->\n            <div class=\"cvp-card-body__top\">\n                <span class=\"cvp-card-badge\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Activity Video<\/span>\n                \n                <div class=\"cvp-card-actions\">\n                                        \n                                        <div class=\"cvp-card-rating-mini\">\n                        <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/screenshot-2025-08-02-at-00.53.31.png\" alt=\"star\" \/>\n                        <span>5.0<\/span>\n                    <\/div>\n                                        \n                                        \n                    <div class=\"cvp-tooltip-wrapper\">\n                        <button type=\"button\" \n                                class=\"share-button\"\n                                data-link=\"https:\/\/happyteachersacademy.com\/community\/?video=35577\"\n                                data-title=\"HTA Teacher Kickoff #1 &#8211; Unlock Your Next Level\"\n                                aria-label=\"Share\">\n                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/copy.png\" alt=\"Share\" style=\"width: 24px; height: 24px;\">                        <\/button>\n                        <span class=\"cvp-tooltip hover-toast\">Share<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Title row with 3-dot menu on mobile -->\n            <div class=\"cvp-card-title-row\">\n                <h3 class=\"cvp-card-body__title\">\n                    <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/hta-teacher-kickoff-1-unlock-your-next-level\/?video=35577\" \n                       class=\"trigger-video-ajax\"\n                       data-video-id=\"35577\">\n                        HTA Teacher Kickoff #1 &#8211; Unlock Your Next Level                    <\/a>\n                <\/h3>\n                <button type=\"button\" class=\"cvp-card-more-btn\"\n                        data-video-id=\"35577\"\n                        data-video-link=\"https:\/\/happyteachersacademy.com\/community\/?video=35577\"\n                        data-video-title=\"HTA Teacher Kickoff #1 &#8211; Unlock Your Next Level\"\n                        data-fav-status=\"not_favorite\"\n                        aria-label=\"More options\">\n                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"12\" cy=\"5\" r=\"2\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/><circle cx=\"12\" cy=\"19\" r=\"2\"\/><\/svg>\n                <\/button>\n            <\/div>\n\n            <!-- Meta Row -->\n            <div class=\"cvp-card-meta\">\n                                    <span class=\"cvp-card-meta__duration\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"14\" height=\"14\" style=\"vertical-align: -4px; margin-right: 4px;\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\"\/><\/svg>\n                        66 mins                    <\/span>\n                \n                <span class=\"cvp-card-meta__separator\">|<\/span><span class=\"cvp-card-meta__language\">Vietnamese<\/span>            <\/div>\n        <\/div>\n\n        <!-- Card Footer -->\n        <div class=\"cvp-card-footer\">\n                            <div class=\"cvp-card-instructor cvp-card-instructor--multi\">\n                    <div class=\"cvp-card-instructor__author\">\n                                                    <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/251\/69c56f9ab5b7f-bpthumb.jpg\" \n                                 alt=\"L\u00e2m T\u01b0\u1eddng Duy L\u00e2m\" \n                                 class=\"cvp-card-instructor__avatar\"\n                                 loading=\"lazy\" \/>\n                                                <span class=\"cvp-card-instructor__name\">L\u00e2m T\u01b0\u1eddng Duy L\u00e2m<\/span>\n                    <\/div>\n                                            <div class=\"cvp-card-instructor__divider\"><\/div>\n                        <div class=\"cvp-card-instructor__author\">\n                                                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/608\/699d6651d839c-bpthumb.jpg\" \n                                     alt=\"Bich Nguyen\" \n                                     class=\"cvp-card-instructor__avatar\"\n                                     loading=\"lazy\" \/>\n                                                        <span class=\"cvp-card-instructor__name\">Bich Nguyen<\/span>\n                        <\/div>\n                                    <\/div>\n            \n                            <div class=\"cvp-card-footer-rating\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"#eab308\" width=\"14\" height=\"14\" style=\"flex-shrink:0;\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n                    <span>5.0<\/span>\n                <\/div>\n            \n                            <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/hta-teacher-kickoff-1-unlock-your-next-level\/?video=35577\" \n                   class=\"cvp-card-watch-btn trigger-video-ajax\"\n                   data-video-id=\"35577\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" class=\"cvp-icon-play\"><circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#d97706\"\/><path d=\"M10 8l6 4-6 4V8z\" fill=\"white\"\/><\/svg>                    Start Watching                <\/a>\n                    <\/div>\n    <\/div>\n        <div class=\"cvp-video-card cvp-card-clickable cvp-card-unlocked\" \n         id=\"cvp-video-35566\"\n         data-video-id=\"35566\"\n         data-video-link=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/teacher-kickoff-unlock-your-next-level\/?video=35566\"\n         data-has-access=\"1\"\n         style=\"cursor: pointer;\">\n        <!-- Card Header with Gradient\/Image -->\n        <div class=\"cvp-card-header \" \n             style=\"background-image: url('https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2026\/05\/645888846_2410022249428149_154043542357054714_n.jpg');\">\n            \n            \n                            <div class=\"cvp-card-duration-overlay\">59 mins<\/div>\n            \n                    <\/div>\n\n        <!-- Card Body -->\n        <div class=\"cvp-card-body\">\n                            <div class=\"cvp-card-mobile-meta\">\n                                            <span class=\"cvp-card-mobile-meta__type\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Activity Video<\/span>\n                                                        <\/div>\n            \n            <!-- Top Row: Badge + Actions -->\n            <div class=\"cvp-card-body__top\">\n                <span class=\"cvp-card-badge\" style=\"background: #dbeafe; color: #2563eb; border-color: #bfdbfe;\">Activity Video<\/span>\n                \n                <div class=\"cvp-card-actions\">\n                                        \n                                        \n                                        \n                    <div class=\"cvp-tooltip-wrapper\">\n                        <button type=\"button\" \n                                class=\"share-button\"\n                                data-link=\"https:\/\/happyteachersacademy.com\/community\/?video=35566\"\n                                data-title=\"PROFESSIONAL MEETUP FOR ENGLISH TEACHERS\"\n                                aria-label=\"Share\">\n                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/copy.png\" alt=\"Share\" style=\"width: 24px; height: 24px;\">                        <\/button>\n                        <span class=\"cvp-tooltip hover-toast\">Share<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Title row with 3-dot menu on mobile -->\n            <div class=\"cvp-card-title-row\">\n                <h3 class=\"cvp-card-body__title\">\n                    <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/teacher-kickoff-unlock-your-next-level\/?video=35566\" \n                       class=\"trigger-video-ajax\"\n                       data-video-id=\"35566\">\n                        PROFESSIONAL MEETUP FOR ENGLISH TEACHERS                    <\/a>\n                <\/h3>\n                <button type=\"button\" class=\"cvp-card-more-btn\"\n                        data-video-id=\"35566\"\n                        data-video-link=\"https:\/\/happyteachersacademy.com\/community\/?video=35566\"\n                        data-video-title=\"PROFESSIONAL MEETUP FOR ENGLISH TEACHERS\"\n                        data-fav-status=\"not_favorite\"\n                        aria-label=\"More options\">\n                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"12\" cy=\"5\" r=\"2\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/><circle cx=\"12\" cy=\"19\" r=\"2\"\/><\/svg>\n                <\/button>\n            <\/div>\n\n            <!-- Meta Row -->\n            <div class=\"cvp-card-meta\">\n                                    <span class=\"cvp-card-meta__duration\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"14\" height=\"14\" style=\"vertical-align: -4px; margin-right: 4px;\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\"\/><\/svg>\n                        59 mins                    <\/span>\n                \n                <span class=\"cvp-card-meta__separator\">|<\/span><span class=\"cvp-card-meta__language\">Vietnamese<\/span>            <\/div>\n        <\/div>\n\n        <!-- Card Footer -->\n        <div class=\"cvp-card-footer\">\n                            <div class=\"cvp-card-instructor cvp-card-instructor--multi\">\n                    <div class=\"cvp-card-instructor__author\">\n                                                    <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/284\/68662ad28cb19-bpthumb.jpg\" \n                                 alt=\"Tran Thi Minh Toai (Ms. Ami Tran) Tr\u1ea7n Th\u1ecb\" \n                                 class=\"cvp-card-instructor__avatar\"\n                                 loading=\"lazy\" \/>\n                                                <span class=\"cvp-card-instructor__name\">Tran Thi Minh Toai (Ms. Ami Tran) Tr\u1ea7n Th\u1ecb<\/span>\n                    <\/div>\n                                            <div class=\"cvp-card-instructor__divider\"><\/div>\n                        <div class=\"cvp-card-instructor__author\">\n                                                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/251\/69c56f9ab5b7f-bpthumb.jpg\" \n                                     alt=\"L\u00e2m T\u01b0\u1eddng Duy L\u00e2m\" \n                                     class=\"cvp-card-instructor__avatar\"\n                                     loading=\"lazy\" \/>\n                                                        <span class=\"cvp-card-instructor__name\">L\u00e2m T\u01b0\u1eddng Duy L\u00e2m<\/span>\n                        <\/div>\n                                    <\/div>\n            \n            \n                            <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/teacher-kickoff-unlock-your-next-level\/?video=35566\" \n                   class=\"cvp-card-watch-btn trigger-video-ajax\"\n                   data-video-id=\"35566\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" class=\"cvp-icon-play\"><circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#d97706\"\/><path d=\"M10 8l6 4-6 4V8z\" fill=\"white\"\/><\/svg>                    Start Watching                <\/a>\n                    <\/div>\n    <\/div>\n        <div class=\"cvp-video-card cvp-card-clickable cvp-card-locked\" \n         id=\"cvp-video-34792\"\n         data-video-id=\"34792\"\n         data-video-link=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/building-strong-foundations-in-sentence-formation\/?video=34792\"\n         data-has-access=\"0\"\n         style=\"cursor: pointer;\">\n        <!-- Card Header with Gradient\/Image -->\n        <div class=\"cvp-card-header \" \n             style=\"background-image: url('https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2026\/04\/image.png');\">\n            \n            \n                            <div class=\"cvp-card-duration-overlay\">89 mins<\/div>\n            \n                    <\/div>\n\n        <!-- Card Body -->\n        <div class=\"cvp-card-body\">\n                            <div class=\"cvp-card-mobile-meta\">\n                                            <span class=\"cvp-card-mobile-meta__type\" style=\"background: #38b6ff; color: #ffffff; border-color: #38b6ff;\">Workshop Recording<\/span>\n                                                            <div class=\"cvp-card-mobile-meta__cats\">\n                                                    <span class=\"cvp-card-mobile-meta__cat\">Acquisition Stages<\/span>\n                                                                            <span class=\"cvp-card-mobile-meta__sep\">&middot;<\/span>\n                                                                            <span class=\"cvp-card-mobile-meta__cat\">Controlled Practice<\/span>\n                                            <\/div>\n                                    <\/div>\n            \n            <!-- Top Row: Badge + Actions -->\n            <div class=\"cvp-card-body__top\">\n                <span class=\"cvp-card-badge\" style=\"background: #38b6ff; color: #ffffff; border-color: #38b6ff;\">Workshop Recording<\/span>\n                \n                <div class=\"cvp-card-actions\">\n                                            <div class=\"cvp-tooltip-wrapper\">\n                            <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/building-strong-foundations-in-sentence-formation\/?video=34792\" title=\"Locked Content\">\n                                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"#d4a24c\" class=\"cvp-icon-lock\"><path d=\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z\"\/><\/svg>                            <\/a>\n                            <span class=\"cvp-tooltip\">Unlock to watch<\/span>\n                        <\/div>\n                                        \n                                        \n                                        \n                    <div class=\"cvp-tooltip-wrapper\">\n                        <button type=\"button\" \n                                class=\"share-button\"\n                                data-link=\"https:\/\/happyteachersacademy.com\/community\/?video=34792\"\n                                data-title=\"Building Strong Foundations in Sentence Formation\"\n                                aria-label=\"Share\">\n                            <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/2025\/08\/copy.png\" alt=\"Share\" style=\"width: 24px; height: 24px;\">                        <\/button>\n                        <span class=\"cvp-tooltip hover-toast\">Share<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Title row with 3-dot menu on mobile -->\n            <div class=\"cvp-card-title-row\">\n                <h3 class=\"cvp-card-body__title\">\n                    <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/building-strong-foundations-in-sentence-formation\/?video=34792\" \n                       class=\"\"\n                       data-video-id=\"34792\">\n                        Building Strong Foundations in Sentence Formation                    <\/a>\n                <\/h3>\n                <button type=\"button\" class=\"cvp-card-more-btn\"\n                        data-video-id=\"34792\"\n                        data-video-link=\"https:\/\/happyteachersacademy.com\/community\/?video=34792\"\n                        data-video-title=\"Building Strong Foundations in Sentence Formation\"\n                        data-fav-status=\"not_favorite\"\n                        aria-label=\"More options\">\n                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"12\" cy=\"5\" r=\"2\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/><circle cx=\"12\" cy=\"19\" r=\"2\"\/><\/svg>\n                <\/button>\n            <\/div>\n\n            <!-- Meta Row -->\n            <div class=\"cvp-card-meta\">\n                                    <span class=\"cvp-card-meta__duration\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"14\" height=\"14\" style=\"vertical-align: -4px; margin-right: 4px;\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\"\/><\/svg>\n                        89 mins                    <\/span>\n                \n                <span class=\"cvp-card-meta__separator\">|<\/span><span class=\"cvp-card-meta__category\">Acquisition Stages<\/span><span class=\"cvp-card-meta__separator\">|<\/span><span class=\"cvp-card-meta__language\">English<\/span>            <\/div>\n        <\/div>\n\n        <!-- Card Footer -->\n        <div class=\"cvp-card-footer\">\n                            <div class=\"cvp-card-instructor\">\n                    <div class=\"cvp-card-instructor__author\">\n                                                    <img decoding=\"async\" src=\"https:\/\/happyteachersacademy.com\/community\/wp-content\/uploads\/sites\/2\/avatars\/25\/685d0a2090d35-bpthumb.png\" \n                                 alt=\"Nadia Jacobs\" \n                                 class=\"cvp-card-instructor__avatar\"\n                                 loading=\"lazy\" \/>\n                                                <span class=\"cvp-card-instructor__name\">Nadia Jacobs<\/span>\n                    <\/div>\n                                    <\/div>\n            \n                            <div class=\"cvp-card-footer-rating\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"#eab308\" width=\"14\" height=\"14\" style=\"flex-shrink:0;\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n                    <span>5.0<\/span>\n                <\/div>\n            \n                            <a href=\"https:\/\/happyteachersacademy.com\/community\/video-resources\/building-strong-foundations-in-sentence-formation\/?video=34792\" \n                   class=\"cvp-card-lock-btn\"\n                   data-video-id=\"34792\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"#d4a24c\" class=\"cvp-icon-lock\"><path d=\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z\"\/><\/svg>                    Video locked - Unlock to watch                <\/a>\n                    <\/div>\n    <\/div>\n    <span class=\"cvp-initial-found-posts\" data-found-posts=\"311\" style=\"display:none;\"><\/span>                <\/div>\n                <div class=\"cvp-load-more-container\" style=\"text-align:center; padding: 24px 0;\">\n                    <button type=\"button\" class=\"cvp-load-more-btn\">\n                        <span class=\"cvp-load-more-label\">Load More<\/span>\n                        <span class=\"cvp-load-more-spinner\" style=\"display:none;\"><span class=\"loader-spinner\"><\/span> Loading...<\/span>\n                    <\/button>\n                <\/div>\n            <\/div>\n                    <div class=\"tab-content \" id=\"twinkl-activities\">\n                <div id=\"videos-grid-twinkl-activities\" class=\"videos-grid\" data-page=\"1\" data-tab=\"twinkl-activities\">\n                                    <\/div>\n                <div class=\"cvp-load-more-container\" style=\"text-align:center; padding: 24px 0;\">\n                    <button type=\"button\" class=\"cvp-load-more-btn\">\n                        <span class=\"cvp-load-more-label\">Load More<\/span>\n                        <span class=\"cvp-load-more-spinner\" style=\"display:none;\"><span class=\"loader-spinner\"><\/span> Loading...<\/span>\n                    <\/button>\n                <\/div>\n            <\/div>\n                    <div class=\"tab-content \" id=\"my-videos\">\n                <div id=\"videos-grid-my-videos\" class=\"videos-grid\" data-page=\"1\" data-tab=\"my-videos\">\n                                    <\/div>\n                <div class=\"cvp-load-more-container\" style=\"text-align:center; padding: 24px 0;\">\n                    <button type=\"button\" class=\"cvp-load-more-btn\">\n                        <span class=\"cvp-load-more-label\">Load More<\/span>\n                        <span class=\"cvp-load-more-spinner\" style=\"display:none;\"><span class=\"loader-spinner\"><\/span> Loading...<\/span>\n                    <\/button>\n                <\/div>\n            <\/div>\n            <\/div>\n        <\/div>\n    <script>\n    (function(){\n        var el = document.querySelector('.cvp-activities-page');\n        if (el) el.classList.add('cvp-ready');\n\n        \/* \u2500\u2500 Sticky mini-player on mobile scroll \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n        if (window.innerWidth >= 768) return;\n\n        var isSticky = false;\n        var spacer = null;\n        var stickyEl = null;\n        var savedAncestors = [];\n        var filterSticky = false;\n        var filterSpacer = null;\n\n        \/**\n         * BuddyBoss (and some themes) set transform \/ will-change \/ filter \/\n         * perspective on ancestor elements. These create a CSS \"containing block\"\n         * that converts position:fixed into position:absolute relative to that\n         * ancestor instead of the viewport. We temporarily clear them while the\n         * video is pinned and restore them when it un-pins.\n         *\/\n        function clearContainingBlocks(target) {\n            var arr = [];\n            var p = target.parentElement;\n            while (p && p !== document.documentElement) {\n                var cs = getComputedStyle(p);\n                if (cs.transform !== 'none' ||\n                    cs.willChange === 'transform' || cs.willChange === 'perspective' ||\n                    cs.filter !== 'none' ||\n                    cs.perspective !== 'none' ||\n                    (cs.backdropFilter && cs.backdropFilter !== 'none')) {\n                    arr.push({\n                        el: p,\n                        transform: p.style.transform,\n                        willChange: p.style.willChange,\n                        filter: p.style.filter,\n                        perspective: p.style.perspective,\n                        backdropFilter: p.style.backdropFilter || ''\n                    });\n                    p.style.setProperty('transform', 'none', 'important');\n                    p.style.setProperty('will-change', 'auto', 'important');\n                    p.style.setProperty('filter', 'none', 'important');\n                    p.style.setProperty('perspective', 'none', 'important');\n                    p.style.setProperty('backdrop-filter', 'none', 'important');\n                }\n                p = p.parentElement;\n            }\n            return arr;\n        }\n\n        function restoreAncestors(arr) {\n            for (var i = 0; i < arr.length; i++) {\n                var o = arr[i];\n                o.el.style.transform = o.transform;\n                o.el.style.willChange = o.willChange;\n                o.el.style.filter = o.filter;\n                o.el.style.perspective = o.perspective;\n                o.el.style.backdropFilter = o.backdropFilter;\n            }\n        }\n\n        function onScroll() {\n            \/* Re-query every tick: AJAX replaces the DOM element *\/\n            var videoArea = document.querySelector('.cvp-single-video-area');\n            var filtersEl = document.querySelector('.cvp-filters-section');\n            if (!videoArea) { cleanup(); return; }\n\n            \/* Detect AJAX-replaced element: old reference is no longer in document *\/\n            if (isSticky && stickyEl && !document.body.contains(stickyEl)) {\n                cleanup();\n            }\n\n            if (isSticky) {\n                \/* Un-pin when spacer scrolls back into view *\/\n                if (spacer && spacer.getBoundingClientRect().top >= 0) {\n                    videoArea.classList.remove('cvp-is-sticky');\n                    videoArea.style.left = '';\n                    videoArea.style.width = '';\n                    videoArea.style.height = '';\n                    restoreAncestors(savedAncestors);\n                    savedAncestors = [];\n                    if (spacer.parentNode) spacer.parentNode.removeChild(spacer);\n                    spacer = null;\n                    stickyEl = null;\n                    isSticky = false;\n                    \/* Also un-pin filters *\/\n                    unpinFilters(filtersEl);\n                }\n            } else {\n                \/* Pin when the video area's TOP reaches the viewport top *\/\n                var rect = videoArea.getBoundingClientRect();\n                if (rect.top <= 0) {\n                    spacer = document.createElement('div');\n                    spacer.className = 'cvp-sticky-spacer';\n                    spacer.style.height = rect.height + 'px';\n                    videoArea.parentNode.insertBefore(spacer, videoArea);\n\n                    \/* Lock to original position & dimensions so nothing shifts *\/\n                    videoArea.style.left = rect.left + 'px';\n                    videoArea.style.width = rect.width + 'px';\n                    videoArea.style.height = rect.height + 'px';\n\n                    savedAncestors = clearContainingBlocks(videoArea);\n                    videoArea.classList.add('cvp-is-sticky');\n                    stickyEl = videoArea;\n                    isSticky = true;\n                    console.log('[CVP Sticky] Pinned \u2013 cleared', savedAncestors.length, 'ancestor(s)');\n                }\n            }\n\n            \/* \u2500\u2500 Sticky filter bar (pins right below the sticky video) \u2500\u2500 *\/\n            if (filtersEl && isSticky && videoArea) {\n                if (!filterSticky) {\n                    var fRect = filterSpacer\n                        ? filterSpacer.getBoundingClientRect()\n                        : filtersEl.getBoundingClientRect();\n                    var videoH = videoArea.getBoundingClientRect().height;\n                    if (fRect.top <= videoH) {\n                        filterSpacer = document.createElement('div');\n                        filterSpacer.className = 'cvp-filters-sticky-spacer';\n                        filterSpacer.style.height = filtersEl.offsetHeight + 'px';\n                        filtersEl.parentNode.insertBefore(filterSpacer, filtersEl);\n                        filtersEl.classList.add('cvp-filters-sticky');\n                        filtersEl.style.top = videoH + 'px';\n                        filterSticky = true;\n                    }\n                } else {\n                    \/* Un-pin filter when its spacer scrolls back *\/\n                    if (filterSpacer) {\n                        var videoH2 = videoArea.getBoundingClientRect().height;\n                        if (filterSpacer.getBoundingClientRect().top > videoH2) {\n                            unpinFilters(filtersEl);\n                        }\n                    }\n                }\n            } else if (filterSticky && !isSticky) {\n                unpinFilters(filtersEl);\n            }\n        }\n\n        function unpinFilters(filtersEl) {\n            if (filtersEl) filtersEl.classList.remove('cvp-filters-sticky');\n            if (filtersEl) filtersEl.style.top = '';\n            if (filterSpacer && filterSpacer.parentNode) filterSpacer.parentNode.removeChild(filterSpacer);\n            filterSpacer = null;\n            filterSticky = false;\n        }\n\n        function cleanup() {\n            if (stickyEl) {\n                stickyEl.classList.remove('cvp-is-sticky');\n                stickyEl.style.left = '';\n                stickyEl.style.width = '';\n                stickyEl.style.height = '';\n            }\n            restoreAncestors(savedAncestors);\n            savedAncestors = [];\n            if (spacer && spacer.parentNode) spacer.parentNode.removeChild(spacer);\n            spacer = null;\n            stickyEl = null;\n            isSticky = false;\n            unpinFilters(document.querySelector('.cvp-filters-section'));\n        }\n\n        document.addEventListener('cvp:videoLoaded', cleanup);\n        window.addEventListener('scroll', onScroll, { passive: true });\n        console.log('[CVP Sticky] Initialized \u2013 mobile mode');\n    })();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"class_list":["post-32204","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/pages\/32204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/comments?post=32204"}],"version-history":[{"count":4,"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/pages\/32204\/revisions"}],"predecessor-version":[{"id":33793,"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/pages\/32204\/revisions\/33793"}],"wp:attachment":[{"href":"https:\/\/happyteachersacademy.com\/community\/wp-json\/wp\/v2\/media?parent=32204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}