{"id":26510,"date":"2026-06-18T02:38:13","date_gmt":"2026-06-18T02:38:13","guid":{"rendered":"https:\/\/hkballet2.websitedevsystem.com\/engage\/school-ballet-talks-2\/"},"modified":"2026-11-10T04:04:38","modified_gmt":"2026-11-10T04:04:38","slug":"school-ballet-talks","status":"publish","type":"engage","link":"https:\/\/www.hkballet.com\/zh-hant\/engage\/school-ballet-talks\/","title":{"rendered":"\u6821\u5712\u82ad\u857e\u821e\u8b1b\u5ea7 \/ \u5de5\u4f5c\u574a"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"26510\" class=\"elementor elementor-26510 elementor-3028\" data-elementor-post-type=\"engage\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5bb6dc4 e-con-full e-flex e-con e-parent\" data-id=\"5bb6dc4\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d6fde92 elementor-widget elementor-widget-heading\" data-id=\"d6fde92\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">\u6821\u5712\u82ad\u857e\u821e\u8b1b\u5ea7 \/ \u5de5\u4f5c\u574a<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b2c3c75 e-con-full e-flex e-con e-parent\" data-id=\"b2c3c75\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f95bf90 elementor-widget elementor-widget-hkb_breadcrumbs\" data-id=\"f95bf90\" data-element_type=\"widget\" data-widget_type=\"hkb_breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<nav class=\"hkb-breadcrumbs\" aria-label=\"Breadcrumb\">\n\t\t\t<ol class=\"hkb-breadcrumbs__list\" itemscope itemtype=\"https:\/\/schema.org\/BreadcrumbList\">\n\t\t\t\t\t\t\t\t\t<li class=\"hkb-breadcrumbs__item\" itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a itemprop=\"item\" href=\"\/\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span itemprop=\"name\">\u4e3b\u9801<\/span>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t<meta itemprop=\"position\" content=\"1\">\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"hkb-breadcrumbs__item\" itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a itemprop=\"item\" href=\"https:\/\/www.hkballet.com\/zh-hant\/engage\/\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span itemprop=\"name\">\u6559\u80b2\u53ca\u793e\u5340\u6d3b\u52d5<\/span>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t<meta itemprop=\"position\" content=\"2\">\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"hkb-breadcrumbs__item\" itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"hkb-breadcrumbs__current\" itemprop=\"name\"\n\t\t\t\t\t\t\t\t aria-current=\"page\">\u5f59\u6574<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<meta itemprop=\"position\" content=\"3\">\n\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/ol>\n\t\t<\/nav>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-134129d e-flex e-con-boxed e-con e-parent\" data-id=\"134129d\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-87d77f0 gotham-regular elementor-widget elementor-widget-text-editor\" data-id=\"87d77f0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>\u6821\u5712\u82ad\u857e\u821e\u8b1b\u5ea7 \/ \u5de5\u4f5c\u574a\u662f\u4e00\u500b\u5bcc\u6709\u8da3\u5473\u3001\u6559\u80b2\u6027\u53ca\u4e92\u52d5\u6027\u7684\u6d3b\u52d5\uff0c\u5176\u65e8\u5728\u5438\u5f15\u5152\u7ae5\u53ca\u9752\u5c11\u5e74\u63a5\u89f8\u82ad\u857e\u821e\uff0c\u4e26\u6fc0\u767c\u4ed6\u5011\u5c0d\u6b64\u9805\u85dd\u8853\u7684\u7d42\u751f\u71b1\u611b\u3002\u91dd\u5c0d\u5c0f\u5b78\u3001\u4e2d\u5b78\u548c\u5927\u5c08\u7684\u4e0d\u540c\u6c34\u5e73\uff0c\u9999\u6e2f\u82ad\u857e\u821e\u5718\u5275\u65b0\u5730\u878d\u5408\u6b77\u53f2\u3001\u6545\u4e8b\u548c\u821e\u8e48\u52d5\u4f5c\uff0c\u5411\u5b78\u751f\u4ecb\u7d39\u82ad\u857e\u821e\u7684\u767c\u5c55\u6b77\u7a0b\u3002\u53c3\u8207\u7684\u5b78\u751f\u53ef\u5f9e\u4e2d\u4e86\u89e3\u7279\u5b9a\u82ad\u857e\u821e\u5287\u7684\u4e3b\u984c\uff0c\u60c5\u7bc0\u548c\u4eba\u7269\u89d2\u8272\uff0c\u65e2\u589e\u9577\u4e86\u82ad\u857e\u821e\u77e5\u8b58\uff0c\u589e\u9032\u4e86\u5c0d\u82ad\u857e\u821e\u7684\u7406\u89e3\uff0c\u53c8\u53ef\u63d0\u9ad8\u5c0d\u9019\u7a2e\u85dd\u8853\u5f62\u5f0f\u7684\u8a8d\u77e5\u548c\u6b23\u8cde\u6c34\u5e73\u3002  <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4fb6ca5 e-con-full e-flex e-con e-parent\" data-id=\"4fb6ca5\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f0a624c elementor-widget__width-initial elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"f0a624c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u5716\u7247\u96c6<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0a12216 e-con-full e-flex e-con e-child\" data-id=\"0a12216\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9286c9 engage-gallery elementor-widget elementor-widget-hkb_gallery\" data-id=\"e9286c9\" data-element_type=\"widget\" data-widget_type=\"hkb_gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section id=\"gallery-widget-e9286c9\" class=\"gallery-section gallery-section--active-caption\" style=\"--gallery-slide-height-desktop:var(--hkb-gallery-image-height,70vh);--gallery-slide-height-mobile:var(--hkb-gallery-image-height,30vh);\">\n  <style>\n    \/* Caption width follows its rendered image, including mobile theme overrides. *\/\n    #gallery-widget-e9286c9 .gallery-slide__text {\n      width: var(--gallery-slide-image-width, 100%) !important;\n      max-width: var(--gallery-slide-image-width, 100%) !important;\n      min-width: 0 !important;\n      box-sizing: border-box !important;\n      white-space: normal !important;\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n  <\/style>\n        <div class=\"gallery-viewport\">\n    <div class=\"gallery-swiper swiper\">\n      <div class=\"swiper-wrapper\">\n                                                          <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/9uwD5RpaAc.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/9uwD5RpaAc.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/395757656_926593175493831_660961020180775459_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/395757656_926593175493831_660961020180775459_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/FfPZ0Wx3sj.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/FfPZ0Wx3sj.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/LhnD02RCHV.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/LhnD02RCHV.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                                              <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/9uwD5RpaAc.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/9uwD5RpaAc.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/395757656_926593175493831_660961020180775459_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/395757656_926593175493831_660961020180775459_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/FfPZ0Wx3sj.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/FfPZ0Wx3sj.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/LhnD02RCHV.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/07\/LhnD02RCHV.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                    <\/div>\n    <\/div>\n\n        <div class=\"gallery-nav hidden-xs\">\n      <button class=\"gallery-btn custom-button-btn gallery-prev\" aria-label=\"\u4e0a\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/left_icon.svg\" alt=\"\">\n      <\/button>\n      <button class=\"gallery-btn custom-button-btn gallery-next\" aria-label=\"\u4e0b\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/right_icon.svg\" alt=\"\">\n      <\/button>\n    <\/div>\n      <\/div>\n\n  <div class=\"gallery-footer\">\n    <span class=\"gallery-credit\"><\/span>\n\n  <\/div>\n\n    <div class=\"gallery-dot-wrap hidden-sm\" aria-label=\"\u5716\u7247\u5c0e\u89bd\"><\/div>\n  \n  <div class=\"gallery-lightbox\" aria-hidden=\"true\">\n    <div class=\"gallery-lightbox__panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5716\u7247\u9810\u89bd\">\n      <button class=\"gallery-lightbox__close\" type=\"button\" aria-label=\"\u95dc\u9589\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M15.9939 15.2322L15.2323 15.9938L0.000153744 0.761608L0.761762 0L15.9939 15.2322Z\" fill=\"white\" \/>\n          <path d=\"M0.761608 16L0 15.2384L15.2322 0.00623141L15.9938 0.76784L0.761608 16Z\" fill=\"white\" \/>\n        <\/svg>\n      <\/button>\n      <div class=\"gallery-lightbox__panel_content\">\n        <img class=\"gallery-lightbox__image\" alt=\"\u5716\u7247\" \/>\n        <video class=\"gallery-lightbox__video\" controls playsinline preload=\"metadata\" style=\"display:none;\"><\/video>\n        <div class=\"gallery-lightbox__meta\" data-lenis-prevent>\n          <div class=\"gallery-lightbox__meta-inner\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-lightbox__controls\">\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-prev\" type=\"button\" aria-label=\"\u4e0a\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-e9286c9-clip-prev)\">\n              <path d=\"M20.4199 9.33594L20.4199 10.6689L0.419922 10.6689L0.419922 9.33594L20.4199 9.33594Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 9.25334C4.13214 9.73162 7.33323 12.3276 9.14516 16.5683L8.07531 17.3649C6.41054 13.4686 3.49103 11.1339 0.405437 10.7067L0.677548 9.25334Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 10.7467C4.13214 10.2684 7.33323 7.67236 9.14516 3.4317L8.07531 2.63514C6.41054 6.53138 3.49103 8.86608 0.405437 9.29327L0.677548 10.7467Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-e9286c9-clip-prev\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n        <div class=\"gallery-lightbox__progress-wrap\" aria-hidden=\"true\">\n          <span><\/span>\n        <\/div>\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-next\" type=\"button\" aria-label=\"\u4e0b\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-e9286c9-clip-next)\">\n              <path d=\"M0 10.6641V9.33105L20 9.33105V10.6641L0 10.6641Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 10.7467C16.2878 10.2684 13.0867 7.67237 11.2748 3.4317L12.3446 2.63514C14.0094 6.53138 16.9289 8.86608 20.0145 9.29327L19.7424 10.7467Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 9.25334C16.2878 9.73163 13.0867 12.3276 11.2748 16.5683L12.3446 17.3649C14.0094 13.4686 16.9289 11.1339 20.0145 10.7067L19.7424 9.25334Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-e9286c9-clip-next\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function() {\n      var section = document.currentScript && document.currentScript.closest('.gallery-section');\n      if (!section) section = document.getElementById(\"gallery-widget-e9286c9\");\n      if (!section) return;\n      var gallerySwiper = null;\n      var slides = [];\n      var slideCount = 0;\n      var carouselSlideCount = 0;\n      var currentIndex = 0;\n      var captionFrame = 0;\n      var isSingle = false;\n      \/\/ Ordered list (smallest device first) of\n      \/\/ { name, mode:'auto'|'custom'|'height', spv, height, media, min }, or null.\n      \/\/ The ranges come from the site's active Elementor breakpoints, so the\n      \/\/ same media query decides here and in the CSS block above.\n      var slidesConfig = null;\n      var swiperEl = section.querySelector(\".gallery-swiper\");\n\n      \/\/ The device entry matching the current viewport.\n      function currentConf() {\n        if (!slidesConfig || !slidesConfig.length) return null;\n        for (var i = 0; i < slidesConfig.length; i++) {\n          if (window.matchMedia(slidesConfig[i].media).matches) {\n            return slidesConfig[i];\n          }\n        }\n        return slidesConfig[slidesConfig.length - 1];\n      }\n\n      \/\/ Pixel-height mode uses proportional widths, independent of card counts.\n      function isCustomMode() {\n        var conf = currentConf();\n        return !!(conf && conf.mode === 'custom');\n      }\n\n      \/\/ Swiper breakpoint entry for one device.\n      function bpConf(conf) {\n        if (conf && conf.mode === 'custom') {\n          return { slidesPerView: conf.spv, spaceBetween: 4 };\n        }\n        return { slidesPerView: 'auto', spaceBetween: 4 };\n      }\n      var dotWrap = section.querySelector(\".gallery-dot-wrap\");\n      var credit = section.querySelector(\".gallery-credit\");\n      var creditTimer = 0;\n      var lightbox = section.querySelector(\".gallery-lightbox\");\n      var lightboxClose = section.querySelector(\".gallery-lightbox__close\");\n      var lightboxImage = section.querySelector(\".gallery-lightbox__image\");\n      var lightboxVideo = section.querySelector(\".gallery-lightbox__video\");\n      var lightboxMeta = section.querySelector(\".gallery-lightbox__meta\");\n      var lightboxMetaInner = section.querySelector(\".gallery-lightbox__meta-inner\");\n      var lightboxProgress = section.querySelector(\".gallery-lightbox__progress-wrap span\");\n      var lightboxPrev = section.querySelector(\".gallery-lightbox-prev\");\n      var lightboxNext = section.querySelector(\".gallery-lightbox-next\");\n      var galleryPrev = section.querySelector(\".gallery-prev\");\n      var galleryNext = section.querySelector(\".gallery-next\");\n      var activeLightboxIndex = 0;\n\n      function syncSlides() {\n        slides = Array.prototype.slice.call(section.querySelectorAll('.gallery-slide[data-gallery-original=\"1\"]'));\n        slideCount = slides.length;\n        carouselSlideCount = section.querySelectorAll(\".gallery-slide\").length;\n      }\n\n      function getSlideMedia(slide) {\n        return slide ? slide.querySelector(\"img, video\") : null;\n      }\n\n      function getLightboxMedia() {\n        if (lightboxVideo && lightboxVideo.style.display !== \"none\") {\n          return lightboxVideo;\n        }\n        return lightboxImage;\n      }\n\n      function stopLightboxVideo() {\n        if (!lightboxVideo) return;\n        lightboxVideo.pause();\n        lightboxVideo.removeAttribute(\"src\");\n        lightboxVideo.load();\n      }\n\n      function updateCaptionWidths() {\n        section.querySelectorAll('.gallery-slide').forEach(function(slide) {\n          var caption = slide.querySelector('.gallery-slide__text');\n          var image = getSlideMedia(slide);\n          if (!caption || !image) return;\n          var width = image.getBoundingClientRect().width;\n          if (width > 0) {\n            \/\/ Keep this value on the caption itself so fixed-card widths are\n            \/\/ measured after Swiper has finished sizing the slide.\n            caption.style.setProperty('--gallery-slide-image-width', width + 'px');\n          }\n        });\n      }\n\n      function updateGallerySize() {\n        if (gallerySwiper) gallerySwiper.update();\n        updateCaptionWidths();\n        if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n          gallerySwiper.updateAutoHeight(0);\n        }\n        scheduleCaptionWidths();\n      }\n\n      function scheduleCaptionWidths() {\n        window.cancelAnimationFrame(captionFrame);\n        captionFrame = window.requestAnimationFrame(function() {\n          if (!section.isConnected) return;\n          updateCaptionWidths();\n          if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n            gallerySwiper.updateAutoHeight(0);\n          }\n        });\n      }\n\n      function updateSlideWidths() {\n        if (isSingle) {\n          updateCaptionWidths();\n          return;\n        }\n        \/\/ Custom mode: Swiper computes slide widths from slidesPerView, so clear\n        \/\/ any inline widths a previous 'auto' breakpoint may have set and let\n        \/\/ Swiper size the slides.\n        if (isCustomMode()) {\n          Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\")).forEach(function(slide) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n          });\n          updateGallerySize();\n          return;\n        }\n\n        var isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n        var conf = currentConf();\n        var hasPixelHeight = !!(conf && conf.mode === 'height');\n        var gallerySlides = Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\"));\n\n        gallerySlides.forEach(function(slide) {\n          var image = getSlideMedia(slide);\n\n          if ((isMobile && !hasPixelHeight) || !image) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n            return;\n          }\n\n          var imageWidth = image.getBoundingClientRect().width;\n          if (imageWidth > 0) {\n            slide.style.width = imageWidth + \"px\";\n            slide.style.setProperty(\"--gallery-slide-image-width\", imageWidth + \"px\");\n          }\n        });\n\n        updateGallerySize();\n      }\n\n      \/\/ Captions come from a rich-text field and may carry <br\/>. Escaping the\n      \/\/ whole string first, then re-enabling only the line breaks, keeps the\n      \/\/ markup out of the visible text without opening an HTML injection hole.\n      function setCaptionHtml(el, raw) {\n        el.textContent = raw;\n        if (el.innerHTML.indexOf(\"&lt;br\") !== -1) {\n          el.innerHTML = el.innerHTML.replace(\/&lt;br\\s*\\\/?&gt;\/gi, \"<br>\");\n        }\n      }\n\n      function updateCredit(index) {\n        if (!credit || !slides[index]) return;\n        var text = slides[index].getAttribute(\"data-credit\") || \"\";\n        window.clearTimeout(creditTimer);\n        credit.classList.add(\"is-transitioning\");\n        creditTimer = window.setTimeout(function() {\n          setCaptionHtml(credit, text);\n          credit.classList.remove(\"is-transitioning\");\n        }, 60);\n      }\n\n      function updateLightboxMetaWidth() {\n        var media = getLightboxMedia();\n        if (!lightbox || !media) return;\n        var imageWidth = media.getBoundingClientRect().width;\n        if (imageWidth > 0) {\n          lightbox.style.setProperty(\"--gallery-lightbox-image-width\", imageWidth + \"px\");\n        }\n      }\n\n      \/\/ Custom dots: slides are duplicated in the DOM to enable looping, so\n      \/\/ Swiper's built-in pagination would show one bullet per copy (e.g. 9\n      \/\/ dots for 3 images). Render one dot per original image instead.\n      function buildDots() {\n        if (!dotWrap) return;\n        dotWrap.innerHTML = \"\";\n        for (var i = 0; i < slideCount; i++) {\n          (function(target) {\n            var dot = document.createElement(\"button\");\n            dot.type = \"button\";\n            dot.className = \"swiper-pagination-bullet\";\n            dot.setAttribute(\"aria-label\", \"Go to slide \" + (target + 1));\n            dot.addEventListener(\"click\", function() {\n              if (gallerySwiper) gallerySwiper.slideToLoop(target);\n            });\n            dotWrap.appendChild(dot);\n          })(i);\n        }\n      }\n\n      function updateDots() {\n        if (!dotWrap) return;\n        var dots = dotWrap.children;\n        for (var i = 0; i < dots.length; i++) {\n          dots[i].classList.toggle(\"swiper-pagination-bullet-active\", i === currentIndex);\n        }\n      }\n\n      function setActiveIndex(index) {\n        if (!slideCount) return;\n        currentIndex = ((index % slideCount) + slideCount) % slideCount;\n        updateCredit(currentIndex);\n        updateDots();\n      }\n\n      function goToGalleryIndex(index) {\n        if (!gallerySwiper || !slideCount) return;\n        var targetIndex = ((index % slideCount) + slideCount) % slideCount;\n        if (typeof gallerySwiper.slideToLoop === \"function\") {\n          gallerySwiper.slideToLoop(targetIndex);\n        } else {\n          gallerySwiper.slideTo(targetIndex);\n        }\n        setActiveIndex(targetIndex);\n      }\n\n      function showNextGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex + 1);\n      }\n\n      function showPrevGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex - 1);\n      }\n\n      function openLightbox(index) {\n        activeLightboxIndex = index;\n        var slide = slides[index];\n        if (!slide || !lightbox || !lightboxImage || !lightboxMeta || !lightboxProgress) return;\n        var mediaType = slide.getAttribute(\"data-media-type\") || \"image\";\n        var mediaUrl = slide.getAttribute(\"data-media-url\") || \"\";\n        var mediaAlt = slide.getAttribute(\"data-media-alt\") || \"Gallery image\";\n        stopLightboxVideo();\n        if (mediaType === \"video\" && lightboxVideo) {\n          lightboxImage.style.display = \"none\";\n          lightboxImage.removeAttribute(\"src\");\n          lightboxVideo.style.display = \"\";\n          lightboxVideo.src = mediaUrl;\n          lightboxVideo.load();\n        } else {\n          lightboxImage.style.display = \"\";\n          if (lightboxVideo) lightboxVideo.style.display = \"none\";\n          lightboxImage.src = mediaUrl;\n          lightboxImage.alt = mediaAlt;\n        }\n        setCaptionHtml(lightboxMetaInner || lightboxMeta, slide.getAttribute(\"data-credit\") || \"\");\n        lightboxProgress.style.width = ((index + 1) \/ slideCount) * 100 + \"%\";\n        lightbox.classList.add(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"false\");\n        if (mediaType !== \"video\" && lightboxImage.complete) {\n          updateLightboxMetaWidth();\n        }\n        window.requestAnimationFrame(updateLightboxMetaWidth);\n        document.documentElement.style.overflow = \"hidden\";\n        document.body.style.overflow = \"hidden\";\n      }\n\n      function closeLightbox() {\n        if (!lightbox) return;\n        lightbox.classList.remove(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"true\");\n        stopLightboxVideo();\n        document.documentElement.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      }\n\n      function showLightbox(index) {\n        if (!slideCount) return;\n        var nextIndex = ((index % slideCount) + slideCount) % slideCount;\n        openLightbox(nextIndex);\n      }\n\n      function showNextLightbox() {\n        showLightbox(activeLightboxIndex + 1);\n      }\n\n      function showPrevLightbox() {\n        showLightbox(activeLightboxIndex - 1);\n      }\n\n      function initGallerySwiper() {\n        if (!swiperEl || gallerySwiper) return;\n        syncSlides();\n        if (!slideCount) return;\n        if (isSingle) {\n          updateSlideWidths();\n          setActiveIndex(0);\n          return;\n        }\n        if (typeof Swiper === 'undefined') return;\n        buildDots();\n        updateSlideWidths();\n\n        \/\/ One Swiper breakpoint per active Elementor device, keyed by its\n        \/\/ min-width. Each device is auto or custom independently.\n        var breakpoints;\n        if (slidesConfig) {\n          breakpoints = {};\n          slidesConfig.forEach(function(conf) {\n            breakpoints[conf.min] = bpConf(conf);\n          });\n        } else {\n          breakpoints = {\n            0: {\n              slidesPerView: 1,\n              spaceBetween: 4,\n            },\n            769: {\n              slidesPerView: 'auto',\n              spaceBetween: 4,\n            },\n          };\n        }\n\n        gallerySwiper = new Swiper(swiperEl, {\n          slidesPerView: slidesConfig ? bpConf(currentConf()).slidesPerView : (window.innerWidth <= 768 ? 1 : 'auto'),\n          spaceBetween: 20,\n          autoHeight: true,\n          rewind: true,\n          loop: carouselSlideCount > 1,\n          loopAdditionalSlides: carouselSlideCount,\n          loopedSlides: carouselSlideCount,\n          watchOverflow: false,\n          breakpoints: breakpoints,\n          on: {\n            breakpoint: scheduleCaptionWidths,\n            loopFix: scheduleCaptionWidths,\n            resize: scheduleCaptionWidths,\n            init: function() {\n              updateSlideWidths();\n              setActiveIndex(this.realIndex || 0);\n            },\n            slideChange: function() {\n              setActiveIndex(this.realIndex || 0);\n            }\n          }\n        });\n        updateGallerySize();\n      }\n\n      if (swiperEl) {\n      swiperEl.addEventListener('click', function(event) {\n        var slide = event.target.closest('.gallery-slide');\n        if (!slide) return;\n        var index = parseInt(slide.getAttribute('data-gallery-index'), 10);\n        if (!isNaN(index)) {\n          showLightbox(index);\n        }\n      });\n      }\n\n      function onGalleryMediaLoad(event) {\n        var media = event.target;\n        if (!media.matches || !media.matches('.gallery-slide img, .gallery-slide video')) return;\n        if (mediaObserver) mediaObserver.observe(media);\n        updateSlideWidths();\n      }\n      \/\/ Capture loads from new loop slides too; cloned nodes do not retain\n      \/\/ listeners that were attached directly to the original media elements.\n      section.addEventListener('load', onGalleryMediaLoad, true);\n      section.addEventListener('loadedmetadata', onGalleryMediaLoad, true);\n\n      \/\/ Elementor controls and container resizing can change media dimensions\n      \/\/ without a window resize. Refresh caption widths after those changes too.\n      if (window.ResizeObserver) {\n        var sizeFrame = 0;\n        var mediaObserver = new ResizeObserver(function() {\n          window.cancelAnimationFrame(sizeFrame);\n          sizeFrame = window.requestAnimationFrame(function() {\n            if (!section.isConnected) {\n              mediaObserver.disconnect();\n              return;\n            }\n            updateSlideWidths();\n          });\n        });\n        section.querySelectorAll('.gallery-slide img, .gallery-slide video').forEach(function(media) {\n          mediaObserver.observe(media);\n        });\n      }\n\n      if (lightboxNext) lightboxNext.addEventListener('click', showNextLightbox);\n      if (lightboxPrev) lightboxPrev.addEventListener('click', showPrevLightbox);\n      if (galleryNext) galleryNext.addEventListener('click', showNextGallerySlide);\n      if (galleryPrev) galleryPrev.addEventListener('click', showPrevGallerySlide);\n      if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n      if (lightboxImage) lightboxImage.addEventListener('load', updateLightboxMetaWidth);\n      if (lightboxVideo) lightboxVideo.addEventListener('loadedmetadata', updateLightboxMetaWidth);\n      if (lightboxMeta) {\n        lightboxMeta.addEventListener('wheel', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n\n        lightboxMeta.addEventListener('touchmove', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n      }\n      if (lightbox) lightbox.addEventListener('click', function(event) {\n        if (event.target === lightbox) closeLightbox();\n      });\n\n      document.addEventListener('keydown', function(event) {\n        if (!lightbox || !lightbox.classList.contains(\"is-open\")) return;\n        if (event.key === \"Escape\" && lightbox.classList.contains(\"is-open\")) closeLightbox();\n        if (event.key === \"ArrowRight\" && lightbox.classList.contains(\"is-open\")) showNextLightbox();\n        if (event.key === \"ArrowLeft\" && lightbox.classList.contains(\"is-open\")) showPrevLightbox();\n      });\n\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initGallerySwiper);\n      } else {\n        initGallerySwiper();\n      }\n\n      window.addEventListener('load', initGallerySwiper);\n      window.addEventListener('load', updateSlideWidths);\n      window.addEventListener('resize', function() {\n        updateSlideWidths();\n        updateLightboxMetaWidth();\n      });\n    })();\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-36d8a37 e-flex e-con-boxed e-con e-parent\" data-id=\"36d8a37\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ebf5f58 elementor-widget elementor-widget-n-accordion\" data-id=\"ebf5f58\" data-element_type=\"widget\" data-settings=\"{&quot;default_state&quot;:&quot;all_collapsed&quot;,&quot;max_items_expended&quot;:&quot;one&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:400,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-accordion.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-accordion\" aria-label=\"Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys\">\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2470\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"1\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2470\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><h3 class=\"e-n-accordion-item-title-text\"> \u904e\u5f80\u6d3b\u52d5 <\/h3><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M20 9.49579V10.4958H0V9.49579H20Z\" fill=\"#211650\"><\/path><path d=\"M10.504 20H9.50403L9.50403 0L10.504 4.37114e-08L10.504 20Z\" fill=\"#211650\"><\/path><\/svg><\/span>\n\t\t\t<span class='e-closed'><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M20 9.49579V10.4958H0V9.49579H20Z\" fill=\"#211650\"><\/path><path d=\"M10.504 20H9.50403L9.50403 0L10.504 4.37114e-08L10.504 20Z\" fill=\"#211650\"><\/path><\/svg><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-767c1fe e-con-full e-flex e-con e-child\" data-id=\"767c1fe\" data-element_type=\"container\">\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-315b733 e-con-full e-flex e-con e-child\" data-id=\"315b733\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-869b809 elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"869b809\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2023-24 \u85dd\u8853\u6b23\u8cde\u9ad4\u9a57\u8a08\u5283<\/h2>\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-bdcd579 e-con-full e-flex e-con e-child\" data-id=\"bdcd579\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-672cc50 gotham-regular elementor-widget elementor-widget-text-editor\" data-id=\"672cc50\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>6\u6708\u81f310\u6708\u671f\u9593\uff0c\u7d04250\u540d\u4f86\u81ea9\u9593\u672c\u5730\u4e2d\u5b78\u7684\u57fa\u5c64\u521d\u4e2d\u751f\u53c3\u8207\u4e86\u6e2f\u82ad\u5728\u6821\u8209\u8fa6\u7684\u300a\u80e1\u6843\u593e\u5b50\u2014\u2014\u9999\u6e2f\u8056\u8a95\u4e4b\u65c5\u300b\u5de5\u4f5c\u574a\u3002\u5b78\u751f\u4e0d\u50c5\u8a8d\u8b58\u4e86\u821e\u5287\u5145\u6eff\u9999\u6e2f\u5143\u7d20\u7684\u670d\u88dd\u3001\u4f48\u666f\u53ca\u7d93\u5178\u89d2\u8272\uff0c\u9084\u89aa\u8eab\u9ad4\u9a57\u82ad\u857e\u821e\u88d9\u548c\u8db3\u5c16\u978b\uff0c\u4e26\u5b78\u7fd2\u5982\u4f55\u904b\u7528\u57fa\u672c\u82ad\u857e\u821e\u52d5\u4f5c\u548c\u9ed8\u5287\u624b\u52e2\uff0c\u8868\u9054\u60c5\u611f\u548c\u6545\u4e8b\u60c5\u7bc0\u3002<br\/>\u611f\u8b1d\u5927\u7063\u5340\u5171\u540c\u5bb6\u5712\u9752\u5e74\u516c\u76ca\u57fa\u91d1\u8207\u5fb7\u5929\u793e\u6703\u4f01\u696d\u9080\u8acb\u6e2f\u82ad\u53c3\u8207\u300c\u85dd\u8853\u6b23\u8cde\u9ad4\u9a57\u8a08\u5283\u300d\uff0c\u8b93\u66f4\u591a\u57fa\u5c64\u521d\u4e2d\u751f\u6709\u5b78\u7fd2\u82ad\u857e\u821e\u7684\u6a5f\u6703\u3002\u5f88\u69ae\u5e78\u900f\u904e\u9019\u500b\u5145\u6eff\u610f\u7fa9\u7684\u8a08\u5283\u5e6b\u52a9\u57f9\u990a\u5b78\u751f\u5c0d\u82ad\u857e\u821e\u7684\u6b23\u8cde\uff0c\u5e0c\u671b\u9019\u6bb5\u7f8e\u597d\u56de\u61b6\u80fd\u7559\u5b58\u4ed6\u5011\u5fc3\u4e2d\uff01  <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9dd7744 elementor-widget elementor-widget-hkb_gallery\" data-id=\"9dd7744\" data-element_type=\"widget\" data-widget_type=\"hkb_gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section id=\"gallery-widget-9dd7744\" class=\"gallery-section gallery-section--active-caption\" style=\"--gallery-slide-height-desktop:var(--hkb-gallery-image-height,70vh);--gallery-slide-height-mobile:var(--hkb-gallery-image-height,30vh);\">\n  <style>\n    \/* Caption width follows its rendered image, including mobile theme overrides. *\/\n    #gallery-widget-9dd7744 .gallery-slide__text {\n      width: var(--gallery-slide-image-width, 100%) !important;\n      max-width: var(--gallery-slide-image-width, 100%) !important;\n      min-width: 0 !important;\n      box-sizing: border-box !important;\n      white-space: normal !important;\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n  <\/style>\n        <div class=\"gallery-viewport\">\n    <div class=\"gallery-swiper swiper\">\n      <div class=\"swiper-wrapper\">\n                                                          <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395939647_926593245493824_4311695253418213419_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395939647_926593245493824_4311695253418213419_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395864904_926593265493822_5680373894514880716_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395864904_926593265493822_5680373894514880716_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395793161_926593292160486_9137691068028357314_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395793161_926593292160486_9137691068028357314_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395771797_926593168827165_9089191726655395207_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395771797_926593168827165_9089191726655395207_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"4\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395757656_926593175493831_660961020180775459_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/395757656_926593175493831_660961020180775459_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"5\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/394024890_926593202160495_4389426064010254656_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/394024890_926593202160495_4389426064010254656_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"6\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/396477011_926593255493823_6531396897176817029_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/396477011_926593255493823_6531396897176817029_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"7\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/396394964_926593228827159_4830330335680657010_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/396394964_926593228827159_4830330335680657010_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"8\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/396392098_926593218827160_3784450612262234534_n.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/09\/396392098_926593218827160_3784450612262234534_n.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                    <\/div>\n    <\/div>\n\n        <div class=\"gallery-nav hidden-xs\">\n      <button class=\"gallery-btn custom-button-btn gallery-prev\" aria-label=\"\u4e0a\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/left_icon.svg\" alt=\"\">\n      <\/button>\n      <button class=\"gallery-btn custom-button-btn gallery-next\" aria-label=\"\u4e0b\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/right_icon.svg\" alt=\"\">\n      <\/button>\n    <\/div>\n      <\/div>\n\n  <div class=\"gallery-footer\">\n    <span class=\"gallery-credit\"><\/span>\n\n  <\/div>\n\n    <div class=\"gallery-dot-wrap hidden-sm\" aria-label=\"\u5716\u7247\u5c0e\u89bd\"><\/div>\n  \n  <div class=\"gallery-lightbox\" aria-hidden=\"true\">\n    <div class=\"gallery-lightbox__panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5716\u7247\u9810\u89bd\">\n      <button class=\"gallery-lightbox__close\" type=\"button\" aria-label=\"\u95dc\u9589\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M15.9939 15.2322L15.2323 15.9938L0.000153744 0.761608L0.761762 0L15.9939 15.2322Z\" fill=\"white\" \/>\n          <path d=\"M0.761608 16L0 15.2384L15.2322 0.00623141L15.9938 0.76784L0.761608 16Z\" fill=\"white\" \/>\n        <\/svg>\n      <\/button>\n      <div class=\"gallery-lightbox__panel_content\">\n        <img class=\"gallery-lightbox__image\" alt=\"\u5716\u7247\" \/>\n        <video class=\"gallery-lightbox__video\" controls playsinline preload=\"metadata\" style=\"display:none;\"><\/video>\n        <div class=\"gallery-lightbox__meta\" data-lenis-prevent>\n          <div class=\"gallery-lightbox__meta-inner\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-lightbox__controls\">\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-prev\" type=\"button\" aria-label=\"\u4e0a\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-9dd7744-clip-prev)\">\n              <path d=\"M20.4199 9.33594L20.4199 10.6689L0.419922 10.6689L0.419922 9.33594L20.4199 9.33594Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 9.25334C4.13214 9.73162 7.33323 12.3276 9.14516 16.5683L8.07531 17.3649C6.41054 13.4686 3.49103 11.1339 0.405437 10.7067L0.677548 9.25334Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 10.7467C4.13214 10.2684 7.33323 7.67236 9.14516 3.4317L8.07531 2.63514C6.41054 6.53138 3.49103 8.86608 0.405437 9.29327L0.677548 10.7467Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-9dd7744-clip-prev\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n        <div class=\"gallery-lightbox__progress-wrap\" aria-hidden=\"true\">\n          <span><\/span>\n        <\/div>\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-next\" type=\"button\" aria-label=\"\u4e0b\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-9dd7744-clip-next)\">\n              <path d=\"M0 10.6641V9.33105L20 9.33105V10.6641L0 10.6641Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 10.7467C16.2878 10.2684 13.0867 7.67237 11.2748 3.4317L12.3446 2.63514C14.0094 6.53138 16.9289 8.86608 20.0145 9.29327L19.7424 10.7467Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 9.25334C16.2878 9.73163 13.0867 12.3276 11.2748 16.5683L12.3446 17.3649C14.0094 13.4686 16.9289 11.1339 20.0145 10.7067L19.7424 9.25334Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-9dd7744-clip-next\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function() {\n      var section = document.currentScript && document.currentScript.closest('.gallery-section');\n      if (!section) section = document.getElementById(\"gallery-widget-9dd7744\");\n      if (!section) return;\n      var gallerySwiper = null;\n      var slides = [];\n      var slideCount = 0;\n      var carouselSlideCount = 0;\n      var currentIndex = 0;\n      var captionFrame = 0;\n      var isSingle = false;\n      \/\/ Ordered list (smallest device first) of\n      \/\/ { name, mode:'auto'|'custom'|'height', spv, height, media, min }, or null.\n      \/\/ The ranges come from the site's active Elementor breakpoints, so the\n      \/\/ same media query decides here and in the CSS block above.\n      var slidesConfig = null;\n      var swiperEl = section.querySelector(\".gallery-swiper\");\n\n      \/\/ The device entry matching the current viewport.\n      function currentConf() {\n        if (!slidesConfig || !slidesConfig.length) return null;\n        for (var i = 0; i < slidesConfig.length; i++) {\n          if (window.matchMedia(slidesConfig[i].media).matches) {\n            return slidesConfig[i];\n          }\n        }\n        return slidesConfig[slidesConfig.length - 1];\n      }\n\n      \/\/ Pixel-height mode uses proportional widths, independent of card counts.\n      function isCustomMode() {\n        var conf = currentConf();\n        return !!(conf && conf.mode === 'custom');\n      }\n\n      \/\/ Swiper breakpoint entry for one device.\n      function bpConf(conf) {\n        if (conf && conf.mode === 'custom') {\n          return { slidesPerView: conf.spv, spaceBetween: 4 };\n        }\n        return { slidesPerView: 'auto', spaceBetween: 4 };\n      }\n      var dotWrap = section.querySelector(\".gallery-dot-wrap\");\n      var credit = section.querySelector(\".gallery-credit\");\n      var creditTimer = 0;\n      var lightbox = section.querySelector(\".gallery-lightbox\");\n      var lightboxClose = section.querySelector(\".gallery-lightbox__close\");\n      var lightboxImage = section.querySelector(\".gallery-lightbox__image\");\n      var lightboxVideo = section.querySelector(\".gallery-lightbox__video\");\n      var lightboxMeta = section.querySelector(\".gallery-lightbox__meta\");\n      var lightboxMetaInner = section.querySelector(\".gallery-lightbox__meta-inner\");\n      var lightboxProgress = section.querySelector(\".gallery-lightbox__progress-wrap span\");\n      var lightboxPrev = section.querySelector(\".gallery-lightbox-prev\");\n      var lightboxNext = section.querySelector(\".gallery-lightbox-next\");\n      var galleryPrev = section.querySelector(\".gallery-prev\");\n      var galleryNext = section.querySelector(\".gallery-next\");\n      var activeLightboxIndex = 0;\n\n      function syncSlides() {\n        slides = Array.prototype.slice.call(section.querySelectorAll('.gallery-slide[data-gallery-original=\"1\"]'));\n        slideCount = slides.length;\n        carouselSlideCount = section.querySelectorAll(\".gallery-slide\").length;\n      }\n\n      function getSlideMedia(slide) {\n        return slide ? slide.querySelector(\"img, video\") : null;\n      }\n\n      function getLightboxMedia() {\n        if (lightboxVideo && lightboxVideo.style.display !== \"none\") {\n          return lightboxVideo;\n        }\n        return lightboxImage;\n      }\n\n      function stopLightboxVideo() {\n        if (!lightboxVideo) return;\n        lightboxVideo.pause();\n        lightboxVideo.removeAttribute(\"src\");\n        lightboxVideo.load();\n      }\n\n      function updateCaptionWidths() {\n        section.querySelectorAll('.gallery-slide').forEach(function(slide) {\n          var caption = slide.querySelector('.gallery-slide__text');\n          var image = getSlideMedia(slide);\n          if (!caption || !image) return;\n          var width = image.getBoundingClientRect().width;\n          if (width > 0) {\n            \/\/ Keep this value on the caption itself so fixed-card widths are\n            \/\/ measured after Swiper has finished sizing the slide.\n            caption.style.setProperty('--gallery-slide-image-width', width + 'px');\n          }\n        });\n      }\n\n      function updateGallerySize() {\n        if (gallerySwiper) gallerySwiper.update();\n        updateCaptionWidths();\n        if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n          gallerySwiper.updateAutoHeight(0);\n        }\n        scheduleCaptionWidths();\n      }\n\n      function scheduleCaptionWidths() {\n        window.cancelAnimationFrame(captionFrame);\n        captionFrame = window.requestAnimationFrame(function() {\n          if (!section.isConnected) return;\n          updateCaptionWidths();\n          if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n            gallerySwiper.updateAutoHeight(0);\n          }\n        });\n      }\n\n      function updateSlideWidths() {\n        if (isSingle) {\n          updateCaptionWidths();\n          return;\n        }\n        \/\/ Custom mode: Swiper computes slide widths from slidesPerView, so clear\n        \/\/ any inline widths a previous 'auto' breakpoint may have set and let\n        \/\/ Swiper size the slides.\n        if (isCustomMode()) {\n          Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\")).forEach(function(slide) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n          });\n          updateGallerySize();\n          return;\n        }\n\n        var isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n        var conf = currentConf();\n        var hasPixelHeight = !!(conf && conf.mode === 'height');\n        var gallerySlides = Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\"));\n\n        gallerySlides.forEach(function(slide) {\n          var image = getSlideMedia(slide);\n\n          if ((isMobile && !hasPixelHeight) || !image) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n            return;\n          }\n\n          var imageWidth = image.getBoundingClientRect().width;\n          if (imageWidth > 0) {\n            slide.style.width = imageWidth + \"px\";\n            slide.style.setProperty(\"--gallery-slide-image-width\", imageWidth + \"px\");\n          }\n        });\n\n        updateGallerySize();\n      }\n\n      \/\/ Captions come from a rich-text field and may carry <br\/>. Escaping the\n      \/\/ whole string first, then re-enabling only the line breaks, keeps the\n      \/\/ markup out of the visible text without opening an HTML injection hole.\n      function setCaptionHtml(el, raw) {\n        el.textContent = raw;\n        if (el.innerHTML.indexOf(\"&lt;br\") !== -1) {\n          el.innerHTML = el.innerHTML.replace(\/&lt;br\\s*\\\/?&gt;\/gi, \"<br>\");\n        }\n      }\n\n      function updateCredit(index) {\n        if (!credit || !slides[index]) return;\n        var text = slides[index].getAttribute(\"data-credit\") || \"\";\n        window.clearTimeout(creditTimer);\n        credit.classList.add(\"is-transitioning\");\n        creditTimer = window.setTimeout(function() {\n          setCaptionHtml(credit, text);\n          credit.classList.remove(\"is-transitioning\");\n        }, 60);\n      }\n\n      function updateLightboxMetaWidth() {\n        var media = getLightboxMedia();\n        if (!lightbox || !media) return;\n        var imageWidth = media.getBoundingClientRect().width;\n        if (imageWidth > 0) {\n          lightbox.style.setProperty(\"--gallery-lightbox-image-width\", imageWidth + \"px\");\n        }\n      }\n\n      \/\/ Custom dots: slides are duplicated in the DOM to enable looping, so\n      \/\/ Swiper's built-in pagination would show one bullet per copy (e.g. 9\n      \/\/ dots for 3 images). Render one dot per original image instead.\n      function buildDots() {\n        if (!dotWrap) return;\n        dotWrap.innerHTML = \"\";\n        for (var i = 0; i < slideCount; i++) {\n          (function(target) {\n            var dot = document.createElement(\"button\");\n            dot.type = \"button\";\n            dot.className = \"swiper-pagination-bullet\";\n            dot.setAttribute(\"aria-label\", \"Go to slide \" + (target + 1));\n            dot.addEventListener(\"click\", function() {\n              if (gallerySwiper) gallerySwiper.slideToLoop(target);\n            });\n            dotWrap.appendChild(dot);\n          })(i);\n        }\n      }\n\n      function updateDots() {\n        if (!dotWrap) return;\n        var dots = dotWrap.children;\n        for (var i = 0; i < dots.length; i++) {\n          dots[i].classList.toggle(\"swiper-pagination-bullet-active\", i === currentIndex);\n        }\n      }\n\n      function setActiveIndex(index) {\n        if (!slideCount) return;\n        currentIndex = ((index % slideCount) + slideCount) % slideCount;\n        updateCredit(currentIndex);\n        updateDots();\n      }\n\n      function goToGalleryIndex(index) {\n        if (!gallerySwiper || !slideCount) return;\n        var targetIndex = ((index % slideCount) + slideCount) % slideCount;\n        if (typeof gallerySwiper.slideToLoop === \"function\") {\n          gallerySwiper.slideToLoop(targetIndex);\n        } else {\n          gallerySwiper.slideTo(targetIndex);\n        }\n        setActiveIndex(targetIndex);\n      }\n\n      function showNextGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex + 1);\n      }\n\n      function showPrevGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex - 1);\n      }\n\n      function openLightbox(index) {\n        activeLightboxIndex = index;\n        var slide = slides[index];\n        if (!slide || !lightbox || !lightboxImage || !lightboxMeta || !lightboxProgress) return;\n        var mediaType = slide.getAttribute(\"data-media-type\") || \"image\";\n        var mediaUrl = slide.getAttribute(\"data-media-url\") || \"\";\n        var mediaAlt = slide.getAttribute(\"data-media-alt\") || \"Gallery image\";\n        stopLightboxVideo();\n        if (mediaType === \"video\" && lightboxVideo) {\n          lightboxImage.style.display = \"none\";\n          lightboxImage.removeAttribute(\"src\");\n          lightboxVideo.style.display = \"\";\n          lightboxVideo.src = mediaUrl;\n          lightboxVideo.load();\n        } else {\n          lightboxImage.style.display = \"\";\n          if (lightboxVideo) lightboxVideo.style.display = \"none\";\n          lightboxImage.src = mediaUrl;\n          lightboxImage.alt = mediaAlt;\n        }\n        setCaptionHtml(lightboxMetaInner || lightboxMeta, slide.getAttribute(\"data-credit\") || \"\");\n        lightboxProgress.style.width = ((index + 1) \/ slideCount) * 100 + \"%\";\n        lightbox.classList.add(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"false\");\n        if (mediaType !== \"video\" && lightboxImage.complete) {\n          updateLightboxMetaWidth();\n        }\n        window.requestAnimationFrame(updateLightboxMetaWidth);\n        document.documentElement.style.overflow = \"hidden\";\n        document.body.style.overflow = \"hidden\";\n      }\n\n      function closeLightbox() {\n        if (!lightbox) return;\n        lightbox.classList.remove(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"true\");\n        stopLightboxVideo();\n        document.documentElement.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      }\n\n      function showLightbox(index) {\n        if (!slideCount) return;\n        var nextIndex = ((index % slideCount) + slideCount) % slideCount;\n        openLightbox(nextIndex);\n      }\n\n      function showNextLightbox() {\n        showLightbox(activeLightboxIndex + 1);\n      }\n\n      function showPrevLightbox() {\n        showLightbox(activeLightboxIndex - 1);\n      }\n\n      function initGallerySwiper() {\n        if (!swiperEl || gallerySwiper) return;\n        syncSlides();\n        if (!slideCount) return;\n        if (isSingle) {\n          updateSlideWidths();\n          setActiveIndex(0);\n          return;\n        }\n        if (typeof Swiper === 'undefined') return;\n        buildDots();\n        updateSlideWidths();\n\n        \/\/ One Swiper breakpoint per active Elementor device, keyed by its\n        \/\/ min-width. Each device is auto or custom independently.\n        var breakpoints;\n        if (slidesConfig) {\n          breakpoints = {};\n          slidesConfig.forEach(function(conf) {\n            breakpoints[conf.min] = bpConf(conf);\n          });\n        } else {\n          breakpoints = {\n            0: {\n              slidesPerView: 1,\n              spaceBetween: 4,\n            },\n            769: {\n              slidesPerView: 'auto',\n              spaceBetween: 4,\n            },\n          };\n        }\n\n        gallerySwiper = new Swiper(swiperEl, {\n          slidesPerView: slidesConfig ? bpConf(currentConf()).slidesPerView : (window.innerWidth <= 768 ? 1 : 'auto'),\n          spaceBetween: 20,\n          autoHeight: true,\n          rewind: true,\n          loop: carouselSlideCount > 1,\n          loopAdditionalSlides: carouselSlideCount,\n          loopedSlides: carouselSlideCount,\n          watchOverflow: false,\n          breakpoints: breakpoints,\n          on: {\n            breakpoint: scheduleCaptionWidths,\n            loopFix: scheduleCaptionWidths,\n            resize: scheduleCaptionWidths,\n            init: function() {\n              updateSlideWidths();\n              setActiveIndex(this.realIndex || 0);\n            },\n            slideChange: function() {\n              setActiveIndex(this.realIndex || 0);\n            }\n          }\n        });\n        updateGallerySize();\n      }\n\n      if (swiperEl) {\n      swiperEl.addEventListener('click', function(event) {\n        var slide = event.target.closest('.gallery-slide');\n        if (!slide) return;\n        var index = parseInt(slide.getAttribute('data-gallery-index'), 10);\n        if (!isNaN(index)) {\n          showLightbox(index);\n        }\n      });\n      }\n\n      function onGalleryMediaLoad(event) {\n        var media = event.target;\n        if (!media.matches || !media.matches('.gallery-slide img, .gallery-slide video')) return;\n        if (mediaObserver) mediaObserver.observe(media);\n        updateSlideWidths();\n      }\n      \/\/ Capture loads from new loop slides too; cloned nodes do not retain\n      \/\/ listeners that were attached directly to the original media elements.\n      section.addEventListener('load', onGalleryMediaLoad, true);\n      section.addEventListener('loadedmetadata', onGalleryMediaLoad, true);\n\n      \/\/ Elementor controls and container resizing can change media dimensions\n      \/\/ without a window resize. Refresh caption widths after those changes too.\n      if (window.ResizeObserver) {\n        var sizeFrame = 0;\n        var mediaObserver = new ResizeObserver(function() {\n          window.cancelAnimationFrame(sizeFrame);\n          sizeFrame = window.requestAnimationFrame(function() {\n            if (!section.isConnected) {\n              mediaObserver.disconnect();\n              return;\n            }\n            updateSlideWidths();\n          });\n        });\n        section.querySelectorAll('.gallery-slide img, .gallery-slide video').forEach(function(media) {\n          mediaObserver.observe(media);\n        });\n      }\n\n      if (lightboxNext) lightboxNext.addEventListener('click', showNextLightbox);\n      if (lightboxPrev) lightboxPrev.addEventListener('click', showPrevLightbox);\n      if (galleryNext) galleryNext.addEventListener('click', showNextGallerySlide);\n      if (galleryPrev) galleryPrev.addEventListener('click', showPrevGallerySlide);\n      if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n      if (lightboxImage) lightboxImage.addEventListener('load', updateLightboxMetaWidth);\n      if (lightboxVideo) lightboxVideo.addEventListener('loadedmetadata', updateLightboxMetaWidth);\n      if (lightboxMeta) {\n        lightboxMeta.addEventListener('wheel', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n\n        lightboxMeta.addEventListener('touchmove', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n      }\n      if (lightbox) lightbox.addEventListener('click', function(event) {\n        if (event.target === lightbox) closeLightbox();\n      });\n\n      document.addEventListener('keydown', function(event) {\n        if (!lightbox || !lightbox.classList.contains(\"is-open\")) return;\n        if (event.key === \"Escape\" && lightbox.classList.contains(\"is-open\")) closeLightbox();\n        if (event.key === \"ArrowRight\" && lightbox.classList.contains(\"is-open\")) showNextLightbox();\n        if (event.key === \"ArrowLeft\" && lightbox.classList.contains(\"is-open\")) showPrevLightbox();\n      });\n\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initGallerySwiper);\n      } else {\n        initGallerySwiper();\n      }\n\n      window.addEventListener('load', initGallerySwiper);\n      window.addEventListener('load', updateSlideWidths);\n      window.addEventListener('resize', function() {\n        updateSlideWidths();\n        updateLightboxMetaWidth();\n      });\n    })();\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-b914ccc e-con-full e-flex e-con e-child\" data-id=\"b914ccc\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-64c8672 elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"64c8672\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2022 \u5b78\u6821\u82ad\u857e\u5de5\u4f5c\u574a\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15f8276 gotham-regular elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"15f8276\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>\u60f3\u5728\u5b78\u6821\u76e1\u5fc3\u5730\u5b78\u3001\u76e1\u8208\u5730\u73a9\uff1f\u4ee5\u4fc4\u7f85\u65af\u70ba\u4e3b\u984c\u7684\u5b78\u6821\u82ad\u857e\u5de5\u4f5c\u574a\uff0c\u4e0d\u4f46\u8b93\u4e2d\u5b78\u751f\u4e86\u89e3\u4fc4\u7f85\u65af\u5728\u82ad\u857e\u6b77\u53f2\u7684\u5730\u4f4d\uff0c\u66f4\u53ef\u8b93\u5b78\u751f\u6109\u5feb\u5730\u6b23\u8cde\u5145\u6eff\u4fc4\u7f85\u65af\u7279\u8272\u7684\u670d\u88dd\uff0c\u4e26\u5b78\u7fd2\u878d\u5408\u4fc4\u7f85\u65af\u98a8\u683c\u7684\u82ad\u857e\u821e\u6b65\u3002\u5982\u6b64\u8c50\u5bcc\u591a\u5f69\u7684\u6d3b\u52d5\uff0c\u300cVo dayot \uff08\u0432\u043e \u0434\u0430\u0451\u0442\uff0c\u771f\u68d2\uff09\u300d\uff01   <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-afa8f12 elementor-widget elementor-widget-image\" data-id=\"afa8f12\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1920\" height=\"1440\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A.jpg\" class=\"elementor-animation-grow attachment-full size-full wp-image-35169\" alt=\"\" srcset=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A.jpg 1920w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A-300x225.jpg 300w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A-1024x768.jpg 1024w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A-768x576.jpg 768w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A-1536x1152.jpg 1536w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/yt5nL8cT6A-600x450.jpg 600w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-6ba337e e-con-full e-flex e-con e-child\" data-id=\"6ba337e\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-000155c elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"000155c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2019\u300a\u7761\u7f8e\u4eba\u300b\u5b78\u6821\u6559\u80b2\u8b1b\u5ea7\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5552a48 elementor-widget elementor-widget-hkb_gallery\" data-id=\"5552a48\" data-element_type=\"widget\" data-widget_type=\"hkb_gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section id=\"gallery-widget-5552a48\" class=\"gallery-section gallery-section--active-caption\" style=\"--gallery-slide-height-desktop:var(--hkb-gallery-image-height,70vh);--gallery-slide-height-mobile:var(--hkb-gallery-image-height,30vh);\">\n  <style>\n    \/* Caption width follows its rendered image, including mobile theme overrides. *\/\n    #gallery-widget-5552a48 .gallery-slide__text {\n      width: var(--gallery-slide-image-width, 100%) !important;\n      max-width: var(--gallery-slide-image-width, 100%) !important;\n      min-width: 0 !important;\n      box-sizing: border-box !important;\n      white-space: normal !important;\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n  <\/style>\n    <style>\n        #gallery-widget-5552a48 { --gallery-aspect-ratio: 16 \/ 9; }\n                        @media (max-width: 393px) {\n      #gallery-widget-5552a48 .gallery-slide__media { width: 100%; }\n      #gallery-widget-5552a48 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-5552a48 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide img,\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 394px) and (max-width: 767px) {\n      #gallery-widget-5552a48 .gallery-slide__media { width: 100%; }\n      #gallery-widget-5552a48 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-5552a48 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide img,\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 768px) and (max-width: 1279px) {\n      #gallery-widget-5552a48 .gallery-slide__media { width: 100%; }\n      #gallery-widget-5552a48 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-5552a48 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide img,\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1280px) and (max-width: 1439px) {\n      #gallery-widget-5552a48 .gallery-slide__media { width: 100%; }\n      #gallery-widget-5552a48 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-5552a48 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide img,\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1440px) {\n      #gallery-widget-5552a48 .gallery-slide__media { width: 100%; }\n      #gallery-widget-5552a48 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-5552a48 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide img,\n      #gallery-widget-5552a48 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n      <\/style>\n        <div class=\"gallery-viewport\">\n    <div class=\"gallery-swiper swiper\">\n      <div class=\"swiper-wrapper\">\n                                                          <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/1v2o8bTiUx.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/1v2o8bTiUx.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/BFzwRfN5Wn.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/BFzwRfN5Wn.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/D6lQc198AR.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/D6lQc198AR.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/gFdWpnoBHr.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/gFdWpnoBHr.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"4\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ijR4h3Z6f2.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ijR4h3Z6f2.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"5\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/MK60ZTEsuD.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/MK60ZTEsuD.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"6\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/PQzbEdrpUy.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/PQzbEdrpUy.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"7\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/tBJkUecPhD.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/tBJkUecPhD.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"8\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/vZF7npRm8t.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/vZF7npRm8t.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"9\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/82OQFZryci.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/82OQFZryci.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                    <\/div>\n    <\/div>\n\n        <div class=\"gallery-nav hidden-xs\">\n      <button class=\"gallery-btn custom-button-btn gallery-prev\" aria-label=\"\u4e0a\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/left_icon.svg\" alt=\"\">\n      <\/button>\n      <button class=\"gallery-btn custom-button-btn gallery-next\" aria-label=\"\u4e0b\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/right_icon.svg\" alt=\"\">\n      <\/button>\n    <\/div>\n      <\/div>\n\n  <div class=\"gallery-footer\">\n    <span class=\"gallery-credit\"><\/span>\n\n  <\/div>\n\n    <div class=\"gallery-dot-wrap hidden-sm\" aria-label=\"\u5716\u7247\u5c0e\u89bd\"><\/div>\n  \n  <div class=\"gallery-lightbox\" aria-hidden=\"true\">\n    <div class=\"gallery-lightbox__panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5716\u7247\u9810\u89bd\">\n      <button class=\"gallery-lightbox__close\" type=\"button\" aria-label=\"\u95dc\u9589\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M15.9939 15.2322L15.2323 15.9938L0.000153744 0.761608L0.761762 0L15.9939 15.2322Z\" fill=\"white\" \/>\n          <path d=\"M0.761608 16L0 15.2384L15.2322 0.00623141L15.9938 0.76784L0.761608 16Z\" fill=\"white\" \/>\n        <\/svg>\n      <\/button>\n      <div class=\"gallery-lightbox__panel_content\">\n        <img class=\"gallery-lightbox__image\" alt=\"\u5716\u7247\" \/>\n        <video class=\"gallery-lightbox__video\" controls playsinline preload=\"metadata\" style=\"display:none;\"><\/video>\n        <div class=\"gallery-lightbox__meta\" data-lenis-prevent>\n          <div class=\"gallery-lightbox__meta-inner\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-lightbox__controls\">\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-prev\" type=\"button\" aria-label=\"\u4e0a\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-5552a48-clip-prev)\">\n              <path d=\"M20.4199 9.33594L20.4199 10.6689L0.419922 10.6689L0.419922 9.33594L20.4199 9.33594Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 9.25334C4.13214 9.73162 7.33323 12.3276 9.14516 16.5683L8.07531 17.3649C6.41054 13.4686 3.49103 11.1339 0.405437 10.7067L0.677548 9.25334Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 10.7467C4.13214 10.2684 7.33323 7.67236 9.14516 3.4317L8.07531 2.63514C6.41054 6.53138 3.49103 8.86608 0.405437 9.29327L0.677548 10.7467Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-5552a48-clip-prev\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n        <div class=\"gallery-lightbox__progress-wrap\" aria-hidden=\"true\">\n          <span><\/span>\n        <\/div>\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-next\" type=\"button\" aria-label=\"\u4e0b\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-5552a48-clip-next)\">\n              <path d=\"M0 10.6641V9.33105L20 9.33105V10.6641L0 10.6641Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 10.7467C16.2878 10.2684 13.0867 7.67237 11.2748 3.4317L12.3446 2.63514C14.0094 6.53138 16.9289 8.86608 20.0145 9.29327L19.7424 10.7467Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 9.25334C16.2878 9.73163 13.0867 12.3276 11.2748 16.5683L12.3446 17.3649C14.0094 13.4686 16.9289 11.1339 20.0145 10.7067L19.7424 9.25334Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-5552a48-clip-next\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function() {\n      var section = document.currentScript && document.currentScript.closest('.gallery-section');\n      if (!section) section = document.getElementById(\"gallery-widget-5552a48\");\n      if (!section) return;\n      var gallerySwiper = null;\n      var slides = [];\n      var slideCount = 0;\n      var carouselSlideCount = 0;\n      var currentIndex = 0;\n      var captionFrame = 0;\n      var isSingle = false;\n      \/\/ Ordered list (smallest device first) of\n      \/\/ { name, mode:'auto'|'custom'|'height', spv, height, media, min }, or null.\n      \/\/ The ranges come from the site's active Elementor breakpoints, so the\n      \/\/ same media query decides here and in the CSS block above.\n      var slidesConfig = [{\"name\":\"mobile\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(max-width: 393px)\",\"min\":0},{\"name\":\"tablet\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 394px) and (max-width: 767px)\",\"min\":394},{\"name\":\"laptop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 768px) and (max-width: 1279px)\",\"min\":768},{\"name\":\"desktop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1280px) and (max-width: 1439px)\",\"min\":1280},{\"name\":\"widescreen\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1440px)\",\"min\":1440}];\n      var swiperEl = section.querySelector(\".gallery-swiper\");\n\n      \/\/ The device entry matching the current viewport.\n      function currentConf() {\n        if (!slidesConfig || !slidesConfig.length) return null;\n        for (var i = 0; i < slidesConfig.length; i++) {\n          if (window.matchMedia(slidesConfig[i].media).matches) {\n            return slidesConfig[i];\n          }\n        }\n        return slidesConfig[slidesConfig.length - 1];\n      }\n\n      \/\/ Pixel-height mode uses proportional widths, independent of card counts.\n      function isCustomMode() {\n        var conf = currentConf();\n        return !!(conf && conf.mode === 'custom');\n      }\n\n      \/\/ Swiper breakpoint entry for one device.\n      function bpConf(conf) {\n        if (conf && conf.mode === 'custom') {\n          return { slidesPerView: conf.spv, spaceBetween: 4 };\n        }\n        return { slidesPerView: 'auto', spaceBetween: 4 };\n      }\n      var dotWrap = section.querySelector(\".gallery-dot-wrap\");\n      var credit = section.querySelector(\".gallery-credit\");\n      var creditTimer = 0;\n      var lightbox = section.querySelector(\".gallery-lightbox\");\n      var lightboxClose = section.querySelector(\".gallery-lightbox__close\");\n      var lightboxImage = section.querySelector(\".gallery-lightbox__image\");\n      var lightboxVideo = section.querySelector(\".gallery-lightbox__video\");\n      var lightboxMeta = section.querySelector(\".gallery-lightbox__meta\");\n      var lightboxMetaInner = section.querySelector(\".gallery-lightbox__meta-inner\");\n      var lightboxProgress = section.querySelector(\".gallery-lightbox__progress-wrap span\");\n      var lightboxPrev = section.querySelector(\".gallery-lightbox-prev\");\n      var lightboxNext = section.querySelector(\".gallery-lightbox-next\");\n      var galleryPrev = section.querySelector(\".gallery-prev\");\n      var galleryNext = section.querySelector(\".gallery-next\");\n      var activeLightboxIndex = 0;\n\n      function syncSlides() {\n        slides = Array.prototype.slice.call(section.querySelectorAll('.gallery-slide[data-gallery-original=\"1\"]'));\n        slideCount = slides.length;\n        carouselSlideCount = section.querySelectorAll(\".gallery-slide\").length;\n      }\n\n      function getSlideMedia(slide) {\n        return slide ? slide.querySelector(\"img, video\") : null;\n      }\n\n      function getLightboxMedia() {\n        if (lightboxVideo && lightboxVideo.style.display !== \"none\") {\n          return lightboxVideo;\n        }\n        return lightboxImage;\n      }\n\n      function stopLightboxVideo() {\n        if (!lightboxVideo) return;\n        lightboxVideo.pause();\n        lightboxVideo.removeAttribute(\"src\");\n        lightboxVideo.load();\n      }\n\n      function updateCaptionWidths() {\n        section.querySelectorAll('.gallery-slide').forEach(function(slide) {\n          var caption = slide.querySelector('.gallery-slide__text');\n          var image = getSlideMedia(slide);\n          if (!caption || !image) return;\n          var width = image.getBoundingClientRect().width;\n          if (width > 0) {\n            \/\/ Keep this value on the caption itself so fixed-card widths are\n            \/\/ measured after Swiper has finished sizing the slide.\n            caption.style.setProperty('--gallery-slide-image-width', width + 'px');\n          }\n        });\n      }\n\n      function updateGallerySize() {\n        if (gallerySwiper) gallerySwiper.update();\n        updateCaptionWidths();\n        if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n          gallerySwiper.updateAutoHeight(0);\n        }\n        scheduleCaptionWidths();\n      }\n\n      function scheduleCaptionWidths() {\n        window.cancelAnimationFrame(captionFrame);\n        captionFrame = window.requestAnimationFrame(function() {\n          if (!section.isConnected) return;\n          updateCaptionWidths();\n          if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n            gallerySwiper.updateAutoHeight(0);\n          }\n        });\n      }\n\n      function updateSlideWidths() {\n        if (isSingle) {\n          updateCaptionWidths();\n          return;\n        }\n        \/\/ Custom mode: Swiper computes slide widths from slidesPerView, so clear\n        \/\/ any inline widths a previous 'auto' breakpoint may have set and let\n        \/\/ Swiper size the slides.\n        if (isCustomMode()) {\n          Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\")).forEach(function(slide) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n          });\n          updateGallerySize();\n          return;\n        }\n\n        var isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n        var conf = currentConf();\n        var hasPixelHeight = !!(conf && conf.mode === 'height');\n        var gallerySlides = Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\"));\n\n        gallerySlides.forEach(function(slide) {\n          var image = getSlideMedia(slide);\n\n          if ((isMobile && !hasPixelHeight) || !image) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n            return;\n          }\n\n          var imageWidth = image.getBoundingClientRect().width;\n          if (imageWidth > 0) {\n            slide.style.width = imageWidth + \"px\";\n            slide.style.setProperty(\"--gallery-slide-image-width\", imageWidth + \"px\");\n          }\n        });\n\n        updateGallerySize();\n      }\n\n      \/\/ Captions come from a rich-text field and may carry <br\/>. Escaping the\n      \/\/ whole string first, then re-enabling only the line breaks, keeps the\n      \/\/ markup out of the visible text without opening an HTML injection hole.\n      function setCaptionHtml(el, raw) {\n        el.textContent = raw;\n        if (el.innerHTML.indexOf(\"&lt;br\") !== -1) {\n          el.innerHTML = el.innerHTML.replace(\/&lt;br\\s*\\\/?&gt;\/gi, \"<br>\");\n        }\n      }\n\n      function updateCredit(index) {\n        if (!credit || !slides[index]) return;\n        var text = slides[index].getAttribute(\"data-credit\") || \"\";\n        window.clearTimeout(creditTimer);\n        credit.classList.add(\"is-transitioning\");\n        creditTimer = window.setTimeout(function() {\n          setCaptionHtml(credit, text);\n          credit.classList.remove(\"is-transitioning\");\n        }, 60);\n      }\n\n      function updateLightboxMetaWidth() {\n        var media = getLightboxMedia();\n        if (!lightbox || !media) return;\n        var imageWidth = media.getBoundingClientRect().width;\n        if (imageWidth > 0) {\n          lightbox.style.setProperty(\"--gallery-lightbox-image-width\", imageWidth + \"px\");\n        }\n      }\n\n      \/\/ Custom dots: slides are duplicated in the DOM to enable looping, so\n      \/\/ Swiper's built-in pagination would show one bullet per copy (e.g. 9\n      \/\/ dots for 3 images). Render one dot per original image instead.\n      function buildDots() {\n        if (!dotWrap) return;\n        dotWrap.innerHTML = \"\";\n        for (var i = 0; i < slideCount; i++) {\n          (function(target) {\n            var dot = document.createElement(\"button\");\n            dot.type = \"button\";\n            dot.className = \"swiper-pagination-bullet\";\n            dot.setAttribute(\"aria-label\", \"Go to slide \" + (target + 1));\n            dot.addEventListener(\"click\", function() {\n              if (gallerySwiper) gallerySwiper.slideToLoop(target);\n            });\n            dotWrap.appendChild(dot);\n          })(i);\n        }\n      }\n\n      function updateDots() {\n        if (!dotWrap) return;\n        var dots = dotWrap.children;\n        for (var i = 0; i < dots.length; i++) {\n          dots[i].classList.toggle(\"swiper-pagination-bullet-active\", i === currentIndex);\n        }\n      }\n\n      function setActiveIndex(index) {\n        if (!slideCount) return;\n        currentIndex = ((index % slideCount) + slideCount) % slideCount;\n        updateCredit(currentIndex);\n        updateDots();\n      }\n\n      function goToGalleryIndex(index) {\n        if (!gallerySwiper || !slideCount) return;\n        var targetIndex = ((index % slideCount) + slideCount) % slideCount;\n        if (typeof gallerySwiper.slideToLoop === \"function\") {\n          gallerySwiper.slideToLoop(targetIndex);\n        } else {\n          gallerySwiper.slideTo(targetIndex);\n        }\n        setActiveIndex(targetIndex);\n      }\n\n      function showNextGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex + 1);\n      }\n\n      function showPrevGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex - 1);\n      }\n\n      function openLightbox(index) {\n        activeLightboxIndex = index;\n        var slide = slides[index];\n        if (!slide || !lightbox || !lightboxImage || !lightboxMeta || !lightboxProgress) return;\n        var mediaType = slide.getAttribute(\"data-media-type\") || \"image\";\n        var mediaUrl = slide.getAttribute(\"data-media-url\") || \"\";\n        var mediaAlt = slide.getAttribute(\"data-media-alt\") || \"Gallery image\";\n        stopLightboxVideo();\n        if (mediaType === \"video\" && lightboxVideo) {\n          lightboxImage.style.display = \"none\";\n          lightboxImage.removeAttribute(\"src\");\n          lightboxVideo.style.display = \"\";\n          lightboxVideo.src = mediaUrl;\n          lightboxVideo.load();\n        } else {\n          lightboxImage.style.display = \"\";\n          if (lightboxVideo) lightboxVideo.style.display = \"none\";\n          lightboxImage.src = mediaUrl;\n          lightboxImage.alt = mediaAlt;\n        }\n        setCaptionHtml(lightboxMetaInner || lightboxMeta, slide.getAttribute(\"data-credit\") || \"\");\n        lightboxProgress.style.width = ((index + 1) \/ slideCount) * 100 + \"%\";\n        lightbox.classList.add(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"false\");\n        if (mediaType !== \"video\" && lightboxImage.complete) {\n          updateLightboxMetaWidth();\n        }\n        window.requestAnimationFrame(updateLightboxMetaWidth);\n        document.documentElement.style.overflow = \"hidden\";\n        document.body.style.overflow = \"hidden\";\n      }\n\n      function closeLightbox() {\n        if (!lightbox) return;\n        lightbox.classList.remove(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"true\");\n        stopLightboxVideo();\n        document.documentElement.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      }\n\n      function showLightbox(index) {\n        if (!slideCount) return;\n        var nextIndex = ((index % slideCount) + slideCount) % slideCount;\n        openLightbox(nextIndex);\n      }\n\n      function showNextLightbox() {\n        showLightbox(activeLightboxIndex + 1);\n      }\n\n      function showPrevLightbox() {\n        showLightbox(activeLightboxIndex - 1);\n      }\n\n      function initGallerySwiper() {\n        if (!swiperEl || gallerySwiper) return;\n        syncSlides();\n        if (!slideCount) return;\n        if (isSingle) {\n          updateSlideWidths();\n          setActiveIndex(0);\n          return;\n        }\n        if (typeof Swiper === 'undefined') return;\n        buildDots();\n        updateSlideWidths();\n\n        \/\/ One Swiper breakpoint per active Elementor device, keyed by its\n        \/\/ min-width. Each device is auto or custom independently.\n        var breakpoints;\n        if (slidesConfig) {\n          breakpoints = {};\n          slidesConfig.forEach(function(conf) {\n            breakpoints[conf.min] = bpConf(conf);\n          });\n        } else {\n          breakpoints = {\n            0: {\n              slidesPerView: 1,\n              spaceBetween: 4,\n            },\n            769: {\n              slidesPerView: 'auto',\n              spaceBetween: 4,\n            },\n          };\n        }\n\n        gallerySwiper = new Swiper(swiperEl, {\n          slidesPerView: slidesConfig ? bpConf(currentConf()).slidesPerView : (window.innerWidth <= 768 ? 1 : 'auto'),\n          spaceBetween: 20,\n          autoHeight: true,\n          rewind: true,\n          loop: carouselSlideCount > 1,\n          loopAdditionalSlides: carouselSlideCount,\n          loopedSlides: carouselSlideCount,\n          watchOverflow: false,\n          breakpoints: breakpoints,\n          on: {\n            breakpoint: scheduleCaptionWidths,\n            loopFix: scheduleCaptionWidths,\n            resize: scheduleCaptionWidths,\n            init: function() {\n              updateSlideWidths();\n              setActiveIndex(this.realIndex || 0);\n            },\n            slideChange: function() {\n              setActiveIndex(this.realIndex || 0);\n            }\n          }\n        });\n        updateGallerySize();\n      }\n\n      if (swiperEl) {\n      swiperEl.addEventListener('click', function(event) {\n        var slide = event.target.closest('.gallery-slide');\n        if (!slide) return;\n        var index = parseInt(slide.getAttribute('data-gallery-index'), 10);\n        if (!isNaN(index)) {\n          showLightbox(index);\n        }\n      });\n      }\n\n      function onGalleryMediaLoad(event) {\n        var media = event.target;\n        if (!media.matches || !media.matches('.gallery-slide img, .gallery-slide video')) return;\n        if (mediaObserver) mediaObserver.observe(media);\n        updateSlideWidths();\n      }\n      \/\/ Capture loads from new loop slides too; cloned nodes do not retain\n      \/\/ listeners that were attached directly to the original media elements.\n      section.addEventListener('load', onGalleryMediaLoad, true);\n      section.addEventListener('loadedmetadata', onGalleryMediaLoad, true);\n\n      \/\/ Elementor controls and container resizing can change media dimensions\n      \/\/ without a window resize. Refresh caption widths after those changes too.\n      if (window.ResizeObserver) {\n        var sizeFrame = 0;\n        var mediaObserver = new ResizeObserver(function() {\n          window.cancelAnimationFrame(sizeFrame);\n          sizeFrame = window.requestAnimationFrame(function() {\n            if (!section.isConnected) {\n              mediaObserver.disconnect();\n              return;\n            }\n            updateSlideWidths();\n          });\n        });\n        section.querySelectorAll('.gallery-slide img, .gallery-slide video').forEach(function(media) {\n          mediaObserver.observe(media);\n        });\n      }\n\n      if (lightboxNext) lightboxNext.addEventListener('click', showNextLightbox);\n      if (lightboxPrev) lightboxPrev.addEventListener('click', showPrevLightbox);\n      if (galleryNext) galleryNext.addEventListener('click', showNextGallerySlide);\n      if (galleryPrev) galleryPrev.addEventListener('click', showPrevGallerySlide);\n      if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n      if (lightboxImage) lightboxImage.addEventListener('load', updateLightboxMetaWidth);\n      if (lightboxVideo) lightboxVideo.addEventListener('loadedmetadata', updateLightboxMetaWidth);\n      if (lightboxMeta) {\n        lightboxMeta.addEventListener('wheel', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n\n        lightboxMeta.addEventListener('touchmove', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n      }\n      if (lightbox) lightbox.addEventListener('click', function(event) {\n        if (event.target === lightbox) closeLightbox();\n      });\n\n      document.addEventListener('keydown', function(event) {\n        if (!lightbox || !lightbox.classList.contains(\"is-open\")) return;\n        if (event.key === \"Escape\" && lightbox.classList.contains(\"is-open\")) closeLightbox();\n        if (event.key === \"ArrowRight\" && lightbox.classList.contains(\"is-open\")) showNextLightbox();\n        if (event.key === \"ArrowLeft\" && lightbox.classList.contains(\"is-open\")) showPrevLightbox();\n      });\n\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initGallerySwiper);\n      } else {\n        initGallerySwiper();\n      }\n\n      window.addEventListener('load', initGallerySwiper);\n      window.addEventListener('load', updateSlideWidths);\n      window.addEventListener('resize', function() {\n        updateSlideWidths();\n        updateLightboxMetaWidth();\n      });\n    })();\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-c470393 e-con-full e-flex e-con e-child\" data-id=\"c470393\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f0c7ab4 elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"f0c7ab4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2019\u300a\u5929\u9d5d\u6e56\u300b\u5b78\u6821\u6559\u80b2\u8b1b\u5ea7\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-93ae645 elementor-widget elementor-widget-hkb_gallery\" data-id=\"93ae645\" data-element_type=\"widget\" data-widget_type=\"hkb_gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section id=\"gallery-widget-93ae645\" class=\"gallery-section gallery-section--active-caption\" style=\"--gallery-slide-height-desktop:var(--hkb-gallery-image-height,70vh);--gallery-slide-height-mobile:var(--hkb-gallery-image-height,30vh);\">\n  <style>\n    \/* Caption width follows its rendered image, including mobile theme overrides. *\/\n    #gallery-widget-93ae645 .gallery-slide__text {\n      width: var(--gallery-slide-image-width, 100%) !important;\n      max-width: var(--gallery-slide-image-width, 100%) !important;\n      min-width: 0 !important;\n      box-sizing: border-box !important;\n      white-space: normal !important;\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n  <\/style>\n    <style>\n        #gallery-widget-93ae645 { --gallery-aspect-ratio: 16 \/ 9; }\n                        @media (max-width: 393px) {\n      #gallery-widget-93ae645 .gallery-slide__media { width: 100%; }\n      #gallery-widget-93ae645 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-93ae645 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide img,\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 394px) and (max-width: 767px) {\n      #gallery-widget-93ae645 .gallery-slide__media { width: 100%; }\n      #gallery-widget-93ae645 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-93ae645 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide img,\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 768px) and (max-width: 1279px) {\n      #gallery-widget-93ae645 .gallery-slide__media { width: 100%; }\n      #gallery-widget-93ae645 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-93ae645 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide img,\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1280px) and (max-width: 1439px) {\n      #gallery-widget-93ae645 .gallery-slide__media { width: 100%; }\n      #gallery-widget-93ae645 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-93ae645 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide img,\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1440px) {\n      #gallery-widget-93ae645 .gallery-slide__media { width: 100%; }\n      #gallery-widget-93ae645 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-93ae645 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide img,\n      #gallery-widget-93ae645 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n      <\/style>\n        <div class=\"gallery-viewport\">\n    <div class=\"gallery-swiper swiper\">\n      <div class=\"swiper-wrapper\">\n                                                          <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/7fEjmXwLJ2.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/7fEjmXwLJ2.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/9uwD5RpaAc.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/9uwD5RpaAc.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/67Y12kVdoi.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/67Y12kVdoi.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/e2vZDOfMFb.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/e2vZDOfMFb.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"4\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/y5v3j9pRWf.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/y5v3j9pRWf.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                                              <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/7fEjmXwLJ2.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/7fEjmXwLJ2.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/9uwD5RpaAc.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/9uwD5RpaAc.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/67Y12kVdoi.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/67Y12kVdoi.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/e2vZDOfMFb.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/e2vZDOfMFb.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"4\" data-gallery-original=\"0\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/y5v3j9pRWf.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/y5v3j9pRWf.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                    <\/div>\n    <\/div>\n\n        <div class=\"gallery-nav hidden-xs\">\n      <button class=\"gallery-btn custom-button-btn gallery-prev\" aria-label=\"\u4e0a\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/left_icon.svg\" alt=\"\">\n      <\/button>\n      <button class=\"gallery-btn custom-button-btn gallery-next\" aria-label=\"\u4e0b\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/right_icon.svg\" alt=\"\">\n      <\/button>\n    <\/div>\n      <\/div>\n\n  <div class=\"gallery-footer\">\n    <span class=\"gallery-credit\"><\/span>\n\n  <\/div>\n\n    <div class=\"gallery-dot-wrap hidden-sm\" aria-label=\"\u5716\u7247\u5c0e\u89bd\"><\/div>\n  \n  <div class=\"gallery-lightbox\" aria-hidden=\"true\">\n    <div class=\"gallery-lightbox__panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5716\u7247\u9810\u89bd\">\n      <button class=\"gallery-lightbox__close\" type=\"button\" aria-label=\"\u95dc\u9589\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M15.9939 15.2322L15.2323 15.9938L0.000153744 0.761608L0.761762 0L15.9939 15.2322Z\" fill=\"white\" \/>\n          <path d=\"M0.761608 16L0 15.2384L15.2322 0.00623141L15.9938 0.76784L0.761608 16Z\" fill=\"white\" \/>\n        <\/svg>\n      <\/button>\n      <div class=\"gallery-lightbox__panel_content\">\n        <img class=\"gallery-lightbox__image\" alt=\"\u5716\u7247\" \/>\n        <video class=\"gallery-lightbox__video\" controls playsinline preload=\"metadata\" style=\"display:none;\"><\/video>\n        <div class=\"gallery-lightbox__meta\" data-lenis-prevent>\n          <div class=\"gallery-lightbox__meta-inner\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-lightbox__controls\">\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-prev\" type=\"button\" aria-label=\"\u4e0a\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-93ae645-clip-prev)\">\n              <path d=\"M20.4199 9.33594L20.4199 10.6689L0.419922 10.6689L0.419922 9.33594L20.4199 9.33594Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 9.25334C4.13214 9.73162 7.33323 12.3276 9.14516 16.5683L8.07531 17.3649C6.41054 13.4686 3.49103 11.1339 0.405437 10.7067L0.677548 9.25334Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 10.7467C4.13214 10.2684 7.33323 7.67236 9.14516 3.4317L8.07531 2.63514C6.41054 6.53138 3.49103 8.86608 0.405437 9.29327L0.677548 10.7467Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-93ae645-clip-prev\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n        <div class=\"gallery-lightbox__progress-wrap\" aria-hidden=\"true\">\n          <span><\/span>\n        <\/div>\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-next\" type=\"button\" aria-label=\"\u4e0b\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-93ae645-clip-next)\">\n              <path d=\"M0 10.6641V9.33105L20 9.33105V10.6641L0 10.6641Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 10.7467C16.2878 10.2684 13.0867 7.67237 11.2748 3.4317L12.3446 2.63514C14.0094 6.53138 16.9289 8.86608 20.0145 9.29327L19.7424 10.7467Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 9.25334C16.2878 9.73163 13.0867 12.3276 11.2748 16.5683L12.3446 17.3649C14.0094 13.4686 16.9289 11.1339 20.0145 10.7067L19.7424 9.25334Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-93ae645-clip-next\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function() {\n      var section = document.currentScript && document.currentScript.closest('.gallery-section');\n      if (!section) section = document.getElementById(\"gallery-widget-93ae645\");\n      if (!section) return;\n      var gallerySwiper = null;\n      var slides = [];\n      var slideCount = 0;\n      var carouselSlideCount = 0;\n      var currentIndex = 0;\n      var captionFrame = 0;\n      var isSingle = false;\n      \/\/ Ordered list (smallest device first) of\n      \/\/ { name, mode:'auto'|'custom'|'height', spv, height, media, min }, or null.\n      \/\/ The ranges come from the site's active Elementor breakpoints, so the\n      \/\/ same media query decides here and in the CSS block above.\n      var slidesConfig = [{\"name\":\"mobile\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(max-width: 393px)\",\"min\":0},{\"name\":\"tablet\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 394px) and (max-width: 767px)\",\"min\":394},{\"name\":\"laptop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 768px) and (max-width: 1279px)\",\"min\":768},{\"name\":\"desktop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1280px) and (max-width: 1439px)\",\"min\":1280},{\"name\":\"widescreen\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1440px)\",\"min\":1440}];\n      var swiperEl = section.querySelector(\".gallery-swiper\");\n\n      \/\/ The device entry matching the current viewport.\n      function currentConf() {\n        if (!slidesConfig || !slidesConfig.length) return null;\n        for (var i = 0; i < slidesConfig.length; i++) {\n          if (window.matchMedia(slidesConfig[i].media).matches) {\n            return slidesConfig[i];\n          }\n        }\n        return slidesConfig[slidesConfig.length - 1];\n      }\n\n      \/\/ Pixel-height mode uses proportional widths, independent of card counts.\n      function isCustomMode() {\n        var conf = currentConf();\n        return !!(conf && conf.mode === 'custom');\n      }\n\n      \/\/ Swiper breakpoint entry for one device.\n      function bpConf(conf) {\n        if (conf && conf.mode === 'custom') {\n          return { slidesPerView: conf.spv, spaceBetween: 4 };\n        }\n        return { slidesPerView: 'auto', spaceBetween: 4 };\n      }\n      var dotWrap = section.querySelector(\".gallery-dot-wrap\");\n      var credit = section.querySelector(\".gallery-credit\");\n      var creditTimer = 0;\n      var lightbox = section.querySelector(\".gallery-lightbox\");\n      var lightboxClose = section.querySelector(\".gallery-lightbox__close\");\n      var lightboxImage = section.querySelector(\".gallery-lightbox__image\");\n      var lightboxVideo = section.querySelector(\".gallery-lightbox__video\");\n      var lightboxMeta = section.querySelector(\".gallery-lightbox__meta\");\n      var lightboxMetaInner = section.querySelector(\".gallery-lightbox__meta-inner\");\n      var lightboxProgress = section.querySelector(\".gallery-lightbox__progress-wrap span\");\n      var lightboxPrev = section.querySelector(\".gallery-lightbox-prev\");\n      var lightboxNext = section.querySelector(\".gallery-lightbox-next\");\n      var galleryPrev = section.querySelector(\".gallery-prev\");\n      var galleryNext = section.querySelector(\".gallery-next\");\n      var activeLightboxIndex = 0;\n\n      function syncSlides() {\n        slides = Array.prototype.slice.call(section.querySelectorAll('.gallery-slide[data-gallery-original=\"1\"]'));\n        slideCount = slides.length;\n        carouselSlideCount = section.querySelectorAll(\".gallery-slide\").length;\n      }\n\n      function getSlideMedia(slide) {\n        return slide ? slide.querySelector(\"img, video\") : null;\n      }\n\n      function getLightboxMedia() {\n        if (lightboxVideo && lightboxVideo.style.display !== \"none\") {\n          return lightboxVideo;\n        }\n        return lightboxImage;\n      }\n\n      function stopLightboxVideo() {\n        if (!lightboxVideo) return;\n        lightboxVideo.pause();\n        lightboxVideo.removeAttribute(\"src\");\n        lightboxVideo.load();\n      }\n\n      function updateCaptionWidths() {\n        section.querySelectorAll('.gallery-slide').forEach(function(slide) {\n          var caption = slide.querySelector('.gallery-slide__text');\n          var image = getSlideMedia(slide);\n          if (!caption || !image) return;\n          var width = image.getBoundingClientRect().width;\n          if (width > 0) {\n            \/\/ Keep this value on the caption itself so fixed-card widths are\n            \/\/ measured after Swiper has finished sizing the slide.\n            caption.style.setProperty('--gallery-slide-image-width', width + 'px');\n          }\n        });\n      }\n\n      function updateGallerySize() {\n        if (gallerySwiper) gallerySwiper.update();\n        updateCaptionWidths();\n        if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n          gallerySwiper.updateAutoHeight(0);\n        }\n        scheduleCaptionWidths();\n      }\n\n      function scheduleCaptionWidths() {\n        window.cancelAnimationFrame(captionFrame);\n        captionFrame = window.requestAnimationFrame(function() {\n          if (!section.isConnected) return;\n          updateCaptionWidths();\n          if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n            gallerySwiper.updateAutoHeight(0);\n          }\n        });\n      }\n\n      function updateSlideWidths() {\n        if (isSingle) {\n          updateCaptionWidths();\n          return;\n        }\n        \/\/ Custom mode: Swiper computes slide widths from slidesPerView, so clear\n        \/\/ any inline widths a previous 'auto' breakpoint may have set and let\n        \/\/ Swiper size the slides.\n        if (isCustomMode()) {\n          Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\")).forEach(function(slide) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n          });\n          updateGallerySize();\n          return;\n        }\n\n        var isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n        var conf = currentConf();\n        var hasPixelHeight = !!(conf && conf.mode === 'height');\n        var gallerySlides = Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\"));\n\n        gallerySlides.forEach(function(slide) {\n          var image = getSlideMedia(slide);\n\n          if ((isMobile && !hasPixelHeight) || !image) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n            return;\n          }\n\n          var imageWidth = image.getBoundingClientRect().width;\n          if (imageWidth > 0) {\n            slide.style.width = imageWidth + \"px\";\n            slide.style.setProperty(\"--gallery-slide-image-width\", imageWidth + \"px\");\n          }\n        });\n\n        updateGallerySize();\n      }\n\n      \/\/ Captions come from a rich-text field and may carry <br\/>. Escaping the\n      \/\/ whole string first, then re-enabling only the line breaks, keeps the\n      \/\/ markup out of the visible text without opening an HTML injection hole.\n      function setCaptionHtml(el, raw) {\n        el.textContent = raw;\n        if (el.innerHTML.indexOf(\"&lt;br\") !== -1) {\n          el.innerHTML = el.innerHTML.replace(\/&lt;br\\s*\\\/?&gt;\/gi, \"<br>\");\n        }\n      }\n\n      function updateCredit(index) {\n        if (!credit || !slides[index]) return;\n        var text = slides[index].getAttribute(\"data-credit\") || \"\";\n        window.clearTimeout(creditTimer);\n        credit.classList.add(\"is-transitioning\");\n        creditTimer = window.setTimeout(function() {\n          setCaptionHtml(credit, text);\n          credit.classList.remove(\"is-transitioning\");\n        }, 60);\n      }\n\n      function updateLightboxMetaWidth() {\n        var media = getLightboxMedia();\n        if (!lightbox || !media) return;\n        var imageWidth = media.getBoundingClientRect().width;\n        if (imageWidth > 0) {\n          lightbox.style.setProperty(\"--gallery-lightbox-image-width\", imageWidth + \"px\");\n        }\n      }\n\n      \/\/ Custom dots: slides are duplicated in the DOM to enable looping, so\n      \/\/ Swiper's built-in pagination would show one bullet per copy (e.g. 9\n      \/\/ dots for 3 images). Render one dot per original image instead.\n      function buildDots() {\n        if (!dotWrap) return;\n        dotWrap.innerHTML = \"\";\n        for (var i = 0; i < slideCount; i++) {\n          (function(target) {\n            var dot = document.createElement(\"button\");\n            dot.type = \"button\";\n            dot.className = \"swiper-pagination-bullet\";\n            dot.setAttribute(\"aria-label\", \"Go to slide \" + (target + 1));\n            dot.addEventListener(\"click\", function() {\n              if (gallerySwiper) gallerySwiper.slideToLoop(target);\n            });\n            dotWrap.appendChild(dot);\n          })(i);\n        }\n      }\n\n      function updateDots() {\n        if (!dotWrap) return;\n        var dots = dotWrap.children;\n        for (var i = 0; i < dots.length; i++) {\n          dots[i].classList.toggle(\"swiper-pagination-bullet-active\", i === currentIndex);\n        }\n      }\n\n      function setActiveIndex(index) {\n        if (!slideCount) return;\n        currentIndex = ((index % slideCount) + slideCount) % slideCount;\n        updateCredit(currentIndex);\n        updateDots();\n      }\n\n      function goToGalleryIndex(index) {\n        if (!gallerySwiper || !slideCount) return;\n        var targetIndex = ((index % slideCount) + slideCount) % slideCount;\n        if (typeof gallerySwiper.slideToLoop === \"function\") {\n          gallerySwiper.slideToLoop(targetIndex);\n        } else {\n          gallerySwiper.slideTo(targetIndex);\n        }\n        setActiveIndex(targetIndex);\n      }\n\n      function showNextGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex + 1);\n      }\n\n      function showPrevGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex - 1);\n      }\n\n      function openLightbox(index) {\n        activeLightboxIndex = index;\n        var slide = slides[index];\n        if (!slide || !lightbox || !lightboxImage || !lightboxMeta || !lightboxProgress) return;\n        var mediaType = slide.getAttribute(\"data-media-type\") || \"image\";\n        var mediaUrl = slide.getAttribute(\"data-media-url\") || \"\";\n        var mediaAlt = slide.getAttribute(\"data-media-alt\") || \"Gallery image\";\n        stopLightboxVideo();\n        if (mediaType === \"video\" && lightboxVideo) {\n          lightboxImage.style.display = \"none\";\n          lightboxImage.removeAttribute(\"src\");\n          lightboxVideo.style.display = \"\";\n          lightboxVideo.src = mediaUrl;\n          lightboxVideo.load();\n        } else {\n          lightboxImage.style.display = \"\";\n          if (lightboxVideo) lightboxVideo.style.display = \"none\";\n          lightboxImage.src = mediaUrl;\n          lightboxImage.alt = mediaAlt;\n        }\n        setCaptionHtml(lightboxMetaInner || lightboxMeta, slide.getAttribute(\"data-credit\") || \"\");\n        lightboxProgress.style.width = ((index + 1) \/ slideCount) * 100 + \"%\";\n        lightbox.classList.add(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"false\");\n        if (mediaType !== \"video\" && lightboxImage.complete) {\n          updateLightboxMetaWidth();\n        }\n        window.requestAnimationFrame(updateLightboxMetaWidth);\n        document.documentElement.style.overflow = \"hidden\";\n        document.body.style.overflow = \"hidden\";\n      }\n\n      function closeLightbox() {\n        if (!lightbox) return;\n        lightbox.classList.remove(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"true\");\n        stopLightboxVideo();\n        document.documentElement.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      }\n\n      function showLightbox(index) {\n        if (!slideCount) return;\n        var nextIndex = ((index % slideCount) + slideCount) % slideCount;\n        openLightbox(nextIndex);\n      }\n\n      function showNextLightbox() {\n        showLightbox(activeLightboxIndex + 1);\n      }\n\n      function showPrevLightbox() {\n        showLightbox(activeLightboxIndex - 1);\n      }\n\n      function initGallerySwiper() {\n        if (!swiperEl || gallerySwiper) return;\n        syncSlides();\n        if (!slideCount) return;\n        if (isSingle) {\n          updateSlideWidths();\n          setActiveIndex(0);\n          return;\n        }\n        if (typeof Swiper === 'undefined') return;\n        buildDots();\n        updateSlideWidths();\n\n        \/\/ One Swiper breakpoint per active Elementor device, keyed by its\n        \/\/ min-width. Each device is auto or custom independently.\n        var breakpoints;\n        if (slidesConfig) {\n          breakpoints = {};\n          slidesConfig.forEach(function(conf) {\n            breakpoints[conf.min] = bpConf(conf);\n          });\n        } else {\n          breakpoints = {\n            0: {\n              slidesPerView: 1,\n              spaceBetween: 4,\n            },\n            769: {\n              slidesPerView: 'auto',\n              spaceBetween: 4,\n            },\n          };\n        }\n\n        gallerySwiper = new Swiper(swiperEl, {\n          slidesPerView: slidesConfig ? bpConf(currentConf()).slidesPerView : (window.innerWidth <= 768 ? 1 : 'auto'),\n          spaceBetween: 20,\n          autoHeight: true,\n          rewind: true,\n          loop: carouselSlideCount > 1,\n          loopAdditionalSlides: carouselSlideCount,\n          loopedSlides: carouselSlideCount,\n          watchOverflow: false,\n          breakpoints: breakpoints,\n          on: {\n            breakpoint: scheduleCaptionWidths,\n            loopFix: scheduleCaptionWidths,\n            resize: scheduleCaptionWidths,\n            init: function() {\n              updateSlideWidths();\n              setActiveIndex(this.realIndex || 0);\n            },\n            slideChange: function() {\n              setActiveIndex(this.realIndex || 0);\n            }\n          }\n        });\n        updateGallerySize();\n      }\n\n      if (swiperEl) {\n      swiperEl.addEventListener('click', function(event) {\n        var slide = event.target.closest('.gallery-slide');\n        if (!slide) return;\n        var index = parseInt(slide.getAttribute('data-gallery-index'), 10);\n        if (!isNaN(index)) {\n          showLightbox(index);\n        }\n      });\n      }\n\n      function onGalleryMediaLoad(event) {\n        var media = event.target;\n        if (!media.matches || !media.matches('.gallery-slide img, .gallery-slide video')) return;\n        if (mediaObserver) mediaObserver.observe(media);\n        updateSlideWidths();\n      }\n      \/\/ Capture loads from new loop slides too; cloned nodes do not retain\n      \/\/ listeners that were attached directly to the original media elements.\n      section.addEventListener('load', onGalleryMediaLoad, true);\n      section.addEventListener('loadedmetadata', onGalleryMediaLoad, true);\n\n      \/\/ Elementor controls and container resizing can change media dimensions\n      \/\/ without a window resize. Refresh caption widths after those changes too.\n      if (window.ResizeObserver) {\n        var sizeFrame = 0;\n        var mediaObserver = new ResizeObserver(function() {\n          window.cancelAnimationFrame(sizeFrame);\n          sizeFrame = window.requestAnimationFrame(function() {\n            if (!section.isConnected) {\n              mediaObserver.disconnect();\n              return;\n            }\n            updateSlideWidths();\n          });\n        });\n        section.querySelectorAll('.gallery-slide img, .gallery-slide video').forEach(function(media) {\n          mediaObserver.observe(media);\n        });\n      }\n\n      if (lightboxNext) lightboxNext.addEventListener('click', showNextLightbox);\n      if (lightboxPrev) lightboxPrev.addEventListener('click', showPrevLightbox);\n      if (galleryNext) galleryNext.addEventListener('click', showNextGallerySlide);\n      if (galleryPrev) galleryPrev.addEventListener('click', showPrevGallerySlide);\n      if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n      if (lightboxImage) lightboxImage.addEventListener('load', updateLightboxMetaWidth);\n      if (lightboxVideo) lightboxVideo.addEventListener('loadedmetadata', updateLightboxMetaWidth);\n      if (lightboxMeta) {\n        lightboxMeta.addEventListener('wheel', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n\n        lightboxMeta.addEventListener('touchmove', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n      }\n      if (lightbox) lightbox.addEventListener('click', function(event) {\n        if (event.target === lightbox) closeLightbox();\n      });\n\n      document.addEventListener('keydown', function(event) {\n        if (!lightbox || !lightbox.classList.contains(\"is-open\")) return;\n        if (event.key === \"Escape\" && lightbox.classList.contains(\"is-open\")) closeLightbox();\n        if (event.key === \"ArrowRight\" && lightbox.classList.contains(\"is-open\")) showNextLightbox();\n        if (event.key === \"ArrowLeft\" && lightbox.classList.contains(\"is-open\")) showPrevLightbox();\n      });\n\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initGallerySwiper);\n      } else {\n        initGallerySwiper();\n      }\n\n      window.addEventListener('load', initGallerySwiper);\n      window.addEventListener('load', updateSlideWidths);\n      window.addEventListener('resize', function() {\n        updateSlideWidths();\n        updateLightboxMetaWidth();\n      });\n    })();\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-38257da e-con-full e-flex e-con e-child\" data-id=\"38257da\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e1b32c elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"5e1b32c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2018\u300a\u5929\u9d5d\u6e56\u300b\u5e7c\u7a1a\u5712\u82ad\u857e\u5de5\u4f5c\u574a\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7f43f4 elementor-widget elementor-widget-hkb_gallery\" data-id=\"f7f43f4\" data-element_type=\"widget\" data-widget_type=\"hkb_gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section id=\"gallery-widget-f7f43f4\" class=\"gallery-section gallery-section--active-caption\" style=\"--gallery-slide-height-desktop:var(--hkb-gallery-image-height,70vh);--gallery-slide-height-mobile:var(--hkb-gallery-image-height,30vh);\">\n  <style>\n    \/* Caption width follows its rendered image, including mobile theme overrides. *\/\n    #gallery-widget-f7f43f4 .gallery-slide__text {\n      width: var(--gallery-slide-image-width, 100%) !important;\n      max-width: var(--gallery-slide-image-width, 100%) !important;\n      min-width: 0 !important;\n      box-sizing: border-box !important;\n      white-space: normal !important;\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n  <\/style>\n    <style>\n        #gallery-widget-f7f43f4 { --gallery-aspect-ratio: 16 \/ 9; }\n                        @media (max-width: 393px) {\n      #gallery-widget-f7f43f4 .gallery-slide__media { width: 100%; }\n      #gallery-widget-f7f43f4 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-f7f43f4 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide img,\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 394px) and (max-width: 767px) {\n      #gallery-widget-f7f43f4 .gallery-slide__media { width: 100%; }\n      #gallery-widget-f7f43f4 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-f7f43f4 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide img,\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 768px) and (max-width: 1279px) {\n      #gallery-widget-f7f43f4 .gallery-slide__media { width: 100%; }\n      #gallery-widget-f7f43f4 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-f7f43f4 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide img,\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1280px) and (max-width: 1439px) {\n      #gallery-widget-f7f43f4 .gallery-slide__media { width: 100%; }\n      #gallery-widget-f7f43f4 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-f7f43f4 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide img,\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1440px) {\n      #gallery-widget-f7f43f4 .gallery-slide__media { width: 100%; }\n      #gallery-widget-f7f43f4 .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-f7f43f4 .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide img,\n      #gallery-widget-f7f43f4 .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n      <\/style>\n        <div class=\"gallery-viewport\">\n    <div class=\"gallery-swiper swiper\">\n      <div class=\"swiper-wrapper\">\n                                                          <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/HPvO2ExgNa.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/HPvO2ExgNa.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/HxpF1gt2rj.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/HxpF1gt2rj.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/xIlHQZObM2.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/xIlHQZObM2.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/Zx0sL1bP7M.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/Zx0sL1bP7M.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"4\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/36h7LJOikc.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/36h7LJOikc.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"5\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/FfPZ0Wx3sj.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/FfPZ0Wx3sj.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"6\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/KBD98m4lRi.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/KBD98m4lRi.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"7\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/qU2tIivfdK.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/qU2tIivfdK.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"8\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/uVRIxsMCmX.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/uVRIxsMCmX.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"9\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/WnCagXwe9l.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/WnCagXwe9l.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                    <\/div>\n    <\/div>\n\n        <div class=\"gallery-nav hidden-xs\">\n      <button class=\"gallery-btn custom-button-btn gallery-prev\" aria-label=\"\u4e0a\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/left_icon.svg\" alt=\"\">\n      <\/button>\n      <button class=\"gallery-btn custom-button-btn gallery-next\" aria-label=\"\u4e0b\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/right_icon.svg\" alt=\"\">\n      <\/button>\n    <\/div>\n      <\/div>\n\n  <div class=\"gallery-footer\">\n    <span class=\"gallery-credit\"><\/span>\n\n  <\/div>\n\n    <div class=\"gallery-dot-wrap hidden-sm\" aria-label=\"\u5716\u7247\u5c0e\u89bd\"><\/div>\n  \n  <div class=\"gallery-lightbox\" aria-hidden=\"true\">\n    <div class=\"gallery-lightbox__panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5716\u7247\u9810\u89bd\">\n      <button class=\"gallery-lightbox__close\" type=\"button\" aria-label=\"\u95dc\u9589\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M15.9939 15.2322L15.2323 15.9938L0.000153744 0.761608L0.761762 0L15.9939 15.2322Z\" fill=\"white\" \/>\n          <path d=\"M0.761608 16L0 15.2384L15.2322 0.00623141L15.9938 0.76784L0.761608 16Z\" fill=\"white\" \/>\n        <\/svg>\n      <\/button>\n      <div class=\"gallery-lightbox__panel_content\">\n        <img class=\"gallery-lightbox__image\" alt=\"\u5716\u7247\" \/>\n        <video class=\"gallery-lightbox__video\" controls playsinline preload=\"metadata\" style=\"display:none;\"><\/video>\n        <div class=\"gallery-lightbox__meta\" data-lenis-prevent>\n          <div class=\"gallery-lightbox__meta-inner\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-lightbox__controls\">\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-prev\" type=\"button\" aria-label=\"\u4e0a\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-f7f43f4-clip-prev)\">\n              <path d=\"M20.4199 9.33594L20.4199 10.6689L0.419922 10.6689L0.419922 9.33594L20.4199 9.33594Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 9.25334C4.13214 9.73162 7.33323 12.3276 9.14516 16.5683L8.07531 17.3649C6.41054 13.4686 3.49103 11.1339 0.405437 10.7067L0.677548 9.25334Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 10.7467C4.13214 10.2684 7.33323 7.67236 9.14516 3.4317L8.07531 2.63514C6.41054 6.53138 3.49103 8.86608 0.405437 9.29327L0.677548 10.7467Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-f7f43f4-clip-prev\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n        <div class=\"gallery-lightbox__progress-wrap\" aria-hidden=\"true\">\n          <span><\/span>\n        <\/div>\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-next\" type=\"button\" aria-label=\"\u4e0b\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-f7f43f4-clip-next)\">\n              <path d=\"M0 10.6641V9.33105L20 9.33105V10.6641L0 10.6641Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 10.7467C16.2878 10.2684 13.0867 7.67237 11.2748 3.4317L12.3446 2.63514C14.0094 6.53138 16.9289 8.86608 20.0145 9.29327L19.7424 10.7467Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 9.25334C16.2878 9.73163 13.0867 12.3276 11.2748 16.5683L12.3446 17.3649C14.0094 13.4686 16.9289 11.1339 20.0145 10.7067L19.7424 9.25334Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-f7f43f4-clip-next\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function() {\n      var section = document.currentScript && document.currentScript.closest('.gallery-section');\n      if (!section) section = document.getElementById(\"gallery-widget-f7f43f4\");\n      if (!section) return;\n      var gallerySwiper = null;\n      var slides = [];\n      var slideCount = 0;\n      var carouselSlideCount = 0;\n      var currentIndex = 0;\n      var captionFrame = 0;\n      var isSingle = false;\n      \/\/ Ordered list (smallest device first) of\n      \/\/ { name, mode:'auto'|'custom'|'height', spv, height, media, min }, or null.\n      \/\/ The ranges come from the site's active Elementor breakpoints, so the\n      \/\/ same media query decides here and in the CSS block above.\n      var slidesConfig = [{\"name\":\"mobile\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(max-width: 393px)\",\"min\":0},{\"name\":\"tablet\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 394px) and (max-width: 767px)\",\"min\":394},{\"name\":\"laptop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 768px) and (max-width: 1279px)\",\"min\":768},{\"name\":\"desktop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1280px) and (max-width: 1439px)\",\"min\":1280},{\"name\":\"widescreen\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1440px)\",\"min\":1440}];\n      var swiperEl = section.querySelector(\".gallery-swiper\");\n\n      \/\/ The device entry matching the current viewport.\n      function currentConf() {\n        if (!slidesConfig || !slidesConfig.length) return null;\n        for (var i = 0; i < slidesConfig.length; i++) {\n          if (window.matchMedia(slidesConfig[i].media).matches) {\n            return slidesConfig[i];\n          }\n        }\n        return slidesConfig[slidesConfig.length - 1];\n      }\n\n      \/\/ Pixel-height mode uses proportional widths, independent of card counts.\n      function isCustomMode() {\n        var conf = currentConf();\n        return !!(conf && conf.mode === 'custom');\n      }\n\n      \/\/ Swiper breakpoint entry for one device.\n      function bpConf(conf) {\n        if (conf && conf.mode === 'custom') {\n          return { slidesPerView: conf.spv, spaceBetween: 4 };\n        }\n        return { slidesPerView: 'auto', spaceBetween: 4 };\n      }\n      var dotWrap = section.querySelector(\".gallery-dot-wrap\");\n      var credit = section.querySelector(\".gallery-credit\");\n      var creditTimer = 0;\n      var lightbox = section.querySelector(\".gallery-lightbox\");\n      var lightboxClose = section.querySelector(\".gallery-lightbox__close\");\n      var lightboxImage = section.querySelector(\".gallery-lightbox__image\");\n      var lightboxVideo = section.querySelector(\".gallery-lightbox__video\");\n      var lightboxMeta = section.querySelector(\".gallery-lightbox__meta\");\n      var lightboxMetaInner = section.querySelector(\".gallery-lightbox__meta-inner\");\n      var lightboxProgress = section.querySelector(\".gallery-lightbox__progress-wrap span\");\n      var lightboxPrev = section.querySelector(\".gallery-lightbox-prev\");\n      var lightboxNext = section.querySelector(\".gallery-lightbox-next\");\n      var galleryPrev = section.querySelector(\".gallery-prev\");\n      var galleryNext = section.querySelector(\".gallery-next\");\n      var activeLightboxIndex = 0;\n\n      function syncSlides() {\n        slides = Array.prototype.slice.call(section.querySelectorAll('.gallery-slide[data-gallery-original=\"1\"]'));\n        slideCount = slides.length;\n        carouselSlideCount = section.querySelectorAll(\".gallery-slide\").length;\n      }\n\n      function getSlideMedia(slide) {\n        return slide ? slide.querySelector(\"img, video\") : null;\n      }\n\n      function getLightboxMedia() {\n        if (lightboxVideo && lightboxVideo.style.display !== \"none\") {\n          return lightboxVideo;\n        }\n        return lightboxImage;\n      }\n\n      function stopLightboxVideo() {\n        if (!lightboxVideo) return;\n        lightboxVideo.pause();\n        lightboxVideo.removeAttribute(\"src\");\n        lightboxVideo.load();\n      }\n\n      function updateCaptionWidths() {\n        section.querySelectorAll('.gallery-slide').forEach(function(slide) {\n          var caption = slide.querySelector('.gallery-slide__text');\n          var image = getSlideMedia(slide);\n          if (!caption || !image) return;\n          var width = image.getBoundingClientRect().width;\n          if (width > 0) {\n            \/\/ Keep this value on the caption itself so fixed-card widths are\n            \/\/ measured after Swiper has finished sizing the slide.\n            caption.style.setProperty('--gallery-slide-image-width', width + 'px');\n          }\n        });\n      }\n\n      function updateGallerySize() {\n        if (gallerySwiper) gallerySwiper.update();\n        updateCaptionWidths();\n        if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n          gallerySwiper.updateAutoHeight(0);\n        }\n        scheduleCaptionWidths();\n      }\n\n      function scheduleCaptionWidths() {\n        window.cancelAnimationFrame(captionFrame);\n        captionFrame = window.requestAnimationFrame(function() {\n          if (!section.isConnected) return;\n          updateCaptionWidths();\n          if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n            gallerySwiper.updateAutoHeight(0);\n          }\n        });\n      }\n\n      function updateSlideWidths() {\n        if (isSingle) {\n          updateCaptionWidths();\n          return;\n        }\n        \/\/ Custom mode: Swiper computes slide widths from slidesPerView, so clear\n        \/\/ any inline widths a previous 'auto' breakpoint may have set and let\n        \/\/ Swiper size the slides.\n        if (isCustomMode()) {\n          Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\")).forEach(function(slide) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n          });\n          updateGallerySize();\n          return;\n        }\n\n        var isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n        var conf = currentConf();\n        var hasPixelHeight = !!(conf && conf.mode === 'height');\n        var gallerySlides = Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\"));\n\n        gallerySlides.forEach(function(slide) {\n          var image = getSlideMedia(slide);\n\n          if ((isMobile && !hasPixelHeight) || !image) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n            return;\n          }\n\n          var imageWidth = image.getBoundingClientRect().width;\n          if (imageWidth > 0) {\n            slide.style.width = imageWidth + \"px\";\n            slide.style.setProperty(\"--gallery-slide-image-width\", imageWidth + \"px\");\n          }\n        });\n\n        updateGallerySize();\n      }\n\n      \/\/ Captions come from a rich-text field and may carry <br\/>. Escaping the\n      \/\/ whole string first, then re-enabling only the line breaks, keeps the\n      \/\/ markup out of the visible text without opening an HTML injection hole.\n      function setCaptionHtml(el, raw) {\n        el.textContent = raw;\n        if (el.innerHTML.indexOf(\"&lt;br\") !== -1) {\n          el.innerHTML = el.innerHTML.replace(\/&lt;br\\s*\\\/?&gt;\/gi, \"<br>\");\n        }\n      }\n\n      function updateCredit(index) {\n        if (!credit || !slides[index]) return;\n        var text = slides[index].getAttribute(\"data-credit\") || \"\";\n        window.clearTimeout(creditTimer);\n        credit.classList.add(\"is-transitioning\");\n        creditTimer = window.setTimeout(function() {\n          setCaptionHtml(credit, text);\n          credit.classList.remove(\"is-transitioning\");\n        }, 60);\n      }\n\n      function updateLightboxMetaWidth() {\n        var media = getLightboxMedia();\n        if (!lightbox || !media) return;\n        var imageWidth = media.getBoundingClientRect().width;\n        if (imageWidth > 0) {\n          lightbox.style.setProperty(\"--gallery-lightbox-image-width\", imageWidth + \"px\");\n        }\n      }\n\n      \/\/ Custom dots: slides are duplicated in the DOM to enable looping, so\n      \/\/ Swiper's built-in pagination would show one bullet per copy (e.g. 9\n      \/\/ dots for 3 images). Render one dot per original image instead.\n      function buildDots() {\n        if (!dotWrap) return;\n        dotWrap.innerHTML = \"\";\n        for (var i = 0; i < slideCount; i++) {\n          (function(target) {\n            var dot = document.createElement(\"button\");\n            dot.type = \"button\";\n            dot.className = \"swiper-pagination-bullet\";\n            dot.setAttribute(\"aria-label\", \"Go to slide \" + (target + 1));\n            dot.addEventListener(\"click\", function() {\n              if (gallerySwiper) gallerySwiper.slideToLoop(target);\n            });\n            dotWrap.appendChild(dot);\n          })(i);\n        }\n      }\n\n      function updateDots() {\n        if (!dotWrap) return;\n        var dots = dotWrap.children;\n        for (var i = 0; i < dots.length; i++) {\n          dots[i].classList.toggle(\"swiper-pagination-bullet-active\", i === currentIndex);\n        }\n      }\n\n      function setActiveIndex(index) {\n        if (!slideCount) return;\n        currentIndex = ((index % slideCount) + slideCount) % slideCount;\n        updateCredit(currentIndex);\n        updateDots();\n      }\n\n      function goToGalleryIndex(index) {\n        if (!gallerySwiper || !slideCount) return;\n        var targetIndex = ((index % slideCount) + slideCount) % slideCount;\n        if (typeof gallerySwiper.slideToLoop === \"function\") {\n          gallerySwiper.slideToLoop(targetIndex);\n        } else {\n          gallerySwiper.slideTo(targetIndex);\n        }\n        setActiveIndex(targetIndex);\n      }\n\n      function showNextGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex + 1);\n      }\n\n      function showPrevGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex - 1);\n      }\n\n      function openLightbox(index) {\n        activeLightboxIndex = index;\n        var slide = slides[index];\n        if (!slide || !lightbox || !lightboxImage || !lightboxMeta || !lightboxProgress) return;\n        var mediaType = slide.getAttribute(\"data-media-type\") || \"image\";\n        var mediaUrl = slide.getAttribute(\"data-media-url\") || \"\";\n        var mediaAlt = slide.getAttribute(\"data-media-alt\") || \"Gallery image\";\n        stopLightboxVideo();\n        if (mediaType === \"video\" && lightboxVideo) {\n          lightboxImage.style.display = \"none\";\n          lightboxImage.removeAttribute(\"src\");\n          lightboxVideo.style.display = \"\";\n          lightboxVideo.src = mediaUrl;\n          lightboxVideo.load();\n        } else {\n          lightboxImage.style.display = \"\";\n          if (lightboxVideo) lightboxVideo.style.display = \"none\";\n          lightboxImage.src = mediaUrl;\n          lightboxImage.alt = mediaAlt;\n        }\n        setCaptionHtml(lightboxMetaInner || lightboxMeta, slide.getAttribute(\"data-credit\") || \"\");\n        lightboxProgress.style.width = ((index + 1) \/ slideCount) * 100 + \"%\";\n        lightbox.classList.add(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"false\");\n        if (mediaType !== \"video\" && lightboxImage.complete) {\n          updateLightboxMetaWidth();\n        }\n        window.requestAnimationFrame(updateLightboxMetaWidth);\n        document.documentElement.style.overflow = \"hidden\";\n        document.body.style.overflow = \"hidden\";\n      }\n\n      function closeLightbox() {\n        if (!lightbox) return;\n        lightbox.classList.remove(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"true\");\n        stopLightboxVideo();\n        document.documentElement.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      }\n\n      function showLightbox(index) {\n        if (!slideCount) return;\n        var nextIndex = ((index % slideCount) + slideCount) % slideCount;\n        openLightbox(nextIndex);\n      }\n\n      function showNextLightbox() {\n        showLightbox(activeLightboxIndex + 1);\n      }\n\n      function showPrevLightbox() {\n        showLightbox(activeLightboxIndex - 1);\n      }\n\n      function initGallerySwiper() {\n        if (!swiperEl || gallerySwiper) return;\n        syncSlides();\n        if (!slideCount) return;\n        if (isSingle) {\n          updateSlideWidths();\n          setActiveIndex(0);\n          return;\n        }\n        if (typeof Swiper === 'undefined') return;\n        buildDots();\n        updateSlideWidths();\n\n        \/\/ One Swiper breakpoint per active Elementor device, keyed by its\n        \/\/ min-width. Each device is auto or custom independently.\n        var breakpoints;\n        if (slidesConfig) {\n          breakpoints = {};\n          slidesConfig.forEach(function(conf) {\n            breakpoints[conf.min] = bpConf(conf);\n          });\n        } else {\n          breakpoints = {\n            0: {\n              slidesPerView: 1,\n              spaceBetween: 4,\n            },\n            769: {\n              slidesPerView: 'auto',\n              spaceBetween: 4,\n            },\n          };\n        }\n\n        gallerySwiper = new Swiper(swiperEl, {\n          slidesPerView: slidesConfig ? bpConf(currentConf()).slidesPerView : (window.innerWidth <= 768 ? 1 : 'auto'),\n          spaceBetween: 20,\n          autoHeight: true,\n          rewind: true,\n          loop: carouselSlideCount > 1,\n          loopAdditionalSlides: carouselSlideCount,\n          loopedSlides: carouselSlideCount,\n          watchOverflow: false,\n          breakpoints: breakpoints,\n          on: {\n            breakpoint: scheduleCaptionWidths,\n            loopFix: scheduleCaptionWidths,\n            resize: scheduleCaptionWidths,\n            init: function() {\n              updateSlideWidths();\n              setActiveIndex(this.realIndex || 0);\n            },\n            slideChange: function() {\n              setActiveIndex(this.realIndex || 0);\n            }\n          }\n        });\n        updateGallerySize();\n      }\n\n      if (swiperEl) {\n      swiperEl.addEventListener('click', function(event) {\n        var slide = event.target.closest('.gallery-slide');\n        if (!slide) return;\n        var index = parseInt(slide.getAttribute('data-gallery-index'), 10);\n        if (!isNaN(index)) {\n          showLightbox(index);\n        }\n      });\n      }\n\n      function onGalleryMediaLoad(event) {\n        var media = event.target;\n        if (!media.matches || !media.matches('.gallery-slide img, .gallery-slide video')) return;\n        if (mediaObserver) mediaObserver.observe(media);\n        updateSlideWidths();\n      }\n      \/\/ Capture loads from new loop slides too; cloned nodes do not retain\n      \/\/ listeners that were attached directly to the original media elements.\n      section.addEventListener('load', onGalleryMediaLoad, true);\n      section.addEventListener('loadedmetadata', onGalleryMediaLoad, true);\n\n      \/\/ Elementor controls and container resizing can change media dimensions\n      \/\/ without a window resize. Refresh caption widths after those changes too.\n      if (window.ResizeObserver) {\n        var sizeFrame = 0;\n        var mediaObserver = new ResizeObserver(function() {\n          window.cancelAnimationFrame(sizeFrame);\n          sizeFrame = window.requestAnimationFrame(function() {\n            if (!section.isConnected) {\n              mediaObserver.disconnect();\n              return;\n            }\n            updateSlideWidths();\n          });\n        });\n        section.querySelectorAll('.gallery-slide img, .gallery-slide video').forEach(function(media) {\n          mediaObserver.observe(media);\n        });\n      }\n\n      if (lightboxNext) lightboxNext.addEventListener('click', showNextLightbox);\n      if (lightboxPrev) lightboxPrev.addEventListener('click', showPrevLightbox);\n      if (galleryNext) galleryNext.addEventListener('click', showNextGallerySlide);\n      if (galleryPrev) galleryPrev.addEventListener('click', showPrevGallerySlide);\n      if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n      if (lightboxImage) lightboxImage.addEventListener('load', updateLightboxMetaWidth);\n      if (lightboxVideo) lightboxVideo.addEventListener('loadedmetadata', updateLightboxMetaWidth);\n      if (lightboxMeta) {\n        lightboxMeta.addEventListener('wheel', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n\n        lightboxMeta.addEventListener('touchmove', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n      }\n      if (lightbox) lightbox.addEventListener('click', function(event) {\n        if (event.target === lightbox) closeLightbox();\n      });\n\n      document.addEventListener('keydown', function(event) {\n        if (!lightbox || !lightbox.classList.contains(\"is-open\")) return;\n        if (event.key === \"Escape\" && lightbox.classList.contains(\"is-open\")) closeLightbox();\n        if (event.key === \"ArrowRight\" && lightbox.classList.contains(\"is-open\")) showNextLightbox();\n        if (event.key === \"ArrowLeft\" && lightbox.classList.contains(\"is-open\")) showPrevLightbox();\n      });\n\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initGallerySwiper);\n      } else {\n        initGallerySwiper();\n      }\n\n      window.addEventListener('load', initGallerySwiper);\n      window.addEventListener('load', updateSlideWidths);\n      window.addEventListener('resize', function() {\n        updateSlideWidths();\n        updateLightboxMetaWidth();\n      });\n    })();\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-2d140ad e-con-full e-flex e-con e-child\" data-id=\"2d140ad\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c53046 elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"6c53046\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2016\u300a\u5929\u9d5d\u6e56\u300b\u514d\u8cbb\u6559\u80b2\u8b1b\u5ea7\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-96be3fd elementor-widget elementor-widget-hkb_gallery\" data-id=\"96be3fd\" data-element_type=\"widget\" data-widget_type=\"hkb_gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section id=\"gallery-widget-96be3fd\" class=\"gallery-section gallery-section--active-caption\" style=\"--gallery-slide-height-desktop:var(--hkb-gallery-image-height,70vh);--gallery-slide-height-mobile:var(--hkb-gallery-image-height,30vh);\">\n  <style>\n    \/* Caption width follows its rendered image, including mobile theme overrides. *\/\n    #gallery-widget-96be3fd .gallery-slide__text {\n      width: var(--gallery-slide-image-width, 100%) !important;\n      max-width: var(--gallery-slide-image-width, 100%) !important;\n      min-width: 0 !important;\n      box-sizing: border-box !important;\n      white-space: normal !important;\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n  <\/style>\n    <style>\n        #gallery-widget-96be3fd { --gallery-aspect-ratio: 16 \/ 9; }\n                        @media (max-width: 393px) {\n      #gallery-widget-96be3fd .gallery-slide__media { width: 100%; }\n      #gallery-widget-96be3fd .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-96be3fd .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide img,\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 394px) and (max-width: 767px) {\n      #gallery-widget-96be3fd .gallery-slide__media { width: 100%; }\n      #gallery-widget-96be3fd .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-96be3fd .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide img,\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 768px) and (max-width: 1279px) {\n      #gallery-widget-96be3fd .gallery-slide__media { width: 100%; }\n      #gallery-widget-96be3fd .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-96be3fd .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide img,\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1280px) and (max-width: 1439px) {\n      #gallery-widget-96be3fd .gallery-slide__media { width: 100%; }\n      #gallery-widget-96be3fd .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-96be3fd .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide img,\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n                    @media (min-width: 1440px) {\n      #gallery-widget-96be3fd .gallery-slide__media { width: 100%; }\n      #gallery-widget-96be3fd .gallery-slide__text { width: var(--gallery-slide-image-width, 100%); max-width: var(--gallery-slide-image-width, 100%); white-space: normal; word-break: break-word; }\n      #gallery-widget-96be3fd .gallery-swiper { padding-right: 0; padding-bottom: 0; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide { width: auto; }\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide img,\n      #gallery-widget-96be3fd .gallery-swiper .swiper-slide video {\n        width: 100%;\n        max-width: 100%;\n                \/* A pixel height takes priority; otherwise crop to the chosen ratio. *\/\n        height: var(--hkb-gallery-image-height, auto);\n        max-height: var(--hkb-gallery-image-height, none);\n        aspect-ratio: var(--gallery-aspect-ratio);\n        object-fit: cover;\n              }\n    }\n      <\/style>\n        <div class=\"gallery-viewport\">\n    <div class=\"gallery-swiper swiper\">\n      <div class=\"swiper-wrapper\">\n                                                          <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"0\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/esyiAV10HZ.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/esyiAV10HZ.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"1\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/jPBqxb3Nw7.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/jPBqxb3Nw7.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"2\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/YTw3J2miKz.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/YTw3J2miKz.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"3\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/iPj7gpSXOr.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/iPj7gpSXOr.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"4\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/LhnD02RCHV.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/LhnD02RCHV.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"5\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/QtyFKSOeqA.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/QtyFKSOeqA.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"6\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/uWXfAvhc5m.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/uWXfAvhc5m.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"7\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/cqgQ3u50OC.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/cqgQ3u50OC.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"8\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/K4PpOb6Asi.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/K4PpOb6Asi.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                        <div class=\"swiper-slide gallery-slide\" data-gallery-index=\"9\" data-gallery-original=\"1\" data-media-type=\"image\" data-media-url=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/kBaCLTG09l.jpg\" data-media-mime=\"image\/jpeg\" data-media-alt=\"\" data-credit=\"\" data-description=\"\">\n                <span class=\"gallery-slide__media\">\n                                      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/kBaCLTG09l.jpg\" alt=\"\" \/>\n                                  <\/span>\n                              <\/div>\n                                    <\/div>\n    <\/div>\n\n        <div class=\"gallery-nav hidden-xs\">\n      <button class=\"gallery-btn custom-button-btn gallery-prev\" aria-label=\"\u4e0a\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/left_icon.svg\" alt=\"\">\n      <\/button>\n      <button class=\"gallery-btn custom-button-btn gallery-next\" aria-label=\"\u4e0b\u4e00\u9805\">\n      <img decoding=\"async\" src=\"https:\/\/www.hkballet.com\/wp-content\/themes\/hello-elementor-child\/assets\/img\/right_icon.svg\" alt=\"\">\n      <\/button>\n    <\/div>\n      <\/div>\n\n  <div class=\"gallery-footer\">\n    <span class=\"gallery-credit\"><\/span>\n\n  <\/div>\n\n    <div class=\"gallery-dot-wrap hidden-sm\" aria-label=\"\u5716\u7247\u5c0e\u89bd\"><\/div>\n  \n  <div class=\"gallery-lightbox\" aria-hidden=\"true\">\n    <div class=\"gallery-lightbox__panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5716\u7247\u9810\u89bd\">\n      <button class=\"gallery-lightbox__close\" type=\"button\" aria-label=\"\u95dc\u9589\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n          <path d=\"M15.9939 15.2322L15.2323 15.9938L0.000153744 0.761608L0.761762 0L15.9939 15.2322Z\" fill=\"white\" \/>\n          <path d=\"M0.761608 16L0 15.2384L15.2322 0.00623141L15.9938 0.76784L0.761608 16Z\" fill=\"white\" \/>\n        <\/svg>\n      <\/button>\n      <div class=\"gallery-lightbox__panel_content\">\n        <img class=\"gallery-lightbox__image\" alt=\"\u5716\u7247\" \/>\n        <video class=\"gallery-lightbox__video\" controls playsinline preload=\"metadata\" style=\"display:none;\"><\/video>\n        <div class=\"gallery-lightbox__meta\" data-lenis-prevent>\n          <div class=\"gallery-lightbox__meta-inner\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"gallery-lightbox__controls\">\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-prev\" type=\"button\" aria-label=\"\u4e0a\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-96be3fd-clip-prev)\">\n              <path d=\"M20.4199 9.33594L20.4199 10.6689L0.419922 10.6689L0.419922 9.33594L20.4199 9.33594Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 9.25334C4.13214 9.73162 7.33323 12.3276 9.14516 16.5683L8.07531 17.3649C6.41054 13.4686 3.49103 11.1339 0.405437 10.7067L0.677548 9.25334Z\" fill=\"white\" \/>\n              <path d=\"M0.677548 10.7467C4.13214 10.2684 7.33323 7.67236 9.14516 3.4317L8.07531 2.63514C6.41054 6.53138 3.49103 8.86608 0.405437 9.29327L0.677548 10.7467Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-96be3fd-clip-prev\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n        <div class=\"gallery-lightbox__progress-wrap\" aria-hidden=\"true\">\n          <span><\/span>\n        <\/div>\n        <button class=\"gallery-lightbox__arrow gallery-lightbox-next\" type=\"button\" aria-label=\"\u4e0b\u4e00\u5f35\u5716\u7247\">\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n            <g clip-path=\"url(#gallery-widget-96be3fd-clip-next)\">\n              <path d=\"M0 10.6641V9.33105L20 9.33105V10.6641L0 10.6641Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 10.7467C16.2878 10.2684 13.0867 7.67237 11.2748 3.4317L12.3446 2.63514C14.0094 6.53138 16.9289 8.86608 20.0145 9.29327L19.7424 10.7467Z\" fill=\"white\" \/>\n              <path d=\"M19.7424 9.25334C16.2878 9.73163 13.0867 12.3276 11.2748 16.5683L12.3446 17.3649C14.0094 13.4686 16.9289 11.1339 20.0145 10.7067L19.7424 9.25334Z\" fill=\"white\" \/>\n            <\/g>\n            <defs>\n              <clipPath id=\"gallery-widget-96be3fd-clip-next\">\n                <rect width=\"20\" height=\"20\" fill=\"white\" \/>\n              <\/clipPath>\n            <\/defs>\n          <\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function() {\n      var section = document.currentScript && document.currentScript.closest('.gallery-section');\n      if (!section) section = document.getElementById(\"gallery-widget-96be3fd\");\n      if (!section) return;\n      var gallerySwiper = null;\n      var slides = [];\n      var slideCount = 0;\n      var carouselSlideCount = 0;\n      var currentIndex = 0;\n      var captionFrame = 0;\n      var isSingle = false;\n      \/\/ Ordered list (smallest device first) of\n      \/\/ { name, mode:'auto'|'custom'|'height', spv, height, media, min }, or null.\n      \/\/ The ranges come from the site's active Elementor breakpoints, so the\n      \/\/ same media query decides here and in the CSS block above.\n      var slidesConfig = [{\"name\":\"mobile\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(max-width: 393px)\",\"min\":0},{\"name\":\"tablet\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 394px) and (max-width: 767px)\",\"min\":394},{\"name\":\"laptop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 768px) and (max-width: 1279px)\",\"min\":768},{\"name\":\"desktop\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1280px) and (max-width: 1439px)\",\"min\":1280},{\"name\":\"widescreen\",\"mode\":\"custom\",\"spv\":2.2,\"height\":0,\"media\":\"(min-width: 1440px)\",\"min\":1440}];\n      var swiperEl = section.querySelector(\".gallery-swiper\");\n\n      \/\/ The device entry matching the current viewport.\n      function currentConf() {\n        if (!slidesConfig || !slidesConfig.length) return null;\n        for (var i = 0; i < slidesConfig.length; i++) {\n          if (window.matchMedia(slidesConfig[i].media).matches) {\n            return slidesConfig[i];\n          }\n        }\n        return slidesConfig[slidesConfig.length - 1];\n      }\n\n      \/\/ Pixel-height mode uses proportional widths, independent of card counts.\n      function isCustomMode() {\n        var conf = currentConf();\n        return !!(conf && conf.mode === 'custom');\n      }\n\n      \/\/ Swiper breakpoint entry for one device.\n      function bpConf(conf) {\n        if (conf && conf.mode === 'custom') {\n          return { slidesPerView: conf.spv, spaceBetween: 4 };\n        }\n        return { slidesPerView: 'auto', spaceBetween: 4 };\n      }\n      var dotWrap = section.querySelector(\".gallery-dot-wrap\");\n      var credit = section.querySelector(\".gallery-credit\");\n      var creditTimer = 0;\n      var lightbox = section.querySelector(\".gallery-lightbox\");\n      var lightboxClose = section.querySelector(\".gallery-lightbox__close\");\n      var lightboxImage = section.querySelector(\".gallery-lightbox__image\");\n      var lightboxVideo = section.querySelector(\".gallery-lightbox__video\");\n      var lightboxMeta = section.querySelector(\".gallery-lightbox__meta\");\n      var lightboxMetaInner = section.querySelector(\".gallery-lightbox__meta-inner\");\n      var lightboxProgress = section.querySelector(\".gallery-lightbox__progress-wrap span\");\n      var lightboxPrev = section.querySelector(\".gallery-lightbox-prev\");\n      var lightboxNext = section.querySelector(\".gallery-lightbox-next\");\n      var galleryPrev = section.querySelector(\".gallery-prev\");\n      var galleryNext = section.querySelector(\".gallery-next\");\n      var activeLightboxIndex = 0;\n\n      function syncSlides() {\n        slides = Array.prototype.slice.call(section.querySelectorAll('.gallery-slide[data-gallery-original=\"1\"]'));\n        slideCount = slides.length;\n        carouselSlideCount = section.querySelectorAll(\".gallery-slide\").length;\n      }\n\n      function getSlideMedia(slide) {\n        return slide ? slide.querySelector(\"img, video\") : null;\n      }\n\n      function getLightboxMedia() {\n        if (lightboxVideo && lightboxVideo.style.display !== \"none\") {\n          return lightboxVideo;\n        }\n        return lightboxImage;\n      }\n\n      function stopLightboxVideo() {\n        if (!lightboxVideo) return;\n        lightboxVideo.pause();\n        lightboxVideo.removeAttribute(\"src\");\n        lightboxVideo.load();\n      }\n\n      function updateCaptionWidths() {\n        section.querySelectorAll('.gallery-slide').forEach(function(slide) {\n          var caption = slide.querySelector('.gallery-slide__text');\n          var image = getSlideMedia(slide);\n          if (!caption || !image) return;\n          var width = image.getBoundingClientRect().width;\n          if (width > 0) {\n            \/\/ Keep this value on the caption itself so fixed-card widths are\n            \/\/ measured after Swiper has finished sizing the slide.\n            caption.style.setProperty('--gallery-slide-image-width', width + 'px');\n          }\n        });\n      }\n\n      function updateGallerySize() {\n        if (gallerySwiper) gallerySwiper.update();\n        updateCaptionWidths();\n        if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n          gallerySwiper.updateAutoHeight(0);\n        }\n        scheduleCaptionWidths();\n      }\n\n      function scheduleCaptionWidths() {\n        window.cancelAnimationFrame(captionFrame);\n        captionFrame = window.requestAnimationFrame(function() {\n          if (!section.isConnected) return;\n          updateCaptionWidths();\n          if (gallerySwiper && gallerySwiper.updateAutoHeight) {\n            gallerySwiper.updateAutoHeight(0);\n          }\n        });\n      }\n\n      function updateSlideWidths() {\n        if (isSingle) {\n          updateCaptionWidths();\n          return;\n        }\n        \/\/ Custom mode: Swiper computes slide widths from slidesPerView, so clear\n        \/\/ any inline widths a previous 'auto' breakpoint may have set and let\n        \/\/ Swiper size the slides.\n        if (isCustomMode()) {\n          Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\")).forEach(function(slide) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n          });\n          updateGallerySize();\n          return;\n        }\n\n        var isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n        var conf = currentConf();\n        var hasPixelHeight = !!(conf && conf.mode === 'height');\n        var gallerySlides = Array.prototype.slice.call(section.querySelectorAll(\".gallery-slide\"));\n\n        gallerySlides.forEach(function(slide) {\n          var image = getSlideMedia(slide);\n\n          if ((isMobile && !hasPixelHeight) || !image) {\n            slide.style.width = \"\";\n            slide.style.removeProperty(\"--gallery-slide-image-width\");\n            return;\n          }\n\n          var imageWidth = image.getBoundingClientRect().width;\n          if (imageWidth > 0) {\n            slide.style.width = imageWidth + \"px\";\n            slide.style.setProperty(\"--gallery-slide-image-width\", imageWidth + \"px\");\n          }\n        });\n\n        updateGallerySize();\n      }\n\n      \/\/ Captions come from a rich-text field and may carry <br\/>. Escaping the\n      \/\/ whole string first, then re-enabling only the line breaks, keeps the\n      \/\/ markup out of the visible text without opening an HTML injection hole.\n      function setCaptionHtml(el, raw) {\n        el.textContent = raw;\n        if (el.innerHTML.indexOf(\"&lt;br\") !== -1) {\n          el.innerHTML = el.innerHTML.replace(\/&lt;br\\s*\\\/?&gt;\/gi, \"<br>\");\n        }\n      }\n\n      function updateCredit(index) {\n        if (!credit || !slides[index]) return;\n        var text = slides[index].getAttribute(\"data-credit\") || \"\";\n        window.clearTimeout(creditTimer);\n        credit.classList.add(\"is-transitioning\");\n        creditTimer = window.setTimeout(function() {\n          setCaptionHtml(credit, text);\n          credit.classList.remove(\"is-transitioning\");\n        }, 60);\n      }\n\n      function updateLightboxMetaWidth() {\n        var media = getLightboxMedia();\n        if (!lightbox || !media) return;\n        var imageWidth = media.getBoundingClientRect().width;\n        if (imageWidth > 0) {\n          lightbox.style.setProperty(\"--gallery-lightbox-image-width\", imageWidth + \"px\");\n        }\n      }\n\n      \/\/ Custom dots: slides are duplicated in the DOM to enable looping, so\n      \/\/ Swiper's built-in pagination would show one bullet per copy (e.g. 9\n      \/\/ dots for 3 images). Render one dot per original image instead.\n      function buildDots() {\n        if (!dotWrap) return;\n        dotWrap.innerHTML = \"\";\n        for (var i = 0; i < slideCount; i++) {\n          (function(target) {\n            var dot = document.createElement(\"button\");\n            dot.type = \"button\";\n            dot.className = \"swiper-pagination-bullet\";\n            dot.setAttribute(\"aria-label\", \"Go to slide \" + (target + 1));\n            dot.addEventListener(\"click\", function() {\n              if (gallerySwiper) gallerySwiper.slideToLoop(target);\n            });\n            dotWrap.appendChild(dot);\n          })(i);\n        }\n      }\n\n      function updateDots() {\n        if (!dotWrap) return;\n        var dots = dotWrap.children;\n        for (var i = 0; i < dots.length; i++) {\n          dots[i].classList.toggle(\"swiper-pagination-bullet-active\", i === currentIndex);\n        }\n      }\n\n      function setActiveIndex(index) {\n        if (!slideCount) return;\n        currentIndex = ((index % slideCount) + slideCount) % slideCount;\n        updateCredit(currentIndex);\n        updateDots();\n      }\n\n      function goToGalleryIndex(index) {\n        if (!gallerySwiper || !slideCount) return;\n        var targetIndex = ((index % slideCount) + slideCount) % slideCount;\n        if (typeof gallerySwiper.slideToLoop === \"function\") {\n          gallerySwiper.slideToLoop(targetIndex);\n        } else {\n          gallerySwiper.slideTo(targetIndex);\n        }\n        setActiveIndex(targetIndex);\n      }\n\n      function showNextGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex + 1);\n      }\n\n      function showPrevGallerySlide(event) {\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n        goToGalleryIndex(currentIndex - 1);\n      }\n\n      function openLightbox(index) {\n        activeLightboxIndex = index;\n        var slide = slides[index];\n        if (!slide || !lightbox || !lightboxImage || !lightboxMeta || !lightboxProgress) return;\n        var mediaType = slide.getAttribute(\"data-media-type\") || \"image\";\n        var mediaUrl = slide.getAttribute(\"data-media-url\") || \"\";\n        var mediaAlt = slide.getAttribute(\"data-media-alt\") || \"Gallery image\";\n        stopLightboxVideo();\n        if (mediaType === \"video\" && lightboxVideo) {\n          lightboxImage.style.display = \"none\";\n          lightboxImage.removeAttribute(\"src\");\n          lightboxVideo.style.display = \"\";\n          lightboxVideo.src = mediaUrl;\n          lightboxVideo.load();\n        } else {\n          lightboxImage.style.display = \"\";\n          if (lightboxVideo) lightboxVideo.style.display = \"none\";\n          lightboxImage.src = mediaUrl;\n          lightboxImage.alt = mediaAlt;\n        }\n        setCaptionHtml(lightboxMetaInner || lightboxMeta, slide.getAttribute(\"data-credit\") || \"\");\n        lightboxProgress.style.width = ((index + 1) \/ slideCount) * 100 + \"%\";\n        lightbox.classList.add(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"false\");\n        if (mediaType !== \"video\" && lightboxImage.complete) {\n          updateLightboxMetaWidth();\n        }\n        window.requestAnimationFrame(updateLightboxMetaWidth);\n        document.documentElement.style.overflow = \"hidden\";\n        document.body.style.overflow = \"hidden\";\n      }\n\n      function closeLightbox() {\n        if (!lightbox) return;\n        lightbox.classList.remove(\"is-open\");\n        lightbox.setAttribute(\"aria-hidden\", \"true\");\n        stopLightboxVideo();\n        document.documentElement.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      }\n\n      function showLightbox(index) {\n        if (!slideCount) return;\n        var nextIndex = ((index % slideCount) + slideCount) % slideCount;\n        openLightbox(nextIndex);\n      }\n\n      function showNextLightbox() {\n        showLightbox(activeLightboxIndex + 1);\n      }\n\n      function showPrevLightbox() {\n        showLightbox(activeLightboxIndex - 1);\n      }\n\n      function initGallerySwiper() {\n        if (!swiperEl || gallerySwiper) return;\n        syncSlides();\n        if (!slideCount) return;\n        if (isSingle) {\n          updateSlideWidths();\n          setActiveIndex(0);\n          return;\n        }\n        if (typeof Swiper === 'undefined') return;\n        buildDots();\n        updateSlideWidths();\n\n        \/\/ One Swiper breakpoint per active Elementor device, keyed by its\n        \/\/ min-width. Each device is auto or custom independently.\n        var breakpoints;\n        if (slidesConfig) {\n          breakpoints = {};\n          slidesConfig.forEach(function(conf) {\n            breakpoints[conf.min] = bpConf(conf);\n          });\n        } else {\n          breakpoints = {\n            0: {\n              slidesPerView: 1,\n              spaceBetween: 4,\n            },\n            769: {\n              slidesPerView: 'auto',\n              spaceBetween: 4,\n            },\n          };\n        }\n\n        gallerySwiper = new Swiper(swiperEl, {\n          slidesPerView: slidesConfig ? bpConf(currentConf()).slidesPerView : (window.innerWidth <= 768 ? 1 : 'auto'),\n          spaceBetween: 20,\n          autoHeight: true,\n          rewind: true,\n          loop: carouselSlideCount > 1,\n          loopAdditionalSlides: carouselSlideCount,\n          loopedSlides: carouselSlideCount,\n          watchOverflow: false,\n          breakpoints: breakpoints,\n          on: {\n            breakpoint: scheduleCaptionWidths,\n            loopFix: scheduleCaptionWidths,\n            resize: scheduleCaptionWidths,\n            init: function() {\n              updateSlideWidths();\n              setActiveIndex(this.realIndex || 0);\n            },\n            slideChange: function() {\n              setActiveIndex(this.realIndex || 0);\n            }\n          }\n        });\n        updateGallerySize();\n      }\n\n      if (swiperEl) {\n      swiperEl.addEventListener('click', function(event) {\n        var slide = event.target.closest('.gallery-slide');\n        if (!slide) return;\n        var index = parseInt(slide.getAttribute('data-gallery-index'), 10);\n        if (!isNaN(index)) {\n          showLightbox(index);\n        }\n      });\n      }\n\n      function onGalleryMediaLoad(event) {\n        var media = event.target;\n        if (!media.matches || !media.matches('.gallery-slide img, .gallery-slide video')) return;\n        if (mediaObserver) mediaObserver.observe(media);\n        updateSlideWidths();\n      }\n      \/\/ Capture loads from new loop slides too; cloned nodes do not retain\n      \/\/ listeners that were attached directly to the original media elements.\n      section.addEventListener('load', onGalleryMediaLoad, true);\n      section.addEventListener('loadedmetadata', onGalleryMediaLoad, true);\n\n      \/\/ Elementor controls and container resizing can change media dimensions\n      \/\/ without a window resize. Refresh caption widths after those changes too.\n      if (window.ResizeObserver) {\n        var sizeFrame = 0;\n        var mediaObserver = new ResizeObserver(function() {\n          window.cancelAnimationFrame(sizeFrame);\n          sizeFrame = window.requestAnimationFrame(function() {\n            if (!section.isConnected) {\n              mediaObserver.disconnect();\n              return;\n            }\n            updateSlideWidths();\n          });\n        });\n        section.querySelectorAll('.gallery-slide img, .gallery-slide video').forEach(function(media) {\n          mediaObserver.observe(media);\n        });\n      }\n\n      if (lightboxNext) lightboxNext.addEventListener('click', showNextLightbox);\n      if (lightboxPrev) lightboxPrev.addEventListener('click', showPrevLightbox);\n      if (galleryNext) galleryNext.addEventListener('click', showNextGallerySlide);\n      if (galleryPrev) galleryPrev.addEventListener('click', showPrevGallerySlide);\n      if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n      if (lightboxImage) lightboxImage.addEventListener('load', updateLightboxMetaWidth);\n      if (lightboxVideo) lightboxVideo.addEventListener('loadedmetadata', updateLightboxMetaWidth);\n      if (lightboxMeta) {\n        lightboxMeta.addEventListener('wheel', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n\n        lightboxMeta.addEventListener('touchmove', function(event) {\n          if (lightboxMeta.scrollHeight > lightboxMeta.clientHeight) {\n            event.stopPropagation();\n          }\n        }, { passive: true });\n      }\n      if (lightbox) lightbox.addEventListener('click', function(event) {\n        if (event.target === lightbox) closeLightbox();\n      });\n\n      document.addEventListener('keydown', function(event) {\n        if (!lightbox || !lightbox.classList.contains(\"is-open\")) return;\n        if (event.key === \"Escape\" && lightbox.classList.contains(\"is-open\")) closeLightbox();\n        if (event.key === \"ArrowRight\" && lightbox.classList.contains(\"is-open\")) showNextLightbox();\n        if (event.key === \"ArrowLeft\" && lightbox.classList.contains(\"is-open\")) showPrevLightbox();\n      });\n\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initGallerySwiper);\n      } else {\n        initGallerySwiper();\n      }\n\n      window.addEventListener('load', initGallerySwiper);\n      window.addEventListener('load', updateSlideWidths);\n      window.addEventListener('resize', function() {\n        updateSlideWidths();\n        updateLightboxMetaWidth();\n      });\n    })();\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2470\" class=\"elementor-element elementor-element-aae9f08 e-con-full e-flex e-con e-child\" data-id=\"aae9f08\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d29a877 elementor-widget-tablet__width-inherit elementor-widget elementor-widget-heading\" data-id=\"d29a877\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2015\u300a\u6728\u5076\u5947\u9047\u8a18\u300b\u514d\u8cbb\u6559\u80b2\u8b1b\u5ea7\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b68f00b gotham-regular elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"b68f00b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>\u300a\u6728\u5076\u5947\u9047\u8a18\u300b\u514d\u8cbb\u6559\u80b2\u8b1b\u5ea7\u5df2\u65bc2015\u5e746\u81f37\u6708\u671f\u9593\u5728\u5404\u5340\u5c0f\u5b78\u53ca\u570b\u969b\u5b78\u6821\u8209\u884c\uff0c\u6559\u80b2\u53ca\u5916\u5c55\u90e8\u5718\u968a\u6210\u529f\u900f\u904e\u82ad\u857e\u5c0e\u51fa\u9019\u500b\u8aa0\u5be6\u3001\u52c7\u6c23\u8207\u611b\u5fc3\u7684\u7ae5\u8a71\u6545\u4e8b\uff0c\u8207\u540c\u5b78\u5011\u63a2\u8a0e\u300a\u6728\u5076\u5947\u9047\u8a18\u300b\u6545\u4e8b\u80cc\u666f\u3001\u89d2\u8272\u3001\u97f3\u6a02\u53ca\u670d\u98fe\uff0c\u4ee4\u5c0f\u670b\u53cb\u7d1b\u7d1b\u5c0d\u85dd\u8853\u7522\u751f\u8208\u8da3\uff0c\u5f9e\u6a02\u8da3\u7576\u4e2d\u8a8d\u8b58\u82ad\u857e\u821e\u5287\u80cc\u5f8c\u7684\u60a0\u9577\u6b77\u53f2\u3001\u5b78\u7fd2\u821e\u53f0\u77e5\u8b58\u548c\u82ad\u857e\u821e\u8e48\u52d5\u4f5c\u3002\u540c\u5b78\u5011\u9084\u65bc\u4e92\u52d5\u74b0\u7bc0\u4e2d\u5373\u5e2d\u8207\u9999\u6e2f\u82ad\u857e\u821e\u5718\u821e\u8e48\u54e1\u5b78\u7fd2\u82ad\u857e\u821e\u57fa\u672c\u52d5\u4f5c\u53ca\u9ed8\u5287\u6f14\u6280\uff0c\u5b78\u751f\u53cd\u61c9\u5341\u5206\u71b1\u70c8\uff0c\u5927\u5bb6\u90fd\u6975\u4e4b\u4eab\u53d7\u9019\u4e00\u6b21\u7684\u7bc0\u76ee\uff0c\u4e26\u7372\u5f97\u6240\u6709\u8001\u5e2b\u53ca\u6821\u9577\u7684\u4e00\u81f4\u597d\u8a55\u3002   <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e8572b4 elementor-widget elementor-widget-image\" data-id=\"e8572b4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"360\" src=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho-1024x461.jpg\" class=\"elementor-animation-grow attachment-large size-large wp-image-35170\" alt=\"\" srcset=\"https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho-1024x461.jpg 1024w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho-300x135.jpg 300w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho-768x346.jpg 768w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho-1536x691.jpg 1536w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho-600x270.jpg 600w, https:\/\/www.hkballet.com\/wp-content\/uploads\/2026\/06\/ra0jPMw5Ho.jpg 1920w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a0cf33c e-flex e-con-boxed e-con e-parent\" data-id=\"a0cf33c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ca59439 elementor-widget elementor-widget-heading\" data-id=\"ca59439\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u60a8\u53ef\u80fd\u4e5f\u559c\u6b61... <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9465af1 elementor-grid-widescreen-2 elementor-grid-tablet-1 elementor-grid-3 elementor-grid-mobile-1 elementor-widget elementor-widget-loop-grid\" data-id=\"9465af1\" data-element_type=\"widget\" data-settings=\"{&quot;template_id&quot;:3011,&quot;columns_widescreen&quot;:2,&quot;columns_tablet&quot;:1,&quot;row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:20,&quot;sizes&quot;:[]},&quot;_skin&quot;:&quot;post&quot;,&quot;columns&quot;:&quot;3&quot;,&quot;columns_mobile&quot;:&quot;1&quot;,&quot;edit_handle_selector&quot;:&quot;[data-elementor-type=\\&quot;loop-item\\&quot;]&quot;,&quot;row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_widescreen&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"loop-grid.post\">\n\t\t\t\t\t\t\t<div class=\"e-loop-nothing-found-message\">\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":22590,"template":"","engage_category":[388],"class_list":["post-26510","engage","type-engage","status-publish","has-post-thumbnail","hentry","engage_category-388"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/engage\/26510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/engage"}],"about":[{"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/types\/engage"}],"version-history":[{"count":0,"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/engage\/26510\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/media\/22590"}],"wp:attachment":[{"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/media?parent=26510"}],"wp:term":[{"taxonomy":"engage_category","embeddable":true,"href":"https:\/\/www.hkballet.com\/zh-hant\/wp-json\/wp\/v2\/engage_category?post=26510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}