{"id":603851,"date":"2026-04-18T19:48:53","date_gmt":"2026-04-18T11:48:53","guid":{"rendered":"https:\/\/www.hollyland.com\/?post_type=product&#038;p=603851"},"modified":"2026-04-18T21:21:52","modified_gmt":"2026-04-18T13:21:52","slug":"pyro-ultra","status":"publish","type":"product","link":"https:\/\/www.hollyland.com\/product\/pyro-ultra","title":{"rendered":"Pyro\u00a0Ultra"},"content":{"rendered":"\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/css\/global.Cb-5JuQs.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/css\/pyro-ultra.BVd9YYg4.css\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/vanilla-lazyload\/19.1.3\/lazyload.min.js\"><\/script>\n\n\n\n<style>\n\t\t.hl-product-bar {\n\t\t\tbackground-color: #101010;\n\t\t}\n<\/style>\n\n\n\n<div class=\"hl-common-styles pyro-ultra\">\n        <div class=\"section-welcome\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-info\">\n                        <div class=\"section-subtitle\">Wireless Video Solution<\/div>\n                        <div class=\"section-title\"> <span>Pyro<\/span><span class=\"highlight-text\">\n                                Ultra<\/span> <\/div>\n                        <div class=\"section-slogan\">Link Infinite<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\" id=\"welcomeMediaWrapper\">\n                        <div class=\"section-feature\">\n                            <picture class=\"lazy-picture\">\n                                <source\n                                    srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/welcome_end_small.jpg\"\n                                    media=\"(max-width: 768px)\">\n                                <source\n                                    srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/welcome_end_large.jpg\"\n                                    media=\"(min-width: 0px)\"> <img decoding=\"async\" loading=\"lazy\"\n                                    src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/welcome_end_large.jpg\"\n                                    alt=\"\">\n                            <\/picture>\n                        <\/div>\n                        <div class=\"section-video\"> <video muted playsinline preload=\"auto\">\n                                <source src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/welcome_large.mp4\"\n                                    type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                <source src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/welcome_small.mp4\"\n                                    type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                            <\/video> <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-highlights\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <h1 class=\"section-title\" data-staggered-item>\n                            Highlights Overview.\n                        <\/h1> <button type=\"button\" class=\"section-watch-film\" data-staggered-item data-id=\"watch-film\">\n                            <span>Watch the film<\/span> <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\"\n                                viewBox=\"0 0 20 20\" fill=\"none\">\n                                <path\n                                    d=\"M9.99935 18.3333C14.6017 18.3333 18.3327 14.6023 18.3327 9.99996C18.3327 5.39758 14.6017 1.66663 9.99935 1.66663C5.39697 1.66663 1.66602 5.39758 1.66602 9.99996C1.66602 14.6023 5.39697 18.3333 9.99935 18.3333Z\"\n                                    stroke=\"#007AFF\" stroke-width=\"1.25\" stroke-linejoin=\"round\"><\/path>\n                                <path\n                                    d=\"M8 10V6.93426C8 6.53491 8.44507 6.29672 8.77735 6.51823L11 8L13.376 9.58397C13.6728 9.78189 13.6728 10.2181 13.376 10.416L11 12L8.77735 13.4818C8.44507 13.7033 8 13.4651 8 13.0657V10Z\"\n                                    fill=\"#007AFF\"><\/path>\n                            <\/svg> <\/button>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"swiper section-highlights-swiper\">\n                            <div class=\"swiper-wrapper\">\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight01_end_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight01_end_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight01_end_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-video\"> <video class=\"lazy\" muted playsinline>\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight01_large.mp4\"\n                                                type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight01_small.mp4\"\n                                                type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                        <\/video> <\/div>\n                                    <div class=\"section-title-wrapper section-center\">\n                                        <div class=\"section-title\"> <span>1TX &#038;<\/span>&nbsp;<span\n                                                class=\"highlight-text\">Unlimited<\/span>&nbsp;<span><span>RX<\/span>\n                                            <\/span> <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight02_end_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight02_end_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight02_end_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-video\"> <video class=\"lazy\" muted playsinline>\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight02_large.mp4\"\n                                                type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight02_small.mp4\"\n                                                type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                        <\/video> <\/div>\n                                    <div class=\"section-title-wrapper\">\n                                        <div class=\"section-title\"> <span\n                                                class=\"highlight-text\">4K60<\/span>&nbsp;<span><span>UHD<\/span> <\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight03_start_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight03_start_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight03_start_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-video\"> <video class=\"lazy\" muted playsinline>\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight03_large.mp4\"\n                                                type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight03_small.mp4\"\n                                                type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                        <\/video> <\/div>\n                                    <div class=\"section-title-wrapper\">\n                                        <div class=\"section-title\"> <span\n                                                class=\"highlight-text\">focus<\/span>&nbsp;<span><span>Mode<\/span> <\/span>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/highlight04_new_end_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/highlight04_new_end_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/highlight04_new_end_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-video\"> <video class=\"lazy\" muted playsinline>\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight04_new_large.mp4\"\n                                                type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                            <source\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight04_new_small.mp4\"\n                                                type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                        <\/video> <\/div>\n                                    <div class=\"section-title-wrapper\">\n                                        <div class=\"section-title\"> <span>Proprietary<\/span>&nbsp;<span\n                                                class=\"highlight-text\">TWiFi<\/span><br><span><span>Technology<\/span>\n                                            <\/span> <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight05_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight05_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight05_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title-wrapper section-center\">\n                                        <div class=\"section-title\"> <span\n                                                class=\"highlight-text\">Pyro<\/span>&nbsp;<span><span>Ecosystem<\/span>\n                                            <\/span> <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight06_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight06_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight06_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title-wrapper section-center\">\n                                        <div class=\"section-title\"> <span\n                                                class=\"highlight-text\">DFS<\/span>&nbsp;<span><span>Certified<\/span>\n                                            <\/span> <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight07_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight07_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight07_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title-wrapper section-center\">\n                                        <div class=\"section-title\"> <span class=\"highlight-text\">UVC &#038;\n                                                RTMP<\/span>&nbsp;<span><span>Steaming<\/span> <\/span> <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight08_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight08_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/highlight08_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title-wrapper section-center\">\n                                        <div class=\"section-title\"> <span class=\"highlight-text\">HDMI &#038;\n                                                SDI<\/span>&nbsp;<span><span>Flexibility<\/span> <\/span> <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"swiper-control-pagination\">\n                            <div class=\"swiper-pagination-container\">\n                                <div class=\"swiper-pagination\"><\/div>\n                                <div class=\"swiper-button-control\" data-state=\"paused\">\n                                    <div class=\"icon-playing\"> <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\"\n                                            height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\">\n                                            <path\n                                                d=\"M9 15V8.49683C9 6.95 10.6808 5.98869 12.014 6.77296L17.5 10L23.0694 13.2761C24.384 14.0494 24.384 15.9506 23.0694 16.7239L17.5 20L12.014 23.227C10.6808 24.0113 9 23.05 9 21.5032V15Z\"\n                                                fill=\"white\" fill-opacity=\"0.7\"><\/path>\n                                        <\/svg> <\/div>\n                                    <div class=\"icon-paused\"> <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\"\n                                            height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\">\n                                            <path d=\"M10 8L10 22\" stroke=\"white\" stroke-opacity=\"0.7\" stroke-width=\"6\"\n                                                stroke-linecap=\"round\"><\/path>\n                                            <path d=\"M20 8L20 22\" stroke=\"white\" stroke-opacity=\"0.7\" stroke-width=\"6\"\n                                                stroke-linecap=\"round\"><\/path>\n                                        <\/svg> <\/div>\n                                    <div class=\"icon-replay\"> <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\"\n                                            height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\">\n                                            <path\n                                                d=\"M13.4316 3.58618C14.2126 2.80518 15.4797 2.80525 16.2607 3.58618L19.6475 6.97192C20.3973 7.72166 20.4314 8.92674 19.7256 9.71802L16.7656 13.0364C16.0305 13.8605 14.7667 13.9324 13.9424 13.1975C13.1618 12.5012 13.0555 11.3312 13.6709 10.509C12.8034 10.7435 11.9521 11.2408 11.2061 11.9963C9.19471 14.0337 9.21566 17.3169 11.2529 19.3284C13.2903 21.3395 16.5726 21.3177 18.584 19.2805C19.59 18.2615 20.0866 16.9354 20.0781 15.6057C20.0711 14.5012 20.9619 13.6001 22.0664 13.593C23.1709 13.5861 24.0721 14.4758 24.0791 15.5803C24.094 17.9275 23.2119 20.2869 21.4307 22.0911C17.867 25.7003 12.0518 25.7375 8.44238 22.1741C4.83324 18.6103 4.79669 12.7951 8.36035 9.18579C9.76752 7.76075 11.5443 6.7794 13.4805 6.46313L13.4316 6.41431C12.651 5.63345 12.6512 4.36723 13.4316 3.58618Z\"\n                                                fill=\"white\" fill-opacity=\"0.7\"><\/path>\n                                        <\/svg> <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-introduction\">\n            <div class=\"section-sticky-container\">\n                <div class=\"section-sticky\">\n                    <div class=\"section-screen\">\n                        <div class=\"section-feature\">\n                            <picture class=\"lazy-picture\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/introduction_end_small.jpg\"\n                                    media=\"(max-width: 768px)\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/introduction_end_large.jpg\"\n                                    media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/introduction_end_large.jpg\"\n                                    alt=\"\">\n                            <\/picture>\n                        <\/div>\n                        <div class=\"section-video\"> <video class=\"lazy\" autoplay loop muted playsinline>\n                                <source\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/introduction_large.mp4\"\n                                    type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                <source\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/introduction_small.mp4\"\n                                    type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                            <\/video> <\/div>\n                        <div class=\"section-mask\"><\/div>\n                        <div class=\"section-info\">\n                            <div class=\"section-description\">\n                                Pyro Ultra is a revolutionary wireless video\n                                transmission system that connects one transmitter to\n                                unlimited receivers, expanding monitoring without\n                                limits. With true 4K\/60fps capture, and Focus Mode\n                                reducing latency to as low as 20ms, Pyro Ultra\n                                brings you cinematic clarity and tracks every lens\n                                adjustment with absolute precision. Powered by our\n                                proprietary TWiFi technology, it offers a\n                                line-of-sight transmission range of up to 4,900 ft.\n                                (1.5 km), with automatic frequency hopping for\n                                stable, interference-free transmission, so you can\n                                push further, work faster, and collaborate without\n                                compromise.\n                                <br><br>\n                                As part of the Pyro ecosystem, Ultra integrates with the\n                                entire Pyro family to scale workflows across productions\n                                of any size. One transmitter. All Pyros. Unlimited receivers.\n                                This is Ultra.\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-link-infinite\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-title\" data-staggered-item> <span class=\"highlight-text\">Link\n                                In<\/span><span>finite<\/span> <\/div>\n                        <div class=\"section-description\" data-staggered-item>\n                            Powered by Hollyland&#8217;s TWiFi transmission technology,\n                            Pyro Ultra enables one transmitter to connect with\n                            unlimited receivers, delivering stable, fluid\n                            performance that feels effortlessly professional.<sup><a\n                                    href=\"#pyro-ultra-note\">[1]<\/a><\/sup> <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-source\" data-staggered-item>\n                            <div class=\"section-feature\">\n                                <picture class=\"lazy-picture\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight01_end_small.jpg\"\n                                        media=\"(max-width: 768px)\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight01_end_large.jpg\"\n                                        media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight01_end_large.jpg\"\n                                        alt=\"\">\n                                <\/picture>\n                            <\/div>\n                            <div class=\"section-video\"> <video class=\"lazy\" muted playsinline>\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight01_large.mp4\"\n                                        type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight01_small.mp4\"\n                                        type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                <\/video> <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-mode\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-title\" data-staggered-item>\n                            Broadcast Mode\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item> <span>\n                                With broadcast mode enabled, Pyro Ultra delivers\n                                real-time monitoring across an unlimited number of\n                                receivers with smooth, reliable clarity.\n                            <\/span> <span>\n                                The standard setup supports up to 6 monitoring\n                                screens (4 receivers and 2 mobile apps), offering\n                                just the right coverage for lean teams.\n                            <\/span> <\/div>\n                    <\/div>\n                    <div class=\"switch-container\" data-staggered-item>\n                        <div class=\"switch-background\"><\/div>\n                        <div class=\"switch-button active\">Activated<\/div>\n                        <div class=\"switch-button\">Deactivated<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\" data-staggered-item>\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"swiper section-mode-swiper\">\n                            <div class=\"swiper-wrapper\">\n                                <div class=\"swiper-slide\">\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/mode01_small.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/mode01_new_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/mode01_new_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\">\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/mode02_small.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/mode02_new_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/update\/mode02_new_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-vision\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\" data-staggered-item>\n                        <div class=\"section-title\"> <span>Your Vision<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                            <span class=\"highlight-text\">Ultra Clear<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"section-feature\" data-staggered-item>\n                        <picture class=\"lazy-picture\">\n                            <source\n                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/vision_small.jpg\"\n                                media=\"(max-width: 768px)\">\n                            <source\n                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/vision_large.jpg\"\n                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/vision_large.jpg\"\n                                alt=\"\">\n                        <\/picture>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-list\">\n                            <div class=\"section-item\" data-staggered-item>\n                                <div class=\"section-item-subtitle\">\n                                    UHD Resolution\n                                <\/div>\n                                <div class=\"section-item-title\">4K60<\/div>\n                            <\/div>\n                            <div class=\"section-item\" data-staggered-item>\n                                <div class=\"section-item-subtitle\">\n                                    High Transmission Rate\n                                <\/div>\n                                <div class=\"section-item-title\">12 Mbps<\/div>\n                            <\/div>\n                            <div class=\"section-item\" data-staggered-item>\n                                <div class=\"section-item-subtitle\">\n                                    Proprietary Codec Technology\n                                <\/div>\n                                <div class=\"section-item-title\">TWiFi<\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item> <span class=\"highlight-text\">Just right.\n                                Just 4K60.<\/span> With support for true 4K60 at 12 Mbps over HDMI, Pyro Ultra\n                            leverages the powerful TWiFi codec to render each moment with\n                            stunning clarity, nuance, and depth.\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-focus\">\n            <div class=\"section-sticky-container\">\n                <div class=\"section-sticky\">\n                    <div class=\"section-screen\"> <canvas id=\"focus-canvas\" width=\"1440\" height=\"480\"><\/canvas> <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-focus-pulling\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-source\" data-staggered-item>\n                            <div class=\"section-feature\">\n                                <picture class=\"lazy-picture\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight03_start_small.jpg\"\n                                        media=\"(max-width: 768px)\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight03_start_large.jpg\"\n                                        media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/highlight03_start_large.jpg\"\n                                        alt=\"\">\n                                <\/picture>\n                            <\/div>\n                            <div class=\"section-video\"> <video class=\"lazy\" autoplay loop muted playsinline>\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight03_large.mp4\"\n                                        type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/highlight03_small.mp4\"\n                                        type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                <\/video> <\/div>\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item> <span class=\"highlight-text\">For focus\n                                pulling, down to 20ms<sup><a href=\"#pyro-ultra-note\">[2]<\/a><\/sup>.<\/span> When enabled,\n                            Focus Mode reduces latency on enabled devices\n                            to as low as 20 ms, so every pull feels precise and responsive.\n                            Whether you&apos;re catching a subtle glance, pulling focus\n                            on a moving subject, or tracking a quiet moment, everything\n                            lands right on cue. The rest of your system flows just as\n                            smoothly.\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-twifi\">\n            <div class=\"section-container\">\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-source\">\n                            <div class=\"section-feature\">\n                                <picture class=\"lazy-picture\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/twifi_end_small.jpg\"\n                                        media=\"(max-width: 768px)\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/twifi_end_large.jpg\"\n                                        media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/twifi_end_large.jpg\"\n                                        alt=\"\">\n                                <\/picture>\n                            <\/div>\n                            <div class=\"section-video\"> <video class=\"lazy\" muted playsinline>\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/twifi_large.mp4\"\n                                        type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/twifi_small.mp4\"\n                                        type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                <\/video> <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-twifi-technology\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-subtitle\" data-staggered-item>\n                            So Far. So Ultra.\n                        <\/div>\n                        <div class=\"section-title\" data-staggered-item>\n                            <div class=\"section-title-wrapper\">\n                                <div class=\"section-title-absolute gradient-text-1\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                                <div class=\"section-title-absolute gradient-text-2\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                                <div class=\"section-title-absolute gradient-text-3\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                                <div class=\"section-title-absolute gradient-text-4\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                                <div class=\"section-title-absolute gradient-text-5\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                                <div class=\"section-title-absolute gradient-text-6\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                                <div class=\"section-title-default\">\n                                    <div class=\"section-title-text\">TWiFi<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"section-title-normal\" data-staggered-item>\n                            Transmission Technology\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-source\" data-staggered-item>\n                            <div class=\"section-feature\">\n                                <picture class=\"lazy-picture\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/technology_end_small.jpg\"\n                                        media=\"(max-width: 768px)\">\n                                    <source\n                                        data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/technology_end_large.jpg\"\n                                        media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/poster_jpg\/technology_end_large.jpg\"\n                                        alt=\"\">\n                                <\/picture>\n                            <\/div>\n                            <div class=\"section-video\"> <video class=\"lazy\" autoplay loop muted playsinline>\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/technology_large.mp4\"\n                                        type=\"video\/mp4\" media=\"(min-width: 769px)\">\n                                    <source\n                                        data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/technology_small.mp4\"\n                                        type=\"video\/mp4\" media=\"(max-width: 768px)\">\n                                <\/video> <\/div>\n                        <\/div>\n                        <div class=\"section-info\">\n                            <div class=\"section-list\">\n                                <div class=\"section-item long-item\" data-staggered-item>\n                                    <div class=\"section-item-subtitle\">\n                                        Infinite Reach\n                                    <\/div>\n                                    <div class=\"section-item-title\">\n                                        1 TX &#038; Unlimited RX\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-item short-item\" data-staggered-item>\n                                    <div class=\"section-item-subtitle\">\n                                        Ultra Clarity\n                                    <\/div>\n                                    <div class=\"section-item-title\">4K60<\/div>\n                                <\/div>\n                                <div class=\"section-item long-item\" data-staggered-item>\n                                    <div class=\"section-item-subtitle\">LOS<\/div>\n                                    <div class=\"section-item-title\">\n                                        4,900 ft (1.5 km)\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-item short-item\" data-staggered-item>\n                                    <div class=\"section-item-subtitle\">\n                                        Ultra-Low Latency\n                                    <\/div>\n                                    <div class=\"section-item-title\">20 ms<\/div>\n                                <\/div>\n                                <div class=\"section-item\" data-staggered-item>\n                                    <div class=\"section-item-subtitle\">\n                                        Dual-Band\n                                    <\/div>\n                                    <div class=\"section-item-title\">\n                                        2.4 GHz &#038; 5 GHz\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-description\" data-staggered-item>\n                                Built on Hollyland&apos;s proprietary codec and\n                                transmission architecture, TWiFi combines 2.4GHz and\n                                5GHz into a composite link that outperforms\n                                conventional dual-band with stronger and more\n                                resilient connections. This advanced system ensures <span class=\"highlight-text\">up to\n                                    4,900 ft. (1.5 km)<sup><a href=\"#pyro-ultra-note\">[3]<\/a><\/sup><\/span> line-of-sight\n                                range with exceptional clarity, while\n                                line-of-sight range with exceptional clarity, while automatic\n                                frequency hopping dynamically navigates crowded environments.\n                                Complemented by its high-performance codec engine, TWiFi\n                                brings true <span class=\"highlight-text\">4K60<\/span>\n                                image quality, while Focus Mode reduces latency to as\n                                low as 20ms\u2014so every frame stays sharp, every adjustment\n                                stays in sync, and every workflow stays effortlessly on\n                                pace.\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-dfs\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-subtitle\" data-staggered-item>\n                            Enjoy Wider Access\n                        <\/div>\n                        <div class=\"section-title\" data-staggered-item>\n                            DFS Ready\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item>\n                            Pyro Ultra supports Dynamic Frequency Selection\n                            (DFS)-enabled bands, unlocking more spectrum for\n                            wireless transmission in regulated regions<sup><a href=\"#pyro-ultra-note\">[4]<\/a><\/sup>.\n                            More flexibility. Fewer restrictions. Wherever your\n                            production takes you.\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-feature\" data-staggered-item>\n                            <picture class=\"lazy-picture\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/dfs_small.png\"\n                                    media=\"(max-width: 768px)\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/dfs_large.png\"\n                                    media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/dfs_large.png\"\n                                    alt=\"\">\n                            <\/picture>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-stream\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-subtitle\" data-staggered-item>\n                            Flexible Streaming Solutions\n                        <\/div>\n                        <div class=\"section-title\" data-staggered-item>\n                            Stream it your way.\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item>\n                            Pyro Ultra features UVC and RTMP streaming, enabling\n                            high-quality capture up to 4K60 with plug-and-play ease\n                            and flexible platform connectivity, perfect for live\n                            production and remote collaboration.<sup><a href=\"#pyro-ultra-note\">[5]<\/a><\/sup> <\/div>\n                    <\/div>\n                    <div class=\"switch-container\" data-staggered-item>\n                        <div class=\"switch-background\"><\/div>\n                        <div class=\"switch-button active\">UVC<\/div>\n                        <div class=\"switch-button\">RTMP<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"swiper section-stream-swiper\" data-staggered-item>\n                            <div class=\"swiper-wrapper\">\n                                <div class=\"swiper-slide\">\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/stream01_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/stream01_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/stream01_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\">\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/stream02_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/stream02_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/stream02_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-pyro-ecosystem\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-subtitle\" data-staggered-item>\n                            The Pyro Ecosystem\n                        <\/div>\n                        <div class=\"section-title\" data-staggered-item>\n                            Pyro All-ways.\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item>\n                            Pyro Ultra is fully compatible with our Pyro lineup<sup><a\n                                    href=\"#pyro-ultra-note\">[6]<\/a><\/sup>, including Pyro H, Pyro S, Pyro 7, Pyro 5, and\n                            even\n                            Vcore, forming a true ecosystem of cross-device\n                            integration. Whether you&apos;re upgrading your system\n                            or mixing setups on set, every link fits smoothly into\n                            the chain.\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-feature\" data-staggered-item>\n                            <picture class=\"lazy-picture\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/ecosystem_small.jpg\"\n                                    media=\"(max-width: 768px)\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/ecosystem_large.jpg\"\n                                    media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/ecosystem_large.jpg\"\n                                    alt=\"\">\n                            <\/picture>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-freeze\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-title\" data-staggered-item> <span class=\"highlight-text\">Freeze<\/span> Frame\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item> <span class=\"highlight-text\">Unexpected\n                                cut? No worries.<\/span> Pyro Ultra freezes the last frame on screen, giving crews\n                            time to recover without disrupting the workflow. For added\n                            flexibility, you can set a custom image<sup><a href=\"#pyro-ultra-note\">[7]<\/a><\/sup>&nbsp;as\n                            the fallback display to maintain visual\n                            consistency and brand presence.\n                        <\/div>\n                    <\/div>\n                    <div class=\"switch-container\" data-staggered-item>\n                        <div class=\"switch-background\"><\/div>\n                        <div class=\"switch-button active\">Output Image<\/div>\n                        <div class=\"switch-button\">Custom Image<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"swiper section-freeze-swiper\" data-staggered-item>\n                            <div class=\"swiper-wrapper\">\n                                <div class=\"swiper-slide\">\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/freeze01_small.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/freeze01_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/freeze01_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\">\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/freeze02_small.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/freeze02_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/freeze02_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-versatile\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-title\" data-staggered-item> <span class=\"highlight-text\">Versatile<\/span>\n                            Connectivity\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item> <span class=\"highlight-text\">HDMI &#038; SDI\n                                with frame rate flexibility.<\/span> The Pyro Ultra transmitter supports 4K60 HDMI loop\n                            out,\n                            so you can monitor footage locally without compromise. With\n                            support for fractional frame rates on both HDMI and SDI, it\n                            adapts smoothly to professional and broadcast standards, so\n                            your setup stays flexible across productions.\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"swiper section-versatile-swiper\">\n                            <div class=\"swiper-wrapper\">\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile01_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile01_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile01_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title\">TVC<\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile02_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile02_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile02_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title\">Commercial<\/div>\n                                <\/div>\n                                <div class=\"swiper-slide\" data-staggered-item>\n                                    <div class=\"section-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile03_small.jpg\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile03_large.jpg\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/versatile03_large.jpg\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-title\">Production<\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"section-swiper-btn\" data-staggered-item>\n                            <div class=\"swiper-button-prev\"><\/div>\n                            <div class=\"swiper-button-next\"><\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-port\">\n            <div class=\"section-port-desktop\">\n                <div class=\"section-sticky-container\">\n                    <div class=\"section-sticky\">\n                        <div class=\"section-screen\"> <canvas id=\"focus-canvas\" width=\"780\" height=\"780\"><\/canvas> <\/div>\n                        <div class=\"section-screen\">\n                            <div class=\"section-annotation-container start-annotation\">\n                                <div class=\"section-annotation section-left annotation-1\"> <span\n                                        class=\"section-annotation-text\">Display Screen<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-2\"> <span\n                                        class=\"section-annotation-text\">Joystick Button<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-3\"> <span\n                                        class=\"section-annotation-text\">Power Button<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-4\"> <span\n                                        class=\"section-annotation-text\">DC Power Input<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-5\"> <span\n                                        class=\"section-annotation-text\">USB-C Port<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-6\"> <span\n                                        class=\"section-annotation-text\">HDMI OUT<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-7\"> <span\n                                        class=\"section-annotation-text\">SDI Out<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line\"><\/div>\n                                        <div class=\"section-annotation-dot\"><\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-annotation-container end-annotation\">\n                                <div class=\"section-annotation section-left annotation-8\"> <span\n                                        class=\"section-annotation-text close\">NP-F Battery Plate<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-9\"> <span\n                                        class=\"section-annotation-text close\">USB-C Port<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-10\"> <span\n                                        class=\"section-annotation-text close\">HDMI Input<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-11\"> <span\n                                        class=\"section-annotation-text close\">HDMI Loopout<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-left annotation-12\"> <span\n                                        class=\"section-annotation-text close\">SDI Input<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-13\"> <span\n                                        class=\"section-annotation-text close\">V-Mount Battery Plate<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-14\"> <span\n                                        class=\"section-annotation-text close\">Display Screen<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-15\"> <span\n                                        class=\"section-annotation-text close\">Joystick Button<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-16\"> <span\n                                        class=\"section-annotation-text close\">Power Button<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation section-right annotation-17\"> <span\n                                        class=\"section-annotation-text close\">DC Power Input<\/span>\n                                    <div class=\"section-annotation-wrapper\">\n                                        <div class=\"section-annotation-line close\"><\/div>\n                                        <div class=\"section-annotation-dot close\"><\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"section-port-mobile\">\n                <div class=\"section-port-mobile-block section-port-mobile-left\">\n                    <div class=\"section-sticky-container\">\n                        <div class=\"section-sticky\">\n                            <div class=\"section-screen section-screen-canvas\"> <canvas id=\"focus-canvas-port-left\"\n                                    width=\"1\" height=\"1\"><\/canvas> <\/div>\n                            <div class=\"section-screen\">\n                                <div class=\"section-annotation-container start-annotation\">\n                                    <div class=\"section-annotation section-left annotation-1\"> <span\n                                            class=\"section-annotation-text\">Display Screen<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-2\"> <span\n                                            class=\"section-annotation-text\">Joystick Button<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-3\"> <span\n                                            class=\"section-annotation-text\">Power Button<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-4\"> <span\n                                            class=\"section-annotation-text\">DC Power Input<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation-container end-annotation\">\n                                    <div class=\"section-annotation section-left annotation-8\"> <span\n                                            class=\"section-annotation-text close\">NP-F Battery Plate<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-9\"> <span\n                                            class=\"section-annotation-text close\">USB-C Port<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-10\"> <span\n                                            class=\"section-annotation-text close\">HDMI Input<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-11\"> <span\n                                            class=\"section-annotation-text close\">HDMI Loopout<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-left annotation-12\"> <span\n                                            class=\"section-annotation-text close\">SDI Input<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-port-mobile-block section-port-mobile-right\">\n                    <div class=\"section-sticky-container\">\n                        <div class=\"section-sticky\">\n                            <div class=\"section-screen section-screen-canvas\"> <canvas id=\"focus-canvas-port-right\"\n                                    width=\"1\" height=\"1\"><\/canvas> <\/div>\n                            <div class=\"section-screen\">\n                                <div class=\"section-annotation-container start-annotation\">\n                                    <div class=\"section-annotation section-right annotation-5\"> <span\n                                            class=\"section-annotation-text\">USB-C Port<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-right annotation-6\"> <span\n                                            class=\"section-annotation-text\">HDMI OUT<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-right annotation-7\"> <span\n                                            class=\"section-annotation-text\">SDI Out<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line\"><\/div>\n                                            <div class=\"section-annotation-dot\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-annotation-container end-annotation\">\n                                    <div class=\"section-annotation section-right annotation-13\"> <span\n                                            class=\"section-annotation-text close\">V-Mount Battery Plate<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-right annotation-14\"> <span\n                                            class=\"section-annotation-text close\">Display Screen<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-right annotation-15\"> <span\n                                            class=\"section-annotation-text close\">Joystick Button<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-right annotation-16\"> <span\n                                            class=\"section-annotation-text close\">Power Button<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div class=\"section-annotation section-right annotation-17\"> <span\n                                            class=\"section-annotation-text close\">DC Power Input<\/span>\n                                        <div class=\"section-annotation-wrapper\">\n                                            <div class=\"section-annotation-line close\"><\/div>\n                                            <div class=\"section-annotation-dot close\"><\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-adaptive\" data-staggered-list=\"StaggeredFadeIn\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-title\" data-staggered-item> <span class=\"highlight-text\">Adaptive<\/span>\n                            Output Resolution\n                        <\/div>\n                        <div class=\"section-description\" data-staggered-item> <span class=\"highlight-text\">One signal.\n                                Multiple displays.<\/span> Receivers automatically adapt output resolution to match\n                            downstream devices. Even when transmitting in 4K60, a receiver\n                            can output in 1080p, ensuring compatibility across setups\n                            while preserving the integrity of the source signal.\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-feature\" data-staggered-item>\n                            <picture class=\"lazy-picture\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/adaptive_small.png\"\n                                    media=\"(max-width: 768px)\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/adaptive_large.png\"\n                                    media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/adaptive_large.png\"\n                                    alt=\"\">\n                            <\/picture>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-ultra\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-header\">\n                        <div class=\"section-title\">\n                            Pyro <span class=\"highlight-text\">Ultra<\/span> <\/div>\n                        <div class=\"section-description\">Link Infinite<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-feature\">\n                            <picture class=\"lazy-picture\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/ultra_small.png\"\n                                    media=\"(max-width: 768px)\">\n                                <source\n                                    data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/ultra_large.png\"\n                                    media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                    data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/ultra_large.png\"\n                                    alt=\"\">\n                            <\/picture>\n                        <\/div>\n                        <div class=\"section-list\">\n                            <div class=\"section-item\">1 TX &#038; Unlimited RX<\/div>\n                            <div class=\"section-item\">4K60 HUD<\/div>\n                            <div class=\"section-item\">Focus Mode<\/div>\n                            <div class=\"section-item\">\n                                Proprietary TWiFi Technology\n                            <\/div>\n                            <div class=\"section-item\">Pyro Ecosystem<\/div>\n                            <div class=\"section-item\">DFS Certified<\/div>\n                            <div class=\"section-item\">UVC &#038; RTMP Streaming<\/div>\n                            <div class=\"section-item\">HDMI &#038; SDI Flexibility<\/div>\n                        <\/div> <a href=\"#\" class=\"section-buy-btn\"> Buy Now <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-package\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-title\">Your Package List<\/div>\n                    <div class=\"section-compare\"> <a href=\"https:\/\/www.hollyland.com\/video-solution-comparison\"\n                            class=\"section-compare-btn\"> <span>Compare Video Solutions<\/span> <svg\n                                xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"25\" viewBox=\"0 0 16 25\"\n                                fill=\"none\">\n                                <path\n                                    d=\"M6.21845 8.13533C6.44779 7.95863 6.77874 7.95727 7.00824 8.11775L7.09979 8.19685L10.8498 12.1343C11.0501 12.3448 11.0501 12.6554 10.8498 12.866L7.09979 16.8034C6.87524 17.0392 6.48053 17.0668 6.21845 16.8649C5.95647 16.6628 5.92573 16.3076 6.15009 16.0717L9.55097 12.5001L6.15009 8.92853L6.07806 8.83515C5.93703 8.60641 5.98915 8.31221 6.21845 8.13533Z\"\n                                    fill=\"#0071E3\"><\/path>\n                            <\/svg> <\/a> <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"switch-container\">\n                            <div class=\"switch-background\"><\/div>\n                            <div class=\"switch-button active\"> <span class=\"is-pc\">Transmitter<\/span> <span\n                                    class=\"is-pe\">TX<\/span> <\/div>\n                            <div class=\"switch-button\"> <span class=\"is-pc\">Receiver<\/span> <span\n                                    class=\"is-pe\">RX<\/span> <\/div>\n                            <div class=\"switch-button\">1TX &#038; 1RX<\/div>\n                            <div class=\"switch-button\">1TX &#038; 2RX<\/div>\n                        <\/div>\n                        <div class=\"section-panel\">\n                            <div class=\"section-package-list active\">\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Transmitter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Easy-Install Short Antenna x 4\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            USB-C OTG Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package04_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package04_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package04_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            1\/4&#8243; Cold Shoe x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-package-list\">\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Receiver x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Easy-Install Short Antenna x 4\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            USB-C OTG Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            12V\/2A DC Power Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-package-list\">\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Transmitter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Receiver x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Easy-Install Short Antenna x 4\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Easy-Install Antenna x 4\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            12V\/2A DC Power Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            USB-C OTG Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package08_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package08_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package08_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Double Ball Head with Cold Shoe Mount x\n                                            1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package09_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package09_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package09_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            D-Tap to Locking DC Power Cable x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-package-list\">\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Transmitter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Receiver x 2\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Easy-Install Short Antenna x 4\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Easy-Install Antenna x 8\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package06_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            12V\/2A DC Power Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            USB-C OTG Adapter x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package08_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package08_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package08_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            Double Ball Head with Cold Shoe Mount x\n                                            1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-package-item\">\n                                    <div class=\"section-package-item-feature\">\n                                        <picture class=\"lazy-picture\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package09_large.png\"\n                                                media=\"(max-width: 768px)\">\n                                            <source\n                                                data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package09_large.png\"\n                                                media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                                data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package09_large.png\"\n                                                alt=\"\">\n                                        <\/picture>\n                                    <\/div>\n                                    <div class=\"section-package-item-wrapper\">\n                                        <div class=\"section-package-item-title\">\n                                            D-Tap to Locking DC Power Cable x 1\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-upgrade\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-title\">Upgrade Your Setup.<\/div>\n                    <div class=\"section-more\"> <a href=\"https:\/\/www.hollyland.com\/accessories\"\n                            class=\"section-more-btn\"> <span>More Accessories<\/span> <svg\n                                xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"25\" viewBox=\"0 0 16 25\"\n                                fill=\"none\">\n                                <path\n                                    d=\"M6.21845 8.13533C6.44779 7.95863 6.77874 7.95727 7.00824 8.11775L7.09979 8.19685L10.8498 12.1343C11.0501 12.3448 11.0501 12.6554 10.8498 12.866L7.09979 16.8034C6.87524 17.0392 6.48053 17.0668 6.21845 16.8649C5.95647 16.6628 5.92573 16.3076 6.15009 16.0717L9.55097 12.5001L6.15009 8.92853L6.07806 8.83515C5.93703 8.60641 5.98915 8.31221 6.21845 8.13533Z\"\n                                    fill=\"#0071E3\"><\/path>\n                            <\/svg> <\/a> <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-upgrade-list\">\n                            <div class=\"section-upgrade-item\">\n                                <div class=\"section-upgrade-item-feature\">\n                                    <picture class=\"lazy-picture\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                            media=\"(max-width: 768px)\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                            media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                            data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package01_large.png\"\n                                            alt=\"\">\n                                    <\/picture>\n                                <\/div>\n                                <div class=\"section-upgrade-item-wrapper\">\n                                    <div class=\"section-upgrade-item-title\">\n                                        Pyro Ultra Transmitter\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-upgrade-item\">\n                                <div class=\"section-upgrade-item-feature\">\n                                    <picture class=\"lazy-picture\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                            media=\"(max-width: 768px)\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                            media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                            data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package05_large.png\"\n                                            alt=\"\">\n                                    <\/picture>\n                                <\/div>\n                                <div class=\"section-upgrade-item-wrapper\">\n                                    <div class=\"section-upgrade-item-title\">\n                                        Pyro Ultra Receiver\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-upgrade-item\">\n                                <div class=\"section-upgrade-item-feature\">\n                                    <picture class=\"lazy-picture\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                            media=\"(max-width: 768px)\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                            media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                            data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package02_large.png\"\n                                            alt=\"\">\n                                    <\/picture>\n                                <\/div>\n                                <div class=\"section-upgrade-item-wrapper\">\n                                    <div class=\"section-upgrade-item-title\">\n                                        Easy-Install Short Antenna\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-upgrade-item\">\n                                <div class=\"section-upgrade-item-feature\">\n                                    <picture class=\"lazy-picture\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                            media=\"(max-width: 768px)\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                            media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                            data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package07_large.png\"\n                                            alt=\"\">\n                                    <\/picture>\n                                <\/div>\n                                <div class=\"section-upgrade-item-wrapper\">\n                                    <div class=\"section-upgrade-item-title\">\n                                        Easy-Install Antenna\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-upgrade-item\">\n                                <div class=\"section-upgrade-item-feature\">\n                                    <picture class=\"lazy-picture\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                            media=\"(max-width: 768px)\">\n                                        <source\n                                            data-custom-srcset=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                            media=\"(min-width: 0px)\"> <img decoding=\"async\" class=\"lazy\"\n                                            data-custom-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/package03_large.png\"\n                                            alt=\"\">\n                                    <\/picture>\n                                <\/div>\n                                <div class=\"section-upgrade-item-wrapper\">\n                                    <div class=\"section-upgrade-item-title\">\n                                        USB-C OTG Adapter\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-specs\">\n            <div class=\"section-container\">\n                <div class=\"section-wrapper\">\n                    <div class=\"section-title\">Specs<\/div>\n                    <div class=\"switch-container is-pe\">\n                        <div class=\"switch-background\"><\/div>\n                        <div class=\"switch-button active\">Transmitter<\/div>\n                        <div class=\"switch-button\">Receiver<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"section-content\">\n                    <div class=\"section-content-wrapper\">\n                        <div class=\"section-list\">\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\"><\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text section-item-bold\">\n                                        Transmitter\n                                    <\/div>\n                                    <div class=\"section-item-text section-item-bold\">\n                                        Receiver\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">Interfaces<\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        DC IN: 2.0 Barrel Connector\n                                        <br>\n                                        HDMI IN: HDMI 2.0\n                                        <br>\n                                        HDMI LOOPOUT: HDMI 2.0\n                                        <br>\n                                        SDI IN: 3G SDI\n                                        <br>\n                                        Type-C: USB 2.0\n                                        <br>\n                                        Antenna: SMA Male Connector\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        DC IN: 2.0 Barrel Connector\n                                        <br>\n                                        HDMI OUT: HDMI 2.0\n                                        <br>\n                                        SDI OUT: 3G SDI\n                                        <br>\n                                        Type-C: USB 3.0\n                                        <br>\n                                        Antenna: SMA Male Connector\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">\n                                    Power Supply Voltage Range\n                                <\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        Battery Power Input: 6.8-8.4V\n                                        <br>\n                                        DC Power Input: 6-16V\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        Battery Power Input: 6.8-8.4V\n                                        <br>\n                                        DC Power Input: 6-16V\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">\n                                    Power Consumption\n                                <\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        Non-broadcast: 11W\n                                        <br>\n                                        Broadcast: 14W\n                                    <\/div>\n                                    <div class=\"section-item-text\">7W<\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">Net Weight<\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">320g<\/div>\n                                    <div class=\"section-item-text\">320g<\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">Dimensions<\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        (L*W*H): 124.5*80*34.9mm\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        (L*W*H): 124.5*80*34.9mm\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">TX Power<\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">&lt; 23dBm<\/div>\n                                    <div class=\"section-item-text\">\/<\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">RX Sensitivity<\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\/<\/div>\n                                    <div class=\"section-item-text\">\n                                        Non-broadcast: -85dBm\n                                        <br>\n                                        Broadcast: -80dBm\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">\n                                    Input\/Output Video Formats\n                                <\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        HDMI:\n                                        <br>\n                                        720p50\/59.94\/60\n                                        <br>\n                                        1080p23.98\/24\/25\/29.97\/30\/50\/59.94\/60\n                                        <br>\n                                        4k(3840*2160)23.98\/24\/25\/29.97\/30\/50\/59.94\/60\n                                        <br><br>\n                                        SDI:\n                                        <br>\n                                        720p50\/59.94\/60\n                                        <br>\n                                        1080i50\/59.94\/60\n                                        <br>\n                                        1080p23.98\/24\/25\/29.97\/30\/50\/59.94\/60\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        HDMI:\n                                        <br>\n                                        720p50\/59.94\/60\n                                        <br>\n                                        1080p23.98\/24\/25\/29.97\/30\/50\/59.94\/60\n                                        <br>\n                                        4k(3840*2160)23.98\/24\/25\/29.97\/30\/50\/59.94\/60\n                                        <br><br>\n                                        SDI:\n                                        <br>\n                                        720p50\/59.94\/60\n                                        <br>\n                                        1080i50\/59.94\/60\n                                        <br>\n                                        1080p23.98\/24\/25\/29.97\/30\/50\/60\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">\n                                    Operating Frequency<sup><a href=\"#pyro-ultra-note\">[8]<\/a><\/sup> <\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        5G\n                                        <br>\n                                        5.150 &#8211; 5.250 GHz\n                                        <br>\n                                        5.250 &#8211; 5.350 GHz\n                                        <br>\n                                        5.470 &#8211; 5.725 GHz\n                                        <br>\n                                        5.725 &#8211; 5.850 GHz\n                                        <br><br>\n                                        2.4G\n                                        <br>\n                                        2.412 &#8211; 2.484 GHz\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        5G\n                                        <br>\n                                        5.150 &#8211; 5.250 GHz\n                                        <br>\n                                        5.250 &#8211; 5.350 GHz\n                                        <br>\n                                        5.470 &#8211; 5.725 GHz\n                                        <br>\n                                        5.725 &#8211; 5.850 GHz\n                                        <br><br>\n                                        2.4G\n                                        <br>\n                                        2.412 &#8211; 2.484 GHz\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">\n                                    Transmission Latency\n                                <\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        Focus Mode: 1080p25 \u2265 20ms\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        Focus Mode: 1080p25 \u2265 20ms\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"section-item\">\n                                <div class=\"section-item-title\">Bandwidth<\/div>\n                                <div class=\"section-item-content\">\n                                    <div class=\"section-item-text\">\n                                        20MHz (Broadcast: 40 MHz)\n                                    <\/div>\n                                    <div class=\"section-item-text\">\n                                        20MHz (Broadcast: 40 MHz)\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"section-note\" id=\"pyro-ultra-note\">\n                            <div class=\"section-note-title\">Note:<\/div>\n                            <div class=\"section-note-list\">\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;1.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        Stable performance is ensured with up to 20\n                                        receivers. Additional connections are\n                                        supported but may vary depending on the\n                                        actual environment.\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;2.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        Focus Mode can be enabled on all receivers\n                                        within the same group. Minimum latency under\n                                        standard test conditions: \u226520 ms at\n                                        1080p25\/30, \u226540 ms at 1080p60, and \u226545 ms at\n                                        4K60. Latency values apply only when Focus\n                                        Mode is enabled.\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;3.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        In Broadcast Mode, the maximum transmission\n                                        range is 2,300 ft (700 m). In Non-Broadcast\n                                        Mode, the maximum transmission range extends\n                                        up to 4,900 ft (1.5 km).\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;4.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        Actual frequency availability may vary based\n                                        on local laws and regulations.\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;5.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        Actual capture resolution depends on the\n                                        settings of the receiver. UVC supports\n                                        resolutions up to 4K60, while RTMP streaming\n                                        is limited to 1080p60.\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;6.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        Within the Pyro ecosystem, Pyro 5, and Pyro\n                                        7 are compatible in both broadcast and\n                                        non-broadcast modes. Pyro H and Vcore are\n                                        compatible in non-broadcast mode only. Pyro\n                                        S currently supports non-broadcast mode\n                                        only; compatibility with broadcast mode will\n                                        be added in future firmware updates.\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;7.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        The custom image must be 1920\u00d71080 (JPG),\n                                        less than 1 MB, and named &#8220;logo.jpg&#8221;.\n                                    <\/div>\n                                <\/div>\n                                <div class=\"section-note-item\">\n                                    <div class=\"section-note-item-number\">\n                                        &nbsp;8.&nbsp;\n                                    <\/div>\n                                    <div class=\"section-note-item-content\">\n                                        The product&apos;s operating frequency and\n                                        wireless transmission power may vary\n                                        depending on the regulations of different\n                                        countries and regions. Please refer to local\n                                        laws and regulations for details.\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"section-video-modal\" id=\"watch-film\">\n            <div class=\"section-modal-overlay\">\n                <div class=\"section-modal-wrapper\">\n                    <div class=\"section-video\"> <video playsinline controls\n                            data-control-src=\"https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/videos\/tvc.mp4\"><\/video>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<script type=\"module\">\n\/**\n * Pyro Ultra\n * \u8d1f\u8d23\u7ba1\u7406\u9875\u9762\u4e2d\u7684\u5404\u79cd\u4ea4\u4e92\u529f\u80fd\n *\/\nclass PyroUltraManager {\n    \/** welcome \u533a\u89c6\u9891\u52a0\u8f7d\u8d85\u65f6\uff08ms\uff09\uff0c\u4e0e source \/ video error \u5171\u7528 attachVideoTimedFallback *\/\n    static WELCOME_VIDEO_LOAD_TIMEOUT_MS = 1500;\n    \/** \u975e welcome \u7684 section-video \u52a0\u8f7d\u8d85\u65f6\uff08ms\uff09 *\/\n    static VIDEO_LOAD_TIMEOUT_MS = 2500;\n    \/** canvas \u5e8f\u5217\u5e27\uff1a\u7b2c 2 \u5e27\u8d77\u5728\u7528\u6237\u6eda\u52a8\u63a5\u8fd1\u8be5\u533a\u5757\u65f6\u518d\u52a0\u8f7d\uff08IntersectionObserver rootMargin\uff09 *\/\n    static CANVAS_FRAMES_PREFETCH_ROOT_MARGIN = '400px 0px';\n\n    constructor() {\n        \/\/ \u5e38\u91cf\u914d\u7f6e\n        this.MOBILE_BREAKPOINT = 768;\n        this.SELECTORS = {\n            topContainer: '.pyro-ultra',\n            welcomeSection: '.pyro-ultra .section-welcome',\n            highlightSection: '.pyro-ultra .section-highlights',\n            introductionSection: '.pyro-ultra .section-introduction',\n            linkInfiniteSection: '.pyro-ultra .section-link-infinite',\n            modeSection: '.pyro-ultra .section-mode',\n            focusSection: '.pyro-ultra .section-focus',\n            twifiSection: '.pyro-ultra .section-twifi',\n            streamSection: '.pyro-ultra .section-stream',\n            freezeSection: '.pyro-ultra .section-freeze',\n            versatileSection: '.pyro-ultra .section-versatile',\n            ultraSection: '.pyro-ultra .section-ultra',\n            packageSection: '.pyro-ultra .section-package',\n            portSection: '.pyro-ultra .section-port',\n            specsSection: '.pyro-ultra .section-specs',\n        };\n\n        \/\/ \u6eda\u52a8\u4e8b\u4ef6\u5904\u7406\u5668\n        this.scrollHandlers = new Map();\n        this.scrollTicking = false;\n\n        \/\/ DOM\u5143\u7d20\u7f13\u5b58\n        this.elements = {};\n\n        \/\/ \u521d\u59cb\u5316\n        this.init();\n    }\n\n    \/**\n     * \u5728\u6bcf\u4e2a source \u5143\u7d20\u4e0a\u76d1\u542c\u4e00\u6b21 error\uff1b\u65e0\u5b50\u8282\u70b9 source \u65f6\u56de\u9000\u5230 video \u7684 error\u3002\n     * \u591a\u4e2a source \u5171\u7528\u540c\u4e00\u4e1a\u52a1\u56de\u8c03\uff0c\u4e14\u53ea\u6267\u884c\u4e00\u6b21\uff08\u5185\u90e8 runOnce\uff09\u3002\u5e26 media \u7684\u5019\u9009\u901a\u5e38\u4ec5\u4e00\u6761\u4f1a\u8bf7\u6c42\u3002\n     *\/\n    static attachSourceErrorOnce(video, handler) {\n        if (!video || typeof handler !== 'function') return;\n        const sources = video.querySelectorAll('source');\n        if (sources.length === 0) {\n            video.addEventListener('error', handler, { once: true });\n            return;\n        }\n        let done = false;\n        const runOnce = () => {\n            if (done) return;\n            done = true;\n            handler();\n        };\n        sources.forEach((source) => {\n            source.addEventListener('error', runOnce, { once: true });\n        });\n    }\n\n    \/**\n     * source\/video error + \u52a0\u8f7d\u8d85\u65f6\uff1a\u4efb\u4e00\u89e6\u53d1\u5219 onFallback\uff1bcanplay \u6216\u5df2\u5c31\u7eea\u5219\u6e05\u9664\u8d85\u65f6\u3002\n     *\/\n    static attachVideoTimedFallback(video, onFallback, timeoutMs = PyroUltraManager.VIDEO_LOAD_TIMEOUT_MS) {\n        if (!video || typeof onFallback !== 'function') return;\n        if (video.dataset.pyroVideoFallbackBound === '1') return;\n        video.dataset.pyroVideoFallbackBound = '1';\n        let loadTimeoutId;\n        let fallbackApplied = false;\n        const applyFallback = () => {\n            if (fallbackApplied) return;\n            fallbackApplied = true;\n            clearTimeout(loadTimeoutId);\n            onFallback();\n        };\n        loadTimeoutId = setTimeout(applyFallback, timeoutMs);\n        PyroUltraManager.attachSourceErrorOnce(video, applyFallback);\n        const clearTimer = () => clearTimeout(loadTimeoutId);\n        if (video.readyState >= 3) {\n            clearTimer();\n        } else {\n            video.addEventListener('canplay', clearTimer, { once: true });\n        }\n    }\n\n    \/**\n     * \u76ee\u6807\u5728\u8fdb\u5165\u89c6\u53e3\u524d\uff08\u7531 rootMargin \u6269\u5927\u68c0\u6d4b\u533a\u57df\uff09\u65f6\u6267\u884c\u4e00\u6b21 callback\uff1b\u65e0 IntersectionObserver \u65f6\u7acb\u5373\u6267\u884c\u3002\n     *\/\n    static whenNearViewportOnce(\n        element,\n        callback,\n        rootMargin = PyroUltraManager.CANVAS_FRAMES_PREFETCH_ROOT_MARGIN\n    ) {\n        if (typeof callback !== 'function') return;\n        if (!element || typeof IntersectionObserver === 'undefined') {\n            callback();\n            return;\n        }\n        const observer = new IntersectionObserver(\n            (entries) => {\n                for (const entry of entries) {\n                    if (entry.isIntersecting) {\n                        observer.disconnect();\n                        callback();\n                        break;\n                    }\n                }\n            },\n            { rootMargin }\n        );\n        observer.observe(element);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316\u9875\u9762\u529f\u80fd\n     *\/\n    init() {\n        \/\/ \u7b49\u5f85DOM\u52a0\u8f7d\u5b8c\u6210\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', () => this.initAfterDOMLoaded());\n        } else {\n            this.initAfterDOMLoaded();\n        }\n    }\n\n\n    \/**\n     * DOM\u52a0\u8f7d\u5b8c\u6210\u540e\u7684\u521d\u59cb\u5316\n     *\/\n    initAfterDOMLoaded() {\n        this.cacheElements();\n        this.initLazyLoad();\n        this.initScrollEvents();\n        this.initStaggeredFadeIn();\n        this.setupVideoFallback();\n        this.initWelcomeEvent();\n        this.initHighlightEvents();\n        this.initIntroductionEvents();\n        this.initLinkInfiniteEvents();\n        this.initModeSectionEvents();\n        this.initFocusSectionEvents();\n        this.initTwifiSectionEvents();\n        this.initStreamSectionEvents();\n        this.initFreezeSectionEvents();\n        this.initVersatileSectionEvents();\n        this.initUltraSectionEvents();\n        this.initPackageSectionEvents();\n        this.initPortSectionEvents();\n        this.initSpecsSectionEvents();\n    }\n\n    \/**\n     * \u7f13\u5b58DOM\u5143\u7d20\n     *\/\n    cacheElements() {\n        this.elements.topContainer = document.querySelector(this.SELECTORS.topContainer);\n        this.elements.welcomeSection = document.querySelector(this.SELECTORS.welcomeSection);\n        this.elements.highlightSection = document.querySelector(this.SELECTORS.highlightSection);\n        this.elements.introductionSection = document.querySelector(this.SELECTORS.introductionSection);\n        this.elements.linkInfiniteSection = document.querySelector(this.SELECTORS.linkInfiniteSection);\n        this.elements.modeSection = document.querySelector(this.SELECTORS.modeSection);\n        this.elements.focusSection = document.querySelector(this.SELECTORS.focusSection);\n        this.elements.twifiSection = document.querySelector(this.SELECTORS.twifiSection);\n        this.elements.streamSection = document.querySelector(this.SELECTORS.streamSection);\n        this.elements.freezeSection = document.querySelector(this.SELECTORS.freezeSection);\n        this.elements.versatileSection = document.querySelector(this.SELECTORS.versatileSection);\n        this.elements.ultraSection = document.querySelector(this.SELECTORS.ultraSection);\n        this.elements.packageSection = document.querySelector(this.SELECTORS.packageSection);\n        this.elements.portSection = document.querySelector(this.SELECTORS.portSection);\n        this.elements.specsSection = document.querySelector(this.SELECTORS.specsSection);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316\u61d2\u52a0\u8f7d\u529f\u80fd\n     *\/\n    initLazyLoad() {\n        if (typeof LazyLoad !== 'undefined') {\n            new LazyLoad({\n                data_src: 'custom-src',\n                data_srcset: 'custom-srcset',\n                elements_selector: '.lazy',\n                threshold: 1000,\n                callback_loaded: (element) => {\n                    this.tryAttachVideoFallbackAfterLazyLoad(element);\n                },\n                callback_error: (element) => {\n                    this.applyLazyVideoErrorFallback(element);\n                },\n            });\n        }\n    }\n\n    \/**\n     * LazyLoad \u5bf9 .lazy video \u62c9\u53d6\u5931\u8d25\u65f6\u76f4\u63a5\u5c55\u793a section-feature\uff08\u4e0d\u518d\u6302\u8d85\u65f6\u56de\u9000\uff09\u3002\n     *\/\n    applyLazyVideoErrorFallback(element) {\n        if (!element || element.tagName !== 'VIDEO') return;\n        const topContainer = this.elements.topContainer;\n        if (!topContainer || !topContainer.contains(element)) return;\n\n        const videoContainer = element.closest('.section-video');\n        if (!videoContainer || videoContainer.closest('.section-welcome')) return;\n\n        const parent = videoContainer.parentElement;\n        const feature = parent?.querySelector('.section-feature');\n        if (!feature) return;\n\n        videoContainer.classList.add('video-failed');\n        feature.classList.add('visible');\n        feature.removeAttribute('aria-hidden');\n    }\n\n    \/**\n     * vanilla-lazyload \u5df2\u4e3a video \u5199\u5165 src \u5e76\u89e6\u53d1 loaded \u540e\uff0c\u518d\u6302\u8d85\u65f6\u4e0e error \u56de\u9000\uff1b\n     * \u907f\u514d .lazy + data-custom-src \u5728\u8fdb\u89c6\u53e3\u524d\u65e0 src \u5bfc\u81f4\u8bef\u52a0 video-failed\u3002\n     *\/\n    tryAttachVideoFallbackAfterLazyLoad(element) {\n        if (!element || element.tagName !== 'VIDEO') return;\n        const topContainer = this.elements.topContainer;\n        if (!topContainer || !topContainer.contains(element)) return;\n\n        const videoContainer = element.closest('.section-video');\n        if (!videoContainer || videoContainer.closest('.section-welcome')) return;\n\n        const parent = videoContainer.parentElement;\n        const feature = parent?.querySelector('.section-feature');\n        if (!feature) return;\n\n        PyroUltraManager.attachVideoTimedFallback(element, () => {\n            videoContainer.classList.add('video-failed');\n            feature.classList.add('visible');\n            feature.removeAttribute('aria-hidden');\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316\u6eda\u52a8\u4e8b\u4ef6\u7cfb\u7edf\n     *\/\n    initScrollEvents() {\n        \/\/ \u7edf\u4e00\u7684\u6eda\u52a8\u4e8b\u4ef6\u5904\u7406\n        const handleScroll = () => {\n            if (!this.scrollTicking) {\n                requestAnimationFrame(() => {\n                    \/\/ \u6267\u884c\u6240\u6709\u6ce8\u518c\u7684\u6eda\u52a8\u5904\u7406\u5668\n                    this.scrollHandlers.forEach((handler, name) => {\n                        try {\n                            handler();\n                        } catch (error) {\n                            console.error(`scroll handler ${name} failed:`, error);\n                        }\n                    });\n\n                    this.scrollTicking = false;\n                });\n                this.scrollTicking = true;\n            }\n        };\n\n        \/\/ \u6dfb\u52a0\u6eda\u52a8\u76d1\u542c\n        window.addEventListener('scroll', handleScroll, { passive: true });\n        this.mainScrollHandler = handleScroll;\n    }\n\n    \/**\n     * \u6ce8\u518c\u6eda\u52a8\u5904\u7406\u5668\n     * @param {string} name - \u5904\u7406\u5668\u540d\u79f0\n     * @param {Function} handler - \u5904\u7406\u5668\u51fd\u6570\n     *\/\n    registerScrollHandler(name, handler) {\n        if (typeof handler !== 'function') {\n            console.error(`scroll handler ${name} must be a function`);\n            return;\n        }\n\n        this.scrollHandlers.set(name, handler);\n    }\n\n    \/**\n     * \u79fb\u9664\u6eda\u52a8\u5904\u7406\u5668\n     * @param {string} name - \u5904\u7406\u5668\u540d\u79f0\n     *\/\n    removeScrollHandler(name) {\n        this.scrollHandlers.delete(name);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 StaggeredFadeIn \u52a8\u753b\n     * \u904d\u5386\u9875\u9762\u5185\u6240\u6709 [data-staggered-list]\uff0c\u8fdb\u5165\u89c6\u53e3\u65f6\u89e6\u53d1\u5b50\u9879 [data-staggered-item] \u7684\u9519\u5cf0 fade-in\n     *\/\n    initStaggeredFadeIn() {\n        const lists = document.querySelectorAll('.pyro-ultra [data-staggered-list]');\n        lists.forEach((list) => {\n            const items = list.querySelectorAll('[data-staggered-item]');\n            items.forEach((el, i) => {\n                el.style.setProperty('--staggered-item-index', String(i));\n            });\n\n            const observer = new IntersectionObserver(\n                (entries) => {\n                    entries.forEach((entry) => {\n                        if (entry.isIntersecting) {\n                            entry.target.classList.add('staggered-start');\n                            observer.disconnect();\n                        }\n                    });\n                },\n                { threshold: 0.2 }\n            );\n            observer.observe(list);\n        });\n    }\n\n    \/**\n     * \u4e3a\u6240\u6709 section-video \u8bbe\u7f6e fallback\uff1a\u5f53\u89c6\u9891\u8d44\u6e90\u65e0\u6cd5\u52a0\u8f7d\u65f6\u663e\u793a\u5bf9\u5e94\u7684 section-feature\n     * \u5728 video \u5185\u6bcf\u4e2a source \u4e0a\u76d1\u542c\u4e00\u6b21\u6027 error\uff08\u65e0 source \u65f6\u76d1\u542c video\uff09\n     * \u6b22\u8fce\u533a .section-info.show \u4ec5\u7531 initWelcomeEvent \u8d1f\u8d23\uff0c\u6b64\u5904\u4e0d\u5904\u7406\uff0c\u907f\u514d\u4e0e\u6b22\u8fce\u533a\u903b\u8f91\u91cd\u590d\u3002\n     *\/\n    setupVideoFallback() {\n        const topContainer = this.elements.topContainer;\n        if (!topContainer) return;\n        topContainer.querySelectorAll('.section-video').forEach((videoContainer) => {\n            if (videoContainer.closest('.section-welcome')) return;\n\n            const video = videoContainer.querySelector('video');\n            const parent = videoContainer.parentElement;\n            const feature = parent?.querySelector('.section-feature');\n            if (!video || !feature) return;\n\n            \/\/ \u4e0e vanilla-lazyload \u540c\u7528\u7684 .lazy\uff1asrc \u8fdb\u89c6\u53e3\u540e\u624d\u5199\u5165\uff0c\u56de\u9000\u903b\u8f91\u89c1 initLazyLoad callback_loaded\n            if (video.classList.contains('lazy')) return;\n\n            PyroUltraManager.attachVideoTimedFallback(video, () => {\n                videoContainer.classList.add('video-failed');\n                feature.classList.add('visible');\n                feature.removeAttribute('aria-hidden');\n            });\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316\u6b22\u8fce\u9875\u9762\u4ea4\u4e92\n     * \u89c6\u9891\u533a\u9ed8\u8ba4\u7531\u6837\u5f0f\u53e0\u5728\u4e0a\u5c42\u5c55\u793a\uff0c\u65e0\u9700\u518d\u901a\u8fc7 JS \u5207\u6362 .section-video \u53ef\u89c1\u6027\u3002\n     * \u8d85\u65f6\u4e0e source\/video \u9519\u8bef\u56de\u9000\u7531 attachVideoTimedFallback\uff1b\u6587\u6848\u533a .show \u5728\u56de\u9000\u6216\u64ad\u5b8c\u524d\u7ea6 1s \u663e\u793a\u3002\n     *\/\n    initWelcomeEvent() {\n        const welcomeSection = this.elements.welcomeSection;\n        if (!welcomeSection) return;\n\n        const wrapper = welcomeSection.querySelector('#welcomeMediaWrapper');\n        const videoSection = welcomeSection.querySelector('.section-video');\n        const pictureSection = wrapper?.querySelector('.section-feature');\n        const infoSection = welcomeSection.querySelector('.section-info');\n        const video = videoSection?.querySelector('video');\n\n        if (!wrapper || !videoSection || !video || !infoSection) return;\n\n        \/\/ \u64ad\u653e\u7ed3\u675f\u524d\u7ea6 1 \u79d2\u663e\u793a info\n        const showInfoBeforeEnd = () => {\n            const duration = video.duration;\n            if (isFinite(duration) && video.currentTime >= duration - 1) {\n                infoSection.classList.add('show');\n                video.removeEventListener('timeupdate', showInfoBeforeEnd);\n            }\n        };\n\n        video.addEventListener('play', () => {\n            video.addEventListener('timeupdate', showInfoBeforeEnd);\n        }, { once: true });\n\n        const applyWelcomeFallback = () => {\n            videoSection.classList.add('video-failed');\n            pictureSection?.classList.add('visible');\n            pictureSection?.removeAttribute('aria-hidden');\n            infoSection.classList.add('show');\n        };\n\n        PyroUltraManager.attachVideoTimedFallback(\n            video,\n            applyWelcomeFallback,\n            PyroUltraManager.WELCOME_VIDEO_LOAD_TIMEOUT_MS\n        );\n\n        video.play().catch((err) => {\n            if (err.name !== 'AbortError') console.error(err);\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316highlight Events\n     *\/\n    initHighlightEvents() {\n        const highlightSection = this.elements.highlightSection;\n        if (!highlightSection) return;\n\n        const countContainerWidth = highlightSection.querySelector('.section-wrapper').clientWidth;\n        const containerBeforeWidth = (document.documentElement.clientWidth - countContainerWidth) \/ 2;\n        const highlightSwiper = new Swiper(highlightSection.querySelector('.section-highlights-swiper'), {\n            slidesPerView: 1,\n            spaceBetween: 10,\n            speed: 1000,\n            pagination: {\n                el: '.swiper-pagination',\n                clickable: true,\n            },\n            on: {\n                slideChangeTransitionStart: (swiper) => {\n                    this.handleSlideTitleAnimation(swiper);\n                    this.handleSlideContent(swiper);\n                },\n                slideChangeTransitionEnd: (swiper) => {\n                    this.resetInactiveHighlightVideos(swiper);\n                },\n                resize: function () {\n                    const countContainerWidth = highlightSection.querySelector('.section-wrapper').clientWidth;\n                    const containerBeforeWidth = (document.documentElement.clientWidth - countContainerWidth) \/ 2;\n                    this.params.width = countContainerWidth;\n                    this.params.slidesOffsetBefore = containerBeforeWidth;\n                    this.params.slidesOffsetAfter = -containerBeforeWidth;\n                    this.update();\n                },\n                init: (swiper) => {\n                    this.handleSlideTitleAnimation(swiper);\n                    const pagEl = swiper.pagination.el;\n                    const buttonControl = highlightSection.querySelector('.swiper-button-control');\n                    if (pagEl && buttonControl) {\n                        const bullets = pagEl.querySelectorAll('.swiper-pagination-bullet');\n                        if (bullets) {\n                            bullets.forEach((bullet) => {\n                                bullet.addEventListener('click', () => {\n                                    const buttonControlState = buttonControl.getAttribute('data-state');\n                                    if (buttonControlState === 'replay') {\n                                        this.setPausedState(buttonControl);\n                                    }\n                                });\n                            });\n                        }\n                    }\n                },\n                \/\/\u70b9\u51fb\u4e8b\u4ef6\n                tap: (swiper) => {\n                    const buttonControl = highlightSection.querySelector('.swiper-button-control');\n                    if (buttonControl) {\n                        const buttonControlState = buttonControl.getAttribute('data-state');\n                        if (swiper.activeIndex === swiper.clickedIndex) {\n                            if (buttonControlState === 'paused') {\n                                this.setPlayingState(buttonControl);\n                                cancelAnimationFrame(swiper.autoSlideAnimation);\n                                swiper.autoSlideAnimation = null;\n                                this.handleHighlightSwiperBullets(swiper, -1, 'after-active');\n                            } else if (buttonControlState === 'playing') {\n                                this.setPausedState(buttonControl);\n                                this.handleSlideContent(swiper);\n                            } else if (buttonControlState === 'replay') {\n                                this.setPausedState(buttonControl);\n                                swiper.slideTo(0);\n                                this.handleSlideContent(swiper);\n                            }\n                        } else {\n                            if (buttonControlState === 'paused' || buttonControlState === 'replay') {\n                                this.setPausedState(buttonControl);\n                            }\n                            swiper.slideTo(swiper.clickedIndex);\n                        }\n                    }\n                }\n            },\n            breakpoints: {\n                768: {\n                    allowTouchMove: false,\n                    width: countContainerWidth,\n                    spaceBetween: 20,\n                    slidesOffsetBefore: containerBeforeWidth,\n                    slidesOffsetAfter: -containerBeforeWidth,\n                },\n            },\n        });\n\n        \/\/swiper events\n        this.handleSwiperVisibility(highlightSwiper);\n        this.handleSwiperPageVisibilityChange(highlightSwiper);\n        this.initHighlightSwiperButtonControl(highlightSwiper);\n        this.handleSwiperControlButtonVisibility(highlightSwiper);\n\n        \/\/watch film click event\n        this.initWatchFilmClickEvent(highlightSwiper);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316highlight swiper\u5e7b\u706f\u7247\u6309\u94ae\u63a7\u5236\u4e8b\u4ef6\n     * \u5f53\u6309\u94ae\u72b6\u6001\u4e3a\u6682\u505c\u65f6\uff0c\u64ad\u653e\u89c6\u9891\n     * \u5f53\u6309\u94ae\u72b6\u6001\u4e3a\u64ad\u653e\u65f6\uff0c\u6682\u505c\u89c6\u9891\n     * \u5f53\u6309\u94ae\u72b6\u6001\u4e3a\u91cd\u64ad\u65f6\uff0c\u91cd\u64ad\u89c6\u9891\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    initHighlightSwiperButtonControl(swiper) {\n        const highlightSection = this.elements.highlightSection;\n        if (!highlightSection) return;\n\n        const buttonControl = highlightSection.querySelector('.swiper-button-control');\n        if (buttonControl) {\n            buttonControl.addEventListener('click', () => {\n                const state = buttonControl.getAttribute('data-state');\n                if (state === 'paused') {\n                    this.setPlayingState(buttonControl);\n                    cancelAnimationFrame(swiper.autoSlideAnimation);\n                    swiper.autoSlideAnimation = null;\n                    this.handleHighlightSwiperBullets(swiper, -1, 'after-active');\n                } else if (state === 'playing') {\n                    this.setPausedState(buttonControl);\n                    this.handleSlideContent(swiper);\n                } else if (state === 'replay') {\n                    this.setPausedState(buttonControl);\n                    swiper.slideTo(0);\n                }\n            });\n        }\n    }\n\n    \/**\n     * \u8bbe\u7f6e\u6309\u94ae\u72b6\u6001\u4e3a\u6682\u505c\n     * @param {HTMLElement} buttonControl - \u6309\u94ae\u63a7\u5236\u5143\u7d20\n     *\/\n    setPausedState(buttonControl) {\n        buttonControl.setAttribute(\"data-state\", \"paused\");\n    }\n\n    \/**\n     * \u8bbe\u7f6e\u6309\u94ae\u72b6\u6001\u4e3a\u64ad\u653e\n     * @param {HTMLElement} buttonControl - \u6309\u94ae\u63a7\u5236\u5143\u7d20\n     *\/\n    setPlayingState(buttonControl) {\n        buttonControl.setAttribute(\"data-state\", \"playing\");\n    }\n\n    \/**\n     * \u8bbe\u7f6e\u6309\u94ae\u72b6\u6001\u4e3a\u91cd\u64ad\n     * @param {HTMLElement} buttonControl - \u6309\u94ae\u63a7\u5236\u5143\u7d20\n     *\/\n    setReplayState(buttonControl) {\n        buttonControl.setAttribute(\"data-state\", \"replay\");\n    }\n\n    \/**\n     * \u5904\u7406\u8f6e\u64ad\u6807\u9898\u6de1\u5165\u52a8\u753b\n     * JS \u8bbe\u7f6e --slide-title-direction\uff081=\u5411\u5de6\u6de1\u5165\uff0c-1=\u5411\u53f3\u6de1\u5165\uff09\uff0cCSS \u8d1f\u8d23\u52a8\u753b\u6570\u503c\u4e0e 0.6s \u65f6\u957f\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    handleSlideTitleAnimation(swiper) {\n        const slides = swiper.slides;\n        const activeIndex = swiper.activeIndex;\n        const previousIndex = swiper.previousIndex ?? activeIndex;\n\n        const direction = activeIndex > previousIndex ? 1 : -1;\n\n        slides.forEach((slide, i) => {\n            const titleWrapper = slide.querySelector('.section-title-wrapper');\n            if (!titleWrapper) return;\n\n            titleWrapper.classList.remove('section-title-in');\n            titleWrapper.style.removeProperty('--section-title-direction');\n\n            if (i === activeIndex) {\n                titleWrapper.style.setProperty('--section-title-direction', String(direction));\n                requestAnimationFrame(() => {\n                    requestAnimationFrame(() => {\n                        titleWrapper.classList.add('section-title-in');\n                    });\n                });\n            }\n        });\n    }\n\n    \/**\n     * \u5207\u6362\u52a8\u753b\u7ed3\u675f\u540e\uff1a\u5c06\u975e\u5f53\u524d slide \u5185\u89c6\u9891\u7684\u8fdb\u5ea6\u5f52\u96f6\uff08\u5207\u6362\u8fc7\u7a0b\u4e2d\u4e0d\u91cd\u7f6e\uff0c\u907f\u514d\u4e0e\u8fc7\u6e21\u62a2\u65f6\u673a\uff09\n     * @param {import('swiper').Swiper} swiper\n     *\/\n    resetInactiveHighlightVideos(swiper) {\n        if (!swiper.el) return;\n        const currentSlide = swiper.slides?.[swiper.activeIndex];\n        if (!currentSlide) return;\n\n        swiper.el.querySelectorAll('video').forEach((video) => {\n            if (!currentSlide.contains(video)) {\n                video.pause();\n                video.currentTime = 0;\n            }\n        });\n    }\n\n    \/**\n     * \u5904\u7406highlight swiper\u5e7b\u706f\u7247\u5185\u5bb9\n     * \u5b9a\u4e49swiper\u7684\u81ea\u52a8\u52a8\u753b\u903b\u8f91\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    handleSlideContent(swiper) {\n        const highlightSection = this.elements.highlightSection;\n        if (!highlightSection) return;\n\n        const currentSlide = swiper.slides?.[swiper.activeIndex];\n        if (!currentSlide || !swiper.el) return;\n        const allVideos = swiper.el.querySelectorAll('video');\n        const activeVideos = currentSlide.querySelectorAll('video');\n        const buttonControl = highlightSection.querySelector('.swiper-button-control');\n        if (buttonControl) {\n            const buttonControlState = buttonControl.getAttribute('data-state');\n            if (buttonControlState !== 'paused') {\n                return;\n            }\n        }\n\n        allVideos.forEach((video) => { video.pause(); })\n        activeVideos.forEach((video) => { video.play().catch((err) => console.error('Video playback error:', err)); });\n\n        const startTime = performance.now();\n        const duration = 6000;\n        const timelineActions = [\n            { time: 0, action: () => this.handleHighlightSwiperBullets(swiper, swiper.realIndex, 'after-active') },\n            {\n                time: duration, action: () => {\n                    if (swiper.activeIndex !== swiper.slides.length - 1) {\n                        swiper.slideNext();\n                    } else {\n                        const buttonControl = highlightSection.querySelector('.swiper-button-control');\n                        if (buttonControl) {\n                            this.setReplayState(buttonControl);\n                        }\n                    }\n                }\n            },\n        ];\n\n        function runTimeline(currentTime) {\n            const elapsed = currentTime - startTime;\n            timelineActions.forEach(({ time, action }) => {\n                if (elapsed >= time && !action.done) {\n                    action();\n                    action.done = true; \/\/ Mark as executed\n                }\n            });\n\n            if (elapsed < duration) {\n                swiper.autoSlideAnimation = requestAnimationFrame(runTimeline);\n            }\n        }\n\n        if (swiper.autoSlideAnimation) {\n            cancelAnimationFrame(swiper.autoSlideAnimation);\n        }\n        swiper.autoSlideAnimation = requestAnimationFrame(runTimeline);\n    }\n\n    \/**\n     * \u5904\u7406highlight swiper\u5e7b\u706f\u7247Bullets\n     * \u5f53activeIndex\u53d1\u751f\u53d8\u5316\u65f6\uff0c\u5207\u6362\u5bf9\u5e94\u7684bullets\u7684className\n     * \u5f53activeIndex\u4e3a-1\u65f6\uff0c\u53bb\u6389\u6240\u6709bullets\u7684className\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    handleHighlightSwiperBullets(swiper, activeIndex, className) {\n        const bullets = swiper.pagination.bullets;\n        if (bullets) {\n            bullets.forEach((bullet, bulletIndex) => {\n                bullet.classList.toggle(className, bulletIndex === activeIndex);\n            });\n        }\n    }\n\n    \/**\n     * \u5904\u7406highlight swiper\u5e7b\u706f\u7247\u53ef\u89c1\u6027\u53d8\u5316\n     * \u5f53swiper\u5b8c\u5168\u51fa\u73b0\u5728\u89c6\u53e3\u4e2d\u65f6\uff0c\u64ad\u653e\u89c6\u9891\n     * \u5f53swiper\u5b8c\u5168\u79bb\u5f00\u89c6\u53e3\u4e2d\u65f6\uff0c\u6682\u505c\u89c6\u9891\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    handleSwiperVisibility(swiper) {\n        const highlightSection = this.elements.highlightSection;\n        if (!highlightSection) return;\n\n        const observer = new IntersectionObserver(\n            (entries) => {\n                entries.forEach((entry) => {\n                    if (entry.isIntersecting) {\n                        this.handleSlideContent(swiper);\n                    } else {\n                        \/\/ Swiper is not visible, pause timeline\n                        if (swiper.autoSlideAnimation) {\n                            const buttonControl = highlightSection.querySelector('.swiper-button-control');\n                            if (!buttonControl || buttonControl.getAttribute('data-state') === 'paused') {\n                                this.handleHighlightSwiperBullets(swiper, -1, 'after-active');\n                            }\n                            cancelAnimationFrame(swiper.autoSlideAnimation);\n                            swiper.autoSlideAnimation = null;\n                        }\n                    }\n                });\n            },\n            { threshold: 0.15 }\n        );\n\n        observer.observe(swiper.el);\n    }\n\n    \/**\n     * \u5904\u7406highlight swiper\u5e7b\u706f\u7247\u9875\u9762\u53ef\u89c1\u6027\u53d8\u5316\n     * \u5f53\u9875\u9762\u53ef\u89c1\u65f6\uff0c\u64ad\u653e\u89c6\u9891\n     * \u5f53\u9875\u9762\u4e0d\u53ef\u89c1\u65f6\uff0c\u6682\u505c\u89c6\u9891\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    handleSwiperPageVisibilityChange(swiper) {\n        const highlightSection = this.elements.highlightSection;\n        if (!highlightSection) return;\n\n        document.addEventListener('visibilitychange', () => {\n            if (!swiper.el) return;\n\n            if (!document.hidden && swiper.el.getBoundingClientRect().top < window.innerHeight) {\n                this.handleSlideContent(swiper);\n            } else {\n                if (swiper.autoSlideAnimation) {\n                    const buttonControl = highlightSection.querySelector('.swiper-button-control');\n                    if (!buttonControl || buttonControl.getAttribute('data-state') === 'paused') {\n                        this.handleHighlightSwiperBullets(swiper, -1, 'after-active');\n                    }\n                    cancelAnimationFrame(swiper.autoSlideAnimation);\n                    swiper.autoSlideAnimation = null;\n                }\n            }\n        });\n    }\n\n    \/**\n     * observer highlight swiper\n     * \u5f53swiper\u5b8c\u5168\u51fa\u73b0\u5728\u89c6\u53e3\u4e2d\u65f6\uff0c\u663e\u793a.swiper-control-pagination\n     * \u5f53swiper\u5b8c\u5168\u79bb\u5f00\u89c6\u53e3\u4e2d\u65f6\uff0c\u9690\u85cf.swiper-control-pagination\n     * @param {Swiper} swiper - \u5e7b\u706f\u7247\u5b9e\u4f8b\n     *\/\n    handleSwiperControlButtonVisibility(swiper) {\n        const highlightSection = this.elements.highlightSection;\n        const swiperControlPagination = highlightSection.querySelector('.swiper-control-pagination');\n        if (!highlightSection || !swiperControlPagination) return;\n\n        const observer = new IntersectionObserver(\n            (entries) => {\n                entries.forEach((entry) => {\n                    if (entry.isIntersecting && !swiperControlPagination.classList.contains('animate-show')) {\n                        swiperControlPagination.classList.add('animate-show');\n                        observer.disconnect();\n                    }\n                });\n            },\n            { threshold: 0.6 }\n        );\n        observer.observe(swiper.el);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316watch film\u6309\u94ae\u70b9\u51fb\u4e8b\u4ef6\n     *\/\n    initWatchFilmClickEvent(swiper) {\n        const highlightSection = this.elements.highlightSection;\n        if (!highlightSection) return;\n\n        const buttonControl = highlightSection.querySelector('.swiper-button-control');\n        const watchFilm = highlightSection.querySelector('.section-watch-film');\n        const id = watchFilm.dataset.id;\n        if (!id) return;\n\n        const videoModal = document.getElementById(id);\n        if (!videoModal) return;\n\n        watchFilm.addEventListener('click', () => {\n            if (buttonControl) {\n                const buttonControlState = buttonControl.getAttribute('data-state');\n                if (buttonControlState === 'paused') {\n                    this.setPlayingState(buttonControl);\n                    cancelAnimationFrame(swiper.autoSlideAnimation);\n                    swiper.autoSlideAnimation = null;\n                    this.handleHighlightSwiperBullets(swiper, -1, 'after-active');\n                }\n            }\n            videoModal.classList.add('show');\n            const video = videoModal.querySelector('video');\n            if (!video.src) {\n                video.src = video.dataset.controlSrc;\n            }\n            video.play();\n        });\n\n        const overlay = videoModal.querySelector('.section-modal-overlay');\n        if (overlay) {\n            overlay.addEventListener('click', (event) => {\n                if (!event.target.closest('.section-modal-wrapper')) {\n                    const video = videoModal.querySelector('video');\n                    videoModal.classList.remove('show');\n                    video.pause();\n                }\n            });\n        }\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 introduction \u6eda\u52a8\u52a8\u753b\n     * \u4ece\u5bb9\u5668\u9876\u90e8\u7b49\u4e8e\u89c6\u53e3\u9876\u90e8\u5f00\u59cb\uff0cprogress 0\u21921\n     * 0-0.1 \u7a7a | 0.2-0.5 mask 0\u21921 | 0.6-0.9 info 0\u21921 + translateY 30px\u21920 | 0.9-1 \u7a7a\n     *\/\n    initIntroductionEvents() {\n        const handler = this.createIntroductionScrollHandler();\n        if (handler) {\n            this.registerScrollHandler('introduction', handler);\n            handler();\n        }\n    }\n\n    \/**\n     * \u521b\u5efa introduction \u6eda\u52a8\u5904\u7406\u5668\n     *\/\n    createIntroductionScrollHandler() {\n        const introductionSection = this.elements.introductionSection;\n        if (!introductionSection) return null;\n\n        const stickyContainer = introductionSection.querySelector('.section-sticky-container');\n        const sectionInfo = introductionSection.querySelector('.section-info');\n        const sectionMask = introductionSection.querySelector('.section-mask');\n\n        if (!stickyContainer || !sectionInfo || !sectionMask) return null;\n\n        return () => {\n            const rect = stickyContainer.getBoundingClientRect();\n            const viewportHeight = window.innerHeight;\n\n            \/\/ \u5bb9\u5668\u9876\u90e8 = \u89c6\u53e3\u9876\u90e8\u65f6 progress=0\uff0c\u5411\u4e0b\u6eda\u52a8\u4e00\u5c4f\u65f6 progress=1\n            const progress = Math.max(0, Math.min(1, -rect.top \/ viewportHeight));\n\n            \/\/ 0-0.1 \u7a7a | 0.2-0.4 mask 0\u21921\n            const maskOpacity = progress < 0.2 ? 0 : progress > 0.4 ? 1 : (progress - 0.2) \/ 0.2;\n            sectionMask.style.opacity = String(maskOpacity);\n\n            \/\/ 0.5-0.8 info 0\u21921, translateY 30px\u21920 | 0.8-1 \u7a7a\n            const infoT = progress < 0.5 ? 0 : progress > 0.8 ? 1 : (progress - 0.5) \/ 0.3;\n            sectionInfo.style.opacity = String(infoT);\n            sectionInfo.style.transform = `translateY(${30 * (1 - infoT)}px)`;\n        };\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 link infinite event\n     *\/\n    initLinkInfiniteEvents() {\n        const linkInfiniteSection = this.elements.linkInfiniteSection;\n        if (!linkInfiniteSection) return;\n\n        const video = linkInfiniteSection.querySelector('video');\n        if (!video) return;\n\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach((entry) => {\n                if (entry.isIntersecting) {\n                    video.play();\n                    observer.disconnect();\n                }\n            });\n        }, { threshold: 0.8 });\n        observer.observe(video);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 mode section event\n     *\/\n    initModeSectionEvents() {\n        const modeSection = this.elements.modeSection;\n        if (!modeSection) return;\n\n        const modeSwiper = new Swiper(modeSection.querySelector('.section-mode-swiper'), {\n            slidesPerView: 1,\n            spaceBetween: 0,\n            speed: 600,\n            effect: 'fade',\n            fadeEffect: {\n                crossFade: true,\n            },\n            on: {\n                slideChange: (swiper) => {\n                    const activeIndex = swiper.activeIndex;\n                    const switchButtonEls = modeSection.querySelectorAll('.switch-button');\n                    const switchBackgroundEl = modeSection.querySelector('.switch-background');\n                    switchButtonEls.forEach((button, index) => {\n                        button.classList.toggle('active', index === activeIndex);\n                    });\n                    switchBackgroundEl.style.transform = `translateX(${activeIndex * 100}%)`;\n                }\n            }\n        });\n\n        const switchButtonSections = modeSection.querySelectorAll('.switch-button');\n        const descriptionSection = modeSection.querySelector('.section-description');\n        if (!switchButtonSections || !descriptionSection) return;\n\n        switchButtonSections.forEach((buttonSection, index) => {\n            buttonSection.addEventListener('click', () => {\n                if (modeSwiper) {\n                    modeSwiper.slideTo(index);\n                }\n\n                if (index === 1) {\n                    descriptionSection.classList.add('show-deactivate');\n                } else {\n                    descriptionSection.classList.remove('show-deactivate');\n                }\n            });\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 focus section \u6eda\u52a8\u4e8b\u4ef6\n     * \u7531\u6eda\u52a8\u63a7\u5236 canvas \u5e27\u5e8f\u5217\u64ad\u653e\uff0c\u5bb9\u5668\u9876\u90e8\u7b49\u4e8e\u89c6\u53e3\u9876\u90e8\u65f6\u5f00\u59cb\n     *\/\n    initFocusSectionEvents() {\n        const handler = this.createFocusSectionScrollHandler();\n        if (handler) {\n            this.registerScrollHandler('focus', handler);\n            handler();\n        }\n    }\n\n    \/**\n     * \u521b\u5efa focus section \u6eda\u52a8\u5904\u7406\u5668\n     * \u53d6\u6d88\u81ea\u52a8\u52a0\u8f7d\u3001\u53d6\u6d88 window \u76d1\u542c\uff0c\u7531\u6eda\u52a8\u9a71\u52a8 canvas \u5e27\u5e8f\u5217\n     * \u5f53 sticky \u5bb9\u5668\u9876\u90e8 = \u89c6\u53e3\u9876\u90e8\u65f6 progress=0 \u5f00\u59cb\n     *\/\n    createFocusSectionScrollHandler() {\n        const focusSection = this.elements.focusSection;\n        if (!focusSection) return null;\n\n        const stickyContainer = focusSection.querySelector('.section-sticky-container');\n        const canvas = focusSection.querySelector('canvas');\n        if (!stickyContainer || !canvas) return null;\n\n        const frameCount = 30;\n        const frameTitle = 'frame01';\n        const urls = Array.from(\n            { length: frameCount },\n            (_, i) => `https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/${frameTitle}\/${String(i + 1).padStart(4, '0')}.jpg`\n        );\n\n        const ctx = canvas.getContext('2d');\n        const maxDpr = 2;\n        const dpr = Math.min(window.devicePixelRatio || 1, maxDpr);\n        const images = new Array(frameCount);\n\n        const loadFrameAt = (index) => {\n            if (index < 0 || index >= frameCount) return;\n            const src = urls[index];\n            const img = new Image();\n            img.decoding = 'async';\n            img.src = src;\n            img.onload = () => {\n                images[index] = img;\n            };\n            img.onerror = () => {\n                images[index] = null;\n            };\n        };\n\n        loadFrameAt(0);\n        PyroUltraManager.whenNearViewportOnce(focusSection, () => {\n            for (let i = 1; i < frameCount; i++) {\n                loadFrameAt(i);\n            }\n        });\n\n        const setupCrispCanvas = () => {\n            const cssW = Math.round(canvas.clientWidth || focusSection.clientWidth || 1440);\n            const cssH = Math.round(canvas.clientHeight || focusSection.clientHeight || 480);\n            canvas.style.width = cssW + 'px';\n            canvas.style.height = cssH + 'px';\n            canvas.width = Math.max(1, Math.round(cssW * dpr));\n            canvas.height = Math.max(1, Math.round(cssH * dpr));\n            ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n            ctx.imageSmoothingEnabled = true;\n            ctx.imageSmoothingQuality = 'high';\n            return { cssW, cssH };\n        };\n\n        const drawFrame = (img) => {\n            if (!img) return;\n            const { cssW, cssH } = setupCrispCanvas();\n            const iw = img.naturalWidth, ih = img.naturalHeight;\n            const scale = Math.max(cssW \/ iw, cssH \/ ih);\n            const dw = iw * scale, dh = ih * scale;\n            const dx = (cssW - dw) \/ 2, dy = (cssH - dh) \/ 2;\n            ctx.clearRect(0, 0, cssW, cssH);\n            ctx.drawImage(img, dx, dy, dw, dh);\n        };\n\n        setupCrispCanvas();\n        ctx.fillStyle = '#000';\n        ctx.fillRect(0, 0, canvas.width \/ dpr, canvas.height \/ dpr);\n\n        return () => {\n            const rect = stickyContainer.getBoundingClientRect();\n            const viewportHeight = window.innerHeight;\n            const progress = Math.max(0, Math.min(1, -rect.top \/ viewportHeight));\n\n            const frameIndex = Math.min(\n                frameCount - 1,\n                Math.floor(progress * frameCount)\n            );\n            const img = images[frameIndex];\n            if (img) drawFrame(img);\n        };\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 twifi section event\n     *\/\n    initTwifiSectionEvents() {\n        const twifiSection = this.elements.twifiSection;\n        if (!twifiSection) return;\n\n        const video = twifiSection.querySelector('video');\n        if (!video) return;\n\n        const observer = new IntersectionObserver((entries) => {\n            entries.forEach((entry) => {\n                if (entry.isIntersecting) {\n                    video.play();\n                    observer.disconnect();\n                }\n            });\n        }, { threshold: 0.6 });\n        observer.observe(video);\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 stream section event\n     *\/\n    initStreamSectionEvents() {\n        const streamSection = this.elements.streamSection;\n        if (!streamSection) return;\n\n        const streamSwiper = new Swiper(streamSection.querySelector('.section-stream-swiper'), {\n            slidesPerView: 1,\n            spaceBetween: 0,\n            speed: 600,\n            effect: 'fade',\n            fadeEffect: {\n                crossFade: true,\n            },\n            on: {\n                slideChange: (swiper) => {\n                    const activeIndex = swiper.activeIndex;\n                    const switchButtonEls = streamSection.querySelectorAll('.switch-button');\n                    const switchBackgroundEl = streamSection.querySelector('.switch-background');\n                    switchButtonEls.forEach((button, index) => {\n                        button.classList.toggle('active', index === activeIndex);\n                    });\n                    switchBackgroundEl.style.transform = `translateX(${activeIndex * 100}%)`;\n                }\n            }\n        });\n\n        const switchButtonSections = streamSection.querySelectorAll('.switch-button');\n        if (!switchButtonSections) return;\n\n        switchButtonSections.forEach((buttonSection, index) => {\n            buttonSection.addEventListener('click', () => {\n                if (streamSwiper) {\n                    streamSwiper.slideTo(index);\n                }\n            });\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 freeze section event\n     *\/\n    initFreezeSectionEvents() {\n        const freezeSection = this.elements.freezeSection;\n        if (!freezeSection) return;\n\n        const freezeSwiper = new Swiper(freezeSection.querySelector('.section-freeze-swiper'), {\n            slidesPerView: 1,\n            spaceBetween: 0,\n            speed: 600,\n            effect: 'fade',\n            fadeEffect: {\n                crossFade: true,\n            },\n            on: {\n                slideChange: (swiper) => {\n                    const activeIndex = swiper.activeIndex;\n                    const switchButtonEls = freezeSection.querySelectorAll('.switch-button');\n                    const switchBackgroundEl = freezeSection.querySelector('.switch-background');\n                    switchButtonEls.forEach((button, index) => {\n                        button.classList.toggle('active', index === activeIndex);\n                    });\n                    switchBackgroundEl.style.transform = `translateX(${activeIndex * 100}%)`;\n                }\n            }\n        });\n\n        const switchButtonSections = freezeSection.querySelectorAll('.switch-button');\n        if (!switchButtonSections) return;\n\n        switchButtonSections.forEach((buttonSection, index) => {\n            buttonSection.addEventListener('click', () => {\n                if (freezeSwiper) {\n                    freezeSwiper.slideTo(index);\n                }\n            });\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 versatile section event\n     *\/\n    initVersatileSectionEvents() {\n        const versatileSection = this.elements.versatileSection;\n        if (!versatileSection) return;\n\n        const countContainerWidth = versatileSection.querySelector('.section-wrapper').clientWidth;\n        const containerBeforeWidth = (document.documentElement.clientWidth - countContainerWidth) \/ 2;\n        const versatileSwiper = new Swiper(versatileSection.querySelector('.section-versatile-swiper'), {\n            slidesPerView: 1,\n            spaceBetween: 0,\n            speed: 1000,\n            navigation: {\n                nextEl: versatileSection.querySelector('.section-swiper-btn .swiper-button-next'),\n                prevEl: versatileSection.querySelector('.section-swiper-btn .swiper-button-prev'),\n            },\n            on: {\n                resize: function () {\n                    if (window.innerWidth > 768) {\n                        const countContainerWidth = versatileSection.querySelector('.section-wrapper').clientWidth;\n                        const containerBeforeWidth = (document.documentElement.clientWidth - countContainerWidth) \/ 2;\n                        this.params.slidesOffsetBefore = containerBeforeWidth;\n                        this.params.slidesOffsetAfter = -containerBeforeWidth;\n                        this.update();\n                    } else {\n                        this.params.slidesOffsetBefore = 0;\n                        this.params.slidesOffsetAfter = 0;\n                        this.update();\n                    }\n                },\n            },\n            breakpoints: {\n                768: {\n                    \/\/ allowTouchMove: false,\n                    width: 690,\n                    spaceBetween: 20,\n                    slidesOffsetBefore: containerBeforeWidth,\n                    slidesOffsetAfter: -containerBeforeWidth,\n                },\n            },\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 ultra section event\n     *\/\n    initUltraSectionEvents() {\n        const ultraSection = this.elements.ultraSection;\n        if (!ultraSection) return;\n\n        const buyNowBtn = ultraSection.querySelector('.section-buy-btn');\n        const shopUrl = document.getElementById('official-shop-url');\n\n        if (!buyNowBtn || !shopUrl) return;\n\n        if (shopUrl.href) {\n            buyNowBtn.href = shopUrl.href;\n        }\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 package section event\n     *\/\n    initPackageSectionEvents() {\n        const packageSection = this.elements.packageSection;\n        if (!packageSection) return;\n\n        const lists = packageSection.querySelectorAll('.section-package-list');\n        const switchBackground = packageSection.querySelector('.switch-background');\n        const buttons = packageSection.querySelectorAll('.switch-button');\n        buttons.forEach((button, index) => {\n            button.addEventListener('click', () => {\n                buttons.forEach((btn) => btn.classList.remove('active'));\n                button.classList.add('active');\n\n                if (switchBackground) {\n                    switchBackground.style.transform = `translateX(${index * 100}%)`;\n                }\n\n                lists.forEach((list) => list.classList.remove('active'));\n                lists[index].classList.add('active');\n            });\n        });\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 focus section \u6eda\u52a8\u4e8b\u4ef6\n     *\/\n    initPortSectionEvents() {\n        const handler = this.createPortSectionScrollHandler();\n        if (handler) {\n            this.registerScrollHandler('port', handler);\n            handler();\n            window.addEventListener('resize', handler, { passive: true });\n        }\n    }\n\n    \/**\n     * \u521b\u5efa port section \u6eda\u52a8\u5904\u7406\u5668\uff08\u684c\u9762 frame02\uff1b\u79fb\u52a8\u7aef\u5de6 frame03\u3001\u53f3 frame04\uff09\n     *\/\n    createPortSectionScrollHandler() {\n        const portSection = this.elements.portSection;\n        if (!portSection) return null;\n\n        const frameCount = 30;\n        const makeFrameUrls = (frameTitle) =>\n            Array.from(\n                { length: frameCount },\n                (_, i) =>\n                    `https:\/\/cdn.hollyland.com\/file\/product\/pyro-ultra\/images\/${frameTitle}\/${String(i + 1).padStart(4, '0')}.jpg`\n            );\n\n        const urlsDesktop = makeFrameUrls('frame05');\n        const urlsMobileLeft = makeFrameUrls('frame06');\n        const urlsMobileRight = makeFrameUrls('frame07');\n\n        const imagesDesktop = new Array(frameCount);\n        const imagesMobileLeft = new Array(frameCount);\n        const imagesMobileRight = new Array(frameCount);\n\n        const buildHandler = (\n            stickyContainer,\n            canvas,\n            startAnnotation,\n            endAnnotation,\n            sizeFallbackW,\n            sizeFallbackH,\n            images\n        ) => {\n            if (!stickyContainer || !canvas || !startAnnotation || !endAnnotation) return null;\n\n            const ctx = canvas.getContext('2d');\n            const maxDpr = 2;\n\n            const startAnnotationTexts = startAnnotation.querySelectorAll('.section-annotation-text');\n            const startAnnotationLines = startAnnotation.querySelectorAll('.section-annotation-line');\n            const startAnnotationDots = startAnnotation.querySelectorAll('.section-annotation-dot');\n            const endAnnotationTexts = endAnnotation.querySelectorAll('.section-annotation-text');\n            const endAnnotationLines = endAnnotation.querySelectorAll('.section-annotation-line');\n            const endAnnotationDots = endAnnotation.querySelectorAll('.section-annotation-dot');\n\n            const setupCrispCanvas = () => {\n                const dpr = Math.min(window.devicePixelRatio || 1, maxDpr);\n                const cssW = Math.round(canvas.clientWidth || sizeFallbackW);\n                const cssH = Math.round(canvas.clientHeight || sizeFallbackH);\n                canvas.style.width = cssW + 'px';\n                canvas.style.height = cssH + 'px';\n                canvas.width = Math.max(1, Math.round(cssW * dpr));\n                canvas.height = Math.max(1, Math.round(cssH * dpr));\n                ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n                ctx.imageSmoothingEnabled = true;\n                ctx.imageSmoothingQuality = 'high';\n                return { cssW, cssH, dpr };\n            };\n\n            const drawFrame = (img) => {\n                if (!img) return;\n                const { cssW, cssH } = setupCrispCanvas();\n                const iw = img.naturalWidth;\n                const ih = img.naturalHeight;\n                const scale = Math.max(cssW \/ iw, cssH \/ ih);\n                const dw = iw * scale;\n                const dh = ih * scale;\n                const dx = (cssW - dw) \/ 2;\n                const dy = (cssH - dh) \/ 2;\n                ctx.clearRect(0, 0, cssW, cssH);\n                ctx.drawImage(img, dx, dy, dw, dh);\n            };\n\n            const paintBlack = () => {\n                const { cssW, cssH } = setupCrispCanvas();\n                ctx.fillStyle = '#000';\n                ctx.fillRect(0, 0, cssW, cssH);\n            };\n            paintBlack();\n\n            return () => {\n                const rect = stickyContainer.getBoundingClientRect();\n                const viewportHeight = window.innerHeight;\n                const progress = Math.max(0, Math.min(1, -rect.top \/ viewportHeight));\n\n                if (progress >= 0.1 && progress <= 0.3) {\n                    const annotationPhase = (progress - 0.1) \/ 0.2;\n                    const textDone = annotationPhase >= 0.333;\n                    const lineDone = annotationPhase >= 0.667;\n                    const dotDone = annotationPhase >= 0.9;\n\n                    startAnnotationTexts.forEach((el) => el.classList.toggle('close', textDone));\n                    startAnnotationLines.forEach((el) => el.classList.toggle('close', lineDone));\n                    startAnnotationDots.forEach((el) => el.classList.toggle('close', dotDone));\n                } else if (progress > 0.3) {\n                    startAnnotationTexts.forEach((el) => el.classList.add('close'));\n                    startAnnotationLines.forEach((el) => el.classList.add('close'));\n                    startAnnotationDots.forEach((el) => el.classList.add('close'));\n                } else {\n                    startAnnotationTexts.forEach((el) => el.classList.remove('close'));\n                    startAnnotationLines.forEach((el) => el.classList.remove('close'));\n                    startAnnotationDots.forEach((el) => el.classList.remove('close'));\n                }\n\n                let frameIndex = progress < 0.3 ? 0 : frameCount - 1;\n                if (progress >= 0.3 && progress <= 0.7) {\n                    const canvasPhase = (progress - 0.3) \/ 0.4;\n                    frameIndex = Math.min(\n                        frameCount - 1,\n                        Math.floor(canvasPhase * frameCount)\n                    );\n                }\n                const frameImg = images[frameIndex];\n                if (frameImg) drawFrame(frameImg);\n\n                if (progress >= 0.7 && progress <= 0.9) {\n                    const annotationPhase = (progress - 0.7) \/ 0.2;\n                    const dotVisible = annotationPhase >= 0.333;\n                    const lineVisible = annotationPhase >= 0.667;\n                    const textVisible = annotationPhase >= 0.9;\n\n                    endAnnotationTexts.forEach((el) => el.classList.toggle('close', !textVisible));\n                    endAnnotationLines.forEach((el) => el.classList.toggle('close', !lineVisible));\n                    endAnnotationDots.forEach((el) => el.classList.toggle('close', !dotVisible));\n                } else if (progress < 0.7) {\n                    endAnnotationTexts.forEach((el) => el.classList.add('close'));\n                    endAnnotationLines.forEach((el) => el.classList.add('close'));\n                    endAnnotationDots.forEach((el) => el.classList.add('close'));\n                } else if (progress > 0.9) {\n                    endAnnotationTexts.forEach((el) => el.classList.remove('close'));\n                    endAnnotationLines.forEach((el) => el.classList.remove('close'));\n                    endAnnotationDots.forEach((el) => el.classList.remove('close'));\n                }\n            };\n        };\n\n        const desktopSticky = portSection.querySelector('.section-port-desktop .section-sticky-container');\n        const desktopCanvas = portSection.querySelector('.section-port-desktop canvas');\n        const desktopStart = portSection.querySelector('.section-port-desktop .start-annotation');\n        const desktopEnd = portSection.querySelector('.section-port-desktop .end-annotation');\n\n        const mobileLeftSticky = portSection.querySelector('.section-port-mobile-left .section-sticky-container');\n        const mobileLeftCanvas = portSection.querySelector('#focus-canvas-port-left');\n        const mobileLeftStart = portSection.querySelector('.section-port-mobile-left .start-annotation');\n        const mobileLeftEnd = portSection.querySelector('.section-port-mobile-left .end-annotation');\n\n        const mobileRightSticky = portSection.querySelector('.section-port-mobile-right .section-sticky-container');\n        const mobileRightCanvas = portSection.querySelector('#focus-canvas-port-right');\n        const mobileRightStart = portSection.querySelector('.section-port-mobile-right .start-annotation');\n        const mobileRightEnd = portSection.querySelector('.section-port-mobile-right .end-annotation');\n\n        const desktopHandler = buildHandler(\n            desktopSticky,\n            desktopCanvas,\n            desktopStart,\n            desktopEnd,\n            portSection.clientWidth || 780,\n            780,\n            imagesDesktop\n        );\n        const mobilePortSize = 350;\n        const mobileLeftHandler = buildHandler(\n            mobileLeftSticky,\n            mobileLeftCanvas,\n            mobileLeftStart,\n            mobileLeftEnd,\n            mobilePortSize,\n            mobilePortSize,\n            imagesMobileLeft\n        );\n        const mobileRightHandler = buildHandler(\n            mobileRightSticky,\n            mobileRightCanvas,\n            mobileRightStart,\n            mobileRightEnd,\n            mobilePortSize,\n            mobilePortSize,\n            imagesMobileRight\n        );\n\n        const run = () => {\n            const mobile = window.innerWidth <= this.MOBILE_BREAKPOINT;\n            if (mobile) {\n                mobileLeftHandler?.();\n                mobileRightHandler?.();\n            } else {\n                desktopHandler?.();\n            }\n        };\n\n        const loadFrameAt = (urls, images, index) => {\n            if (index < 0 || index >= frameCount) return;\n            const src = urls[index];\n            const img = new Image();\n            img.decoding = 'async';\n            img.src = src;\n            img.onload = () => {\n                images[index] = img;\n                if (index === 0) run();\n            };\n            img.onerror = () => {\n                images[index] = null;\n            };\n        };\n\n        const loadRemainingFrames = (urls, images) => {\n            for (let i = 1; i < frameCount; i++) {\n                loadFrameAt(urls, images, i);\n            }\n        };\n\n        loadFrameAt(urlsDesktop, imagesDesktop, 0);\n        loadFrameAt(urlsMobileLeft, imagesMobileLeft, 0);\n        loadFrameAt(urlsMobileRight, imagesMobileRight, 0);\n\n        PyroUltraManager.whenNearViewportOnce(portSection, () => {\n            loadRemainingFrames(urlsDesktop, imagesDesktop);\n            loadRemainingFrames(urlsMobileLeft, imagesMobileLeft);\n            loadRemainingFrames(urlsMobileRight, imagesMobileRight);\n        });\n\n        return run;\n    }\n\n    \/**\n     * \u521d\u59cb\u5316 specs section event\n     *\/\n    initSpecsSectionEvents() {\n        const specsSection = this.elements.specsSection;\n        if (!specsSection) return;\n\n        const switchItems = specsSection.querySelectorAll('.switch-button');\n        const switchBackground = specsSection.querySelector('.switch-background');\n        const listSection = specsSection.querySelector('.section-list');\n        switchItems.forEach((item, index) => {\n            item.addEventListener('click', () => {\n                switchItems.forEach((btn) => btn.classList.remove('active'));\n                item.classList.add('active');\n\n                if (switchBackground) {\n                    switchBackground.style.transform = `translateX(${index * 100}%)`;\n                }\n\n                listSection.classList.toggle('receiver-active', index === 1);\n            });\n        });\n    }\n}\n\nconst pyroUltraManager = new PyroUltraManager();\nexport default pyroUltraManager;\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Wireless Video Solution Pyro Ultra Link Infinite Highlights Overview. Watch the film 1TX &#038;&nbsp;Unlimited&nbsp;RX 4K60&nbsp;UHD focus&nbsp;Mode Proprietary&nbsp;TWiFiTechnology Pyro&nbsp;Ecosystem DFS&nbsp;Certified UVC &#038; RTMP&nbsp;Steaming HDMI &#038; SDI&nbsp;Flexibility Pyro Ultra is a revolutionary wireless video transmission system that connects one transmitter to unlimited receivers, expanding monitoring without limits. With true 4K\/60fps capture, and Focus Mode reducing latency to<\/p>\n","protected":false},"featured_media":603856,"menu_order":0,"template":"product-template\/product-bar-new.php","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","_seopress_titles_title":"Hollyland Pyro Ultra - Wireless Video Transmitter | 1TX & Unlimited RX | 4K60 - Hollyland","_seopress_titles_desc":"Pyro Ultra is a revolutionary wireless video transmission system that connects one transmitter to unlimited receivers, expanding monitoring without limits. With true 4K\/60fps capture, and Focus Mode reducing latency to as low as 20ms, Pyro Ultra brings you cinematic clarity and tracks every lens adjustment with absolute precision. Powered by our proprietary TWiFi technology, it offers a line-of-sight transmission range of up to 4,900 ft. (1.5 km), with automatic frequency hopping for stable, interference-free transmission, so you can push further, work faster, and collaborate without compromise.\r\n\r\nAs part of the Pyro ecosystem, Ultra integrates with the entire Pyro family to scale workflows across productions of any size. One transmitter. All Pyros. Unlimited receivers. This is Ultra.","_seopress_robots_index":"","_eb_attr":""},"categories":[16,73],"class_list":["post-603851","product","type-product","status-publish","has-post-thumbnail","hentry","category-collections","category-video-solutions"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/product\/603851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/types\/product"}],"version-history":[{"count":6,"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/product\/603851\/revisions"}],"predecessor-version":[{"id":610134,"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/product\/603851\/revisions\/610134"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/media\/603856"}],"wp:attachment":[{"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/media?parent=603851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hollyland.com\/wp-json\/wp\/v2\/categories?post=603851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}