{"id":30039,"date":"2025-05-23T01:50:17","date_gmt":"2025-05-23T07:50:17","guid":{"rendered":"https:\/\/join-us.esf.edu.hk\/?page_id=30039"},"modified":"2025-07-02T20:30:03","modified_gmt":"2025-07-03T02:30:03","slug":"esf-post-16-education-offerings-for-years-12-13","status":"publish","type":"page","link":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/","title":{"rendered":"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"30039\" class=\"elementor elementor-30039 elementor-29668\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e946def e-flex e-con-boxed e-con e-parent\" data-id=\"e946def\" 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<div class=\"elementor-element elementor-element-2e15ea0 e-flex e-con-boxed e-con e-child\" data-id=\"2e15ea0\" 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<div class=\"elementor-element elementor-element-c51f2f2 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"c51f2f2\" data-element_type=\"container\" data-settings=\"{&quot;background_motion_fx_scale_effect&quot;:&quot;yes&quot;,&quot;background_motion_fx_scale_direction&quot;:&quot;in-out&quot;,&quot;background_motion_fx_scale_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:2,&quot;sizes&quot;:[]},&quot;background_motion_fx_scale_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:59}},&quot;background_motion_fx_range&quot;:&quot;viewport&quot;,&quot;animation&quot;:&quot;fadeIn&quot;,&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b4ef2e elementor-widget elementor-widget-jet-woo-product-gallery-slider\" data-id=\"9b4ef2e\" data-element_type=\"widget\" data-settings=\"{&quot;pagination_thumbnails_columns_mobile&quot;:&quot;4&quot;,&quot;pagination_thumbnails_space_between_mobile&quot;:6,&quot;pagination_thumbnails_columns&quot;:4,&quot;pagination_thumbnails_space_between&quot;:10}\" data-widget_type=\"jet-woo-product-gallery-slider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"jet-woo-product-gallery\" data-gallery-settings=\"{&quot;enableGallery&quot;:false,&quot;enableZoom&quot;:false,&quot;zoomMagnify&quot;:1,&quot;caption&quot;:true,&quot;zoom&quot;:true,&quot;fullscreen&quot;:true,&quot;share&quot;:true,&quot;counter&quot;:true,&quot;arrows&quot;:true,&quot;hasVideo&quot;:false,&quot;videoType&quot;:&quot;&quot;,&quot;videoIn&quot;:&quot;content&quot;,&quot;videoAutoplay&quot;:false,&quot;videoLoop&quot;:false,&quot;videoFirst&quot;:false}\"><div class=\"jet-woo-product-gallery__content \" data-featured-image=\"\">\r\n\t<div class=\"jet-woo-swiper jet-woo-swiper-horizontal jet-gallery-swiper-horizontal-pos-bottom\">\r\n\t\t<div class=\"jet-gallery-swiper-slider\">\r\n\t\t\t<div class=\"jet-woo-product-gallery-slider swiper-container\" data-swiper-settings=\"{&quot;autoHeight&quot;:false,&quot;centeredSlides&quot;:false,&quot;direction&quot;:&quot;horizontal&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;longSwipesRatio&quot;:0.8,&quot;showNavigation&quot;:true,&quot;showPagination&quot;:true,&quot;loop&quot;:true,&quot;paginationControllerType&quot;:&quot;bullets&quot;,&quot;paginationType&quot;:&quot;thumbnails&quot;,&quot;dynamicBullets&quot;:false}\" data-swiper-thumb-settings=\"{&quot;direction&quot;:&quot;horizontal&quot;,&quot;showNavigation&quot;:false,&quot;breakpoints&quot;:{&quot;0&quot;:{&quot;slidesPerView&quot;:&quot;4&quot;,&quot;spaceBetween&quot;:6},&quot;768&quot;:{&quot;slidesPerView&quot;:&quot;&quot;,&quot;spaceBetween&quot;:&quot;&quot;},&quot;1025&quot;:{&quot;slidesPerView&quot;:4,&quot;spaceBetween&quot;:10}}}\" dir=\"ltr\" >\r\n\t\t\t\t<div class=\"swiper-wrapper\">\r\n\t\t\t\t\t\r\n<div class=\"jet-woo-product-gallery__image-item swiper-slide\">\r\n\t<div class=\"jet-woo-product-gallery__image\">\r\n\t\t<a class=\"jet-woo-product-gallery__image-link\" href=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg\" itemprop=\"image\" title=\"westisland_6595\" rel=\"prettyPhoto[jet-gallery]\" data-e-disable-page-transition=\"\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_6595\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg\" data-large_image_width=\"2048\" data-large_image_height=\"1536\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg 1500w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1536x1152.jpg 1536w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a>\t<\/div>\r\n<\/div>\r\n<div class=\"jet-woo-product-gallery__image-item swiper-slide\">\r\n\t<div class=\"jet-woo-product-gallery__image\">\r\n\t\t<a class=\"jet-woo-product-gallery__image-link\" href=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg\" itemprop=\"image\" title=\"westisland_7054\" rel=\"prettyPhoto[jet-gallery]\" data-e-disable-page-transition=\"\"><img decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-1500x1125.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_7054\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg\" data-large_image_width=\"2048\" data-large_image_height=\"1536\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-1500x1125.jpg 1500w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-1536x1152.jpg 1536w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a>\t<\/div>\r\n<\/div>\r\n<div class=\"jet-woo-product-gallery__image-item swiper-slide\">\r\n\t<div class=\"jet-woo-product-gallery__image\">\r\n\t\t<a class=\"jet-woo-product-gallery__image-link\" href=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg\" itemprop=\"image\" title=\"westisland_6498\" rel=\"prettyPhoto[jet-gallery]\" data-e-disable-page-transition=\"\"><img decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-1500x1125.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_6498\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg\" data-large_image_width=\"2048\" data-large_image_height=\"1536\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-1500x1125.jpg 1500w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-1536x1152.jpg 1536w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a>\t<\/div>\r\n<\/div>\r\n<div class=\"jet-woo-product-gallery__image-item swiper-slide\">\r\n\t<div class=\"jet-woo-product-gallery__image\">\r\n\t\t<a class=\"jet-woo-product-gallery__image-link\" href=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" itemprop=\"image\" title=\"westisland_6968-scaled-e1748511974794\" rel=\"prettyPhoto[jet-gallery]\" data-e-disable-page-transition=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_6968-scaled-e1748511974794\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" data-large_image_width=\"1024\" data-large_image_height=\"768\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg 1024w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1-768x576.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a>\t<\/div>\r\n<\/div>\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<span class=\"jet-product-gallery-icon jet-swiper-nav jet-swiper-button-prev\"><i aria-hidden=\"true\" class=\"fas fa-angle-left\"><\/i><\/span><span class=\"jet-product-gallery-icon jet-swiper-nav jet-swiper-button-next\"><i aria-hidden=\"true\" class=\"fas fa-angle-right\"><\/i><\/span>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\r\n\t\t\r\n<div class=\"jet-gallery-swiper-thumb\">\r\n\t<div class=\"jet-woo-swiper-control-nav jet-woo-swiper-gallery-thumbs swiper-container\">\r\n\t\t<div class=\"swiper-wrapper\">\r\n\t\t\t<div data-thumb=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg\" class=\"jet-woo-swiper-control-thumbs__item swiper-slide\"><div class=\"jet-woo-swiper-control-thumbs__item-image\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"338\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-450x338.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_6595\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg\" data-large_image_width=\"2048\" data-large_image_height=\"1536\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg 1500w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1536x1152.jpg 1536w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-scaled.jpg 2048w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/div><\/div><div data-thumb=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg\" class=\"jet-woo-swiper-control-thumbs__item swiper-slide\"><div class=\"jet-woo-swiper-control-thumbs__item-image\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"338\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-450x338.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_7054\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg\" data-large_image_width=\"2048\" data-large_image_height=\"1536\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-1500x1125.jpg 1500w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-1536x1152.jpg 1536w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_7054-scaled.jpg 2048w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/div><\/div><div data-thumb=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg\" class=\"jet-woo-swiper-control-thumbs__item swiper-slide\"><div class=\"jet-woo-swiper-control-thumbs__item-image\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"338\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-450x338.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_6498\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg\" data-large_image_width=\"2048\" data-large_image_height=\"1536\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-1500x1125.jpg 1500w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-1536x1152.jpg 1536w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6498-scaled.jpg 2048w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/div><\/div><div data-thumb=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" class=\"jet-woo-swiper-control-thumbs__item swiper-slide\"><div class=\"jet-woo-swiper-control-thumbs__item-image\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"338\" src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1-450x338.jpg\" class=\"wp-post-gallery\" alt=\"\" title=\"westisland_6968-scaled-e1748511974794\" data-caption=\"\" data-src=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" data-large_image=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg\" data-large_image_width=\"1024\" data-large_image_height=\"768\" srcset=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1-450x338.jpg 450w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1-768x576.jpg 768w, https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6968-scaled-e1748511974794-1.jpg 1024w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/div><\/div>\t\t<\/div>\r\n\t\t\t<\/div>\r\n<\/div>\r\n\r\n\t<\/div>\r\n\r\n\t\r\n<\/div>\r\n<\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c521b73 e-con-full e-flex e-con e-child\" data-id=\"c521b73\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa6a4ff elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"aa6a4ff\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:100}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-08d01c6 lastp-nopad elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"08d01c6\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">\u6b61\u8fce\u4f86\u5230\u6fc0\u52d5\u4eba\u5fc3\u7684\u9ad8\u4e2d\u968e\u6bb5\uff01\u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u591a\u7a2e\u5347\u5b78\u9014\u5f91\uff0c\u70ba\u672a\u4f86\u7684\u5927\u5b78\u3001\u5c31\u696d\u53ca\u6821\u5916\u751f\u6d3b\u505a\u597d\u6e96\u5099\u3002\u5728\u9078\u64c7\u5347\u5b78\u65b9\u5411\u548c\u79d1\u76ee\u7d44\u5408\u4e4b\u524d\uff0c\u6211\u5011\u9f13\u52f5\u5b78\u751f\u5411\u8001\u5e2b\u548c\u9ad8\u7b49\u6559\u80b2\u8aee\u8a62\u8001\u5e2b\u5fb5\u8a62\u610f\u898b\u3002  <br \/><\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u82f1\u57fa\u70baYears 12-13\u7684\u5b78\u751f\u63d0\u4f9b\u4ee5\u4e0b3\u7a2e\u512a\u8cea\u8ab2\u7a0b\uff0c\u5168\u9762\u6eff\u8db3\u4e0d\u540c\u8208\u8da3\u8207\u5fd7\u5411\u3002<\/span><\/p>\n\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<\/div>\n\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-e7c0636 e-flex e-con-boxed e-con e-parent\" data-id=\"e7c0636\" 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-5b7bc06 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"5b7bc06\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>16+ Options across ESF<\/title>\n    <style>\n        \/* Remove default padding and margins *\/\n        html,\n        body {\n            margin: 0 !important;\n            padding: 0 !important;\n        }\n\n        \/* Generic container reset *\/\n        .section,\n        .container,\n        .column,\n        .widget,\n        .widget-wrap {\n            margin: 0 !important;\n            padding: 0 !important;\n        }\n\n        \/* Tab styles *\/\n        .tab-container {\n            width: 100%;\n            margin-bottom: 20px;\n        }\n\n        .tab-buttons {\n            display: flex;\n            background-color: #f1f1f1;\n            border-radius: 8px 8px 0 0;\n            overflow: hidden;\n        }\n\n        .tab-button {\n            flex: 1;\n            padding: 15px 20px;\n            background-color: #f1f1f1;\n            border: none;\n            cursor: pointer;\n            font-size: 16px;\n            font-weight: 600;\n            color: #666;\n            transition: all 0.3s ease;\n        }\n\n        .tab-button:hover {\n            background-color: #e0e0e0;\n        }\n\n        .tab-button.active {\n            background-color: #A70337;\n            color: white;\n        }\n\n\n        .tab-content.active {\n            display: block;\n        }\n\n        \/* Essential CSS for functionality *\/\n        .highlight-cell {\n            background-color: #F8D7DA !important;\n            font-weight: bold !important;\n        }\n\n        .group-header {\n            background-color: #FDF2F4 !important;\n            font-weight: bold !important;\n            color: #A70337 !important;\n        }\n\n        .group-toggle {\n            transition: transform 0.3s ease;\n        }\n\n        .group-toggle.expanded {\n            transform: rotate(180deg);\n        }\n\n        .card-arrow {\n            transition: transform 0.3s ease;\n        }\n\n        .card-arrow.expanded {\n            transform: rotate(180deg);\n        }\n\n        \/* Mobile view improvements *\/\n        .mobile-group {\n            margin-bottom: 16px;\n            border-radius: 8px;\n            overflow: hidden;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        }\n\n        .mobile-group-header {\n            background: #A70337;\n            color: white;\n            padding: 12px 16px;\n            font-weight: bold;\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n\n        .mobile-group-content {\n            background: white;\n            max-height: 0 !important;\n            overflow: hidden;\n            transition: max-height 0.3s ease;\n            display: block !important;\n        }\n\n        .mobile-group-content.expanded {\n            max-height: 2000px !important;\n        }\n\n        .compact-card {\n            padding: 12px 16px;\n            border-bottom: 1px solid #f0f0f0;\n            cursor: pointer;\n            transition: background-color 0.2s ease;\n        }\n\n        .compact-card:hover {\n            background-color: #FDE8EB;\n        }\n\n        .compact-card.expanded {\n            background-color: #FDF2F4;\n        }\n\n        .card-details {\n            max-height: 0;\n            overflow: hidden;\n            transition: max-height 0.3s ease;\n            margin-top: 0;\n        }\n\n        .card-details.expanded {\n            max-height: 500px;\n            margin-top: 12px;\n        }\n\n        .mobile-pagination {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            gap: 10px;\n            margin-top: 20px;\n            padding: 16px;\n            background: white;\n            border-radius: 8px;\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        }\n\n        .page-btn {\n            padding: 8px 12px;\n            border: 1px solid #A70337;\n            background: white;\n            color: #A70337;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 14px;\n        }\n\n        .page-btn.active {\n            background: #A70337;\n            color: white;\n        }\n\n        .page-btn:disabled {\n            opacity: 0.5;\n            cursor: not-allowed;\n        }\n\n        .mobile-filters {\n            position: sticky;\n            top: 0;\n            z-index: 100;\n            background: white;\n            border-bottom: 2px solid #A70337;\n            margin-bottom: 16px;\n        }\n\n        .results-count {\n            text-align: center;\n            padding: 8px;\n            background: #FDF2F4;\n            color: #A70337;\n            font-weight: bold;\n            border-radius: 4px;\n            margin-bottom: 16px;\n        }\n\n        .filter-toggle {\n            transition: all 0.3s ease;\n        }\n\n        .filter-toggle:hover {\n            color: #A70337 !important;\n        }\n\n        .filters-panel {\n            transition: all 0.3s ease;\n            max-height: 0;\n            overflow: hidden;\n            opacity: 0;\n        }\n\n        .filters-panel.open {\n            max-height: 500px;\n            opacity: 1;\n        }\n\n        @media (max-width: 900px) {\n            .table-container {\n                display: none !important;\n            }\n\n            .mobile-cards {\n                display: block !important;\n            }\n\n            .mobile-pagination {\n                display: flex !important;\n            }\n\n            .tab-buttons {\n                flex-direction: column;\n            }\n\n            \/* Hide filter toggle on mobile and always show filters *\/\n            .filter-toggle {\n                display: none !important;\n            }\n\n            .filters-panel {\n                display: flex !important;\n                opacity: 1 !important;\n                max-height: none !important;\n            }\n\n            \/* Navigation Row adjustments for mobile *\/\n            .navigation-row {\n                flex-direction: row !important;\n                justify-content: flex-start !important;\n                align-items: center !important;\n                margin-bottom: 15px !important;\n                gap: 10px !important;\n            }\n\n            .tab-navigation {\n                justify-content: flex-start !important;\n                gap: 8px !important;\n                flex-wrap: nowrap !important;\n                flex: 1;\n                overflow-x: auto;\n                display: flex !important;\n            }\n\n            \/* Tab button adjustments for mobile *\/\n            .tab-button,\n            .esf-nav-btn {\n                font-size: 13px !important;\n                padding: 8px 12px !important;\n                white-space: nowrap !important;\n                min-width: auto !important;\n            }\n\n            \/* Container padding reduction for mobile *\/\n            body>div {\n                padding: 10px !important;\n            }\n\n            \/* Content margin reduction for mobile *\/\n            .esf-tab-panel>div[style*=\"margin: 20px\"] {\n                margin: 10px !important;\n            }\n\n            \/* Ensure navigation stays horizontal on all mobile sizes *\/\n            .navigation-row {\n                flex-direction: row !important;\n                flex-wrap: nowrap !important;\n            }\n\n            .tab-navigation {\n                flex-direction: row !important;\n            }\n\n            \/* Filter panel behavior for mobile *\/\n            .filters-panel {\n                display: none !important;\n                margin: 10px !important;\n            }\n\n            .filters-panel.open {\n                display: flex !important;\n                max-height: 500px !important;\n                opacity: 1 !important;\n            }\n        }\n\n        \/* Override any smaller screen rules to keep horizontal layout *\/\n        @media (max-width: 768px) {\n            .navigation-row {\n                flex-direction: row !important;\n                justify-content: flex-start !important;\n                align-items: center !important;\n            }\n\n            .tab-navigation {\n                flex-direction: row !important;\n                justify-content: flex-start !important;\n            }\n\n            .filter-toggle {\n                margin-left: 0 !important;\n                order: 2 !important;\n            }\n\n            \/* Enhanced pill-style filters for mobile *\/\n            .filters-panel select {\n                border: 2px solid #A70337 !important;\n                border-radius: 9999px !important;\n                padding: 4px 12px !important;\n                background-color: #fff !important;\n                color: #A70337 !important;\n                font-weight: 600 !important;\n                font-size: 8px !important;\n                line-height: 1.2 !important;\n                appearance: none !important;\n                -webkit-appearance: none !important;\n                -moz-appearance: none !important;\n                background-image: url(\"data:image\/svg+xml;charset=UTF-8,%3csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23A70337' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c\/polyline%3e%3c\/svg%3e\") !important;\n                background-repeat: no-repeat !important;\n                background-position: right 12px center !important;\n                background-size: 16px !important;\n                padding-right: 20px !important;\n                min-height: 40px !important;\n                transition: all 0.2s ease !important;\n            }\n\n            .filters-panel select:focus {\n                outline: none !important;\n                border-color: #8B0229 !important;\n                box-shadow: 0 0 0 3px rgba(167, 3, 55, 0.1) !important;\n            }\n\n            \/* Ensure the three selects line up nicely *\/\n            .filters-panel {\n                flex-direction: row !important;\n                flex-wrap: nowrap !important;\n                overflow-x: visible;\n                gap: 8px !important;\n                padding: 16px !important;\n                border: none !important;\n                box-shadow: none !important;\n            }\n\n            .filters-panel>div {\n                flex: 1 1 calc(33.333% - 8px) !important;\n                min-width: 0 !important;\n                max-width: calc(33.333% - 8px) !important;\n            }\n\n            \/* Hide reset button on mobile *\/\n            .filters-panel>div:last-child {\n                display: none !important;\n            }\n\n            \/* Hide labels on mobile for cleaner look *\/\n            .filters-panel>div>div[style*=\"font-weight: 600\"] {\n                display: none !important;\n            }\n        }\n\n        @media (min-width: 901px) {\n            .mobile-cards {\n                display: none !important;\n            }\n\n            .mobile-pagination {\n                display: none !important;\n            }\n        }\n\n        \/* Force display properties for compatibility *\/\n        .navigation-row {\n            display: flex !important;\n            justify-content: flex-start !important;\n            align-items: center !important;\n            margin-bottom: 20px !important;\n            flex-wrap: wrap !important;\n        }\n\n        .tab-navigation {\n            display: flex !important;\n            gap: 20px !important;\n            align-items: flex-start !important;\n            flex-wrap: wrap !important;\n        }\n\n        .tab-button {\n            display: inline-block !important;\n            padding: 12px 20px !important;\n            background: transparent !important;\n            border: none !important;\n            cursor: pointer !important;\n            font-size: 16px !important;\n            font-weight: 600 !important;\n            transition: all 0.2s ease !important;\n            white-space: nowrap !important;\n            position: relative !important;\n            min-width: 80px !important;\n            text-align: center !important;\n        }\n\n        .tab-button.active,\n        .esf-nav-btn.active {\n            color: #A70337 !important;\n            border-bottom: 3px solid #A70337 !important;\n            background: transparent !important;\n        }\n\n        .tab-button:not(.active),\n        .esf-nav-btn:not(.active) {\n            color: #999 !important;\n            border-bottom: 3px solid transparent !important;\n            background: transparent !important;\n        }\n\n        .tab-button:hover,\n        .esf-nav-btn:hover {\n            color: #A70337 !important;\n            background: transparent !important;\n        }\n\n\n        .tab-content.active {\n            display: block !important;\n        }\n\n        .filter-toggle {\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            margin-left: auto !important;\n            display: none !important;\n        }\n\n        \/* Mobile responsive *\/\n        @media (max-width: 768px) {\n            .navigation-row {\n                flex-direction: column !important;\n                gap: 15px !important;\n            }\n\n            .tab-navigation {\n                width: 100% !important;\n                justify-content: flex-start !important;\n            }\n\n            .filter-toggle {\n                margin-left: 0 !important;\n            }\n        }\n\n        .mobile-group-header {\n            background: #A70337;\n            color: white;\n            padding: 12px 16px;\n            font-weight: bold;\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n\n\n        .mobile-card {\n            border-bottom: 1px solid #eee;\n            padding: 16px;\n            cursor: pointer;\n            transition: background-color 0.2s ease;\n        }\n\n        .mobile-card:hover {\n            background-color: #FDE8EB;\n        }\n\n        .mobile-card.expanded {\n            background-color: #FDF2F4;\n        }\n\n\n\n        .page-btn {\n            padding: 8px 12px;\n            border: 1px solid #A70337;\n            background: white;\n            color: #A70337;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 14px;\n        }\n\n        .page-btn.active {\n            background: #A70337;\n            color: white;\n        }\n\n        .page-btn:disabled {\n            opacity: 0.5;\n            cursor: not-allowed;\n        }\n\n        .mobile-filters {\n            position: sticky;\n            top: 0;\n            z-index: 100;\n            background: white;\n            border-bottom: 2px solid #A70337;\n            margin-bottom: 16px;\n        }\n\n        .results-count {\n            text-align: center;\n            padding: 8px;\n            background: #FDF2F4;\n            color: #A70337;\n            font-weight: bold;\n            border-radius: 4px;\n            margin-bottom: 16px;\n        }\n\n        .mobile-pagination {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            gap: 10px;\n            margin: 20px 0;\n        }\n\n        .filters-panel {\n            transition: all 0.3s ease;\n        }\n\n        @media (idth: 768px) {\n            .table-container {\n                display: none;\n            }\n\n            .mobile-cards {\n                display: block;\n            }\n\n            .mobile-pagination {\n                display: flex;\n            }\n        }\n\n        @media (min-width: 769px) {\n            .mobile-cards {\n                display: none;\n            }\n\n            .mobile-pagination {\n                display: none;\n            }\n        }\n\n        .esf-nav-btn {\n            display: inline-block !important;\n            padding: 12px 20px !important;\n            background: transparent !important;\n            border: none !important;\n            cursor: pointer !important;\n            font-size: 16px !important;\n            font-weight: 600 !important;\n            transition: all 0.2s ease !important;\n            white-space: nowrap !important;\n            position: relative !important;\n            min-width: 80px !important;\n            text-align: center !important;\n        }\n\n        .esf-nav-btn.active {\n            color: #A70337 !important;\n            border-bottom: 3px solid #A70337 !important;\n        }\n\n        .esf-nav-btn:not(.active) {\n            color: #999 !important;\n            border-bottom: 3px solid transparent !important;\n        }\n\n        .esf-nav-btn:hover {\n            color: #A70337 !important;\n        }\n\n        .esf-tab-panel {\n            display: none !important;\n        }\n\n        .esf-tab-panel.active {\n            display: block !important;\n        }\n\n        \/* Desktop: Hide filter toggle and show filters by default *\/\n        @media (min-width: 901px) {\n            .filter-toggle {\n                display: none !important;\n            }\n\n            .filters-panel {\n                display: flex !important;\n                opacity: 1 !important;\n                max-height: none !important;\n            }\n        }\n\n        \/* Custom styling for headings and paragraphs *\/\n        .heading-title,\n        .main-heading {\n            font-size: 32px !important;\n            font-weight: 400 !important;\n            font-family: \"Moranga\", Sans-serif !important;\n            line-height: 1.4 !important;\n        }\n\n        p {\n            font-weight: 400 !important;\n            font-family: 'Cerebri Sans', sans-serif !important;\n            font-size: 16px !important;\n            line-height: 1.5 !important;\n        }\n\n        \/* Style for bullet point content sections *\/\n        .esf-tab-panel div[style*=\"margin: 16px 0\"] {\n            font-family: 'Cerebri Sans', sans-serif !important;\n            font-size: 16px !important;\n            line-height: 1.5 !important;\n            font-weight: 400 !important;\n        }\n\n        \/* Mobile typography *\/\n        @media (max-width: 900px) {\n\n            .heading-title,\n            .main-heading {\n                font-size: 28px !important;\n            }\n        }\n    <\/style>\n<\/head>\n\n<body style=\"margin: 0; padding: 20px; line-height: 1.6;\">\n    <div class=\"no-translate  notranslate main-container\">\n        <div\n            style=\"max-width: 1280px; margin: 0 auto; padding: 0px; background-color: white; border-radius: 8px; position: relative;\">\n\n            <!-- Navigation Row -->\n            <div class=\"no-translate  notranslate navigation-row\"\n                style=\"display: flex !important; justify-content: flex-start; align-items: center; margin-bottom: 20px; flex-wrap: row;\">\n                <!-- Tab Navigation Buttons -->\n                <div class=\"no-translate  notranslate tab-navigation\"\n                    style=\"display: flex !important; gap: 20px; align-items: center; flex-wrap: wrap;\">\n                    <button class=\"no-translate  notranslate esf-nav-btn active\" onclick=\"showTab('dp')\"\n                        style=\"padding: 12px 20px; background: transparent; color: #A70337; border: none; cursor: pointer; font-size: 16px; font-weight: 600; transition: all 0.2s ease; white-space: nowrap; border-bottom: 3px solid #A70337; position: relative; min-width: 80px;\">IB\n                        DP<\/button>\n                    <button class=\"no-translate  notranslate esf-nav-btn\" onclick=\"showTab('cp-btec')\"\n                        style=\"padding: 12px 20px; background: transparent; color: #999; border: none; cursor: pointer; font-size: 16px; font-weight: 600; transition: all 0.2s ease; white-space: nowrap; border-bottom: 3px solid transparent; min-width: 80px;\">IB\n                        CP<\/button>\n                    <button class=\"no-translate  notranslate esf-nav-btn\" onclick=\"showTab('btec')\"\n                        style=\"padding: 12px 20px; background: transparent; color: #999; border: none; cursor: pointer; font-size: 16px; font-weight: 600; transition: all 0.2s ease; white-space: nowrap; border-bottom: 3px solid transparent; min-width: 80px;\">BTEC<\/button>\n                <\/div>\n\n                <!-- Filter Toggle Button -->\n                <button id=\"filter-toggle\" class=\"no-translate  notranslate filter-toggle\"\n                    style=\"border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; padding: 8px; background: transparent; outline: none; margin-left: auto;\">\n                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                        <path d=\"M3 4.5H21V6H3V4.5Z\" fill=\"#A70337\" \/>\n                        <path d=\"M6 9.5H18V11H6V9.5Z\" fill=\"#A70337\" \/>\n                        <path d=\"M9 14.5H15V16H9V14.5Z\" fill=\"#A70337\" \/>\n                        <path d=\"M11 19.5H13V21H11V19.5Z\" fill=\"#A70337\" \/>\n                    <\/svg>\n                <\/button>\n            <\/div>\n\n            <!-- Tab Container -->\n            <div class=\"no-translate  notranslate esf-tab-container\">\n                <!-- DP Tab Content -->\n                <div id=\"dp-tab\" class=\"no-translate  notranslate esf-tab-panel active\">\n                    <!-- Description Section -->\n                    <div\n                        style=\"padding: 20px; background-color: #FDF2F4; border-radius: 8px; border-left: 4px solid #A70337;\">\n                        <h3 class=\"no-translate  notranslate heading-title\" style=\"margin-bottom: 24px;\">\u570b\u969b\u6587\u6191\u5927\u5b78\u9810\u79d1\u8ab2\u7a0b (IB\n                            DP) <\/h3>\n                        <p>\u570b\u969b\u6587\u6191\u5927\u5b78\u9810\u79d1\u8ab2\u7a0b (IB DP) \u662f\u4e00\u500b\u5168\u9762\u4e14\u5168\u7403\u8a8d\u53ef\u7684\u8ab2\u7a0b\uff0c\u5c08\u70ba\u8ffd\u6c42\u5168\u4eba\u6559\u80b2\u7684\u5b78\u751f\u800c\u8a2d\u8a08\u3002\u5b78\u751f\u9700\u57282\u5e74\u5167\u4fee\u8b806\u500b\u79d1\u76ee\uff083\u500b\u6a19\u6e96\u8ab2\u7a0b[Standard\n                            Level]\u82073\u500b\u9ad8\u7d1a\u8ab2\u7a0b[Higher Level]\uff09\uff0c\u53ef\u4ee5\u5f9e6\u500b\u7d44\u5225\u4e2d\u9032\u884c\u9078\u64c7\uff1a<\/p>\n\n                        <div style=\"margin: 16px 0; color: #333;  font-size: 14px; line-height: 1.5;\">\n                            \u7b2c1\u7d44\uff1a\u8a9e\u8a00\u8207\u6587\u5b78\u7814\u7a76\n                            \u7b2c2\u7d44\uff1a\u8a9e\u8a00\u7fd2\u5f97\n                            \u7b2c3\u7d44\uff1a\u500b\u4eba\u8207\u793e\u6703\n                            \u7b2c4\u7d44\uff1a\u79d1\u5b78\n                            \u7b2c5\u7d44\uff1a\u6578\u5b78\n                            \u7b2c6\u7d44\uff1a\u85dd\u8853\n\n                        <\/div>\n\n                        <p>\u901a\u5e38\u60c5\u6cc1\u4e0b\uff0c\u5b78\u751f\u5fc5\u9808\u5f9e\u6bcf\u500b\u7d44\u5225\u4e2d\u9078\u64c71\u500b\u79d1\u76ee\u3002\u7136\u800c\uff0c\u90e8\u5206\u79d1\u76ee\uff08\u5982\u74b0\u5883\u7cfb\u7d71\u8207\u793e\u6703\uff09\u6a6b\u8de82\u500b\u7d44\u5225\u3002\u56e0\u6b64\uff0c\u5b78\u751f\u53ef\u4ee5\u9078\u4fee\u984d\u5916\u7684\u79d1\u5b78\u3001\u500b\u4eba\u8207\u793e\u6703\u6216\u8a9e\u8a00\u79d1\u76ee\uff0c\u800c\u975e\u6587\u5b78\u79d1\u76ee\u3002\u9ad8\u5ea6\u9748\u6d3b\u7684\u8ab2\u7a0b\u9078\u64c7\u80fd\u5920\u6eff\u8db3\u5b78\u751f\u7684\u591a\u5143\u9700\u6c42\u3002\n                        <\/p>\n\n                        <p>\u96646\u500b\u5b78\u8853\u79d1\u76ee\u5916\uff0c\u6240\u6709\u5b78\u751f\u9084\u6703\u53c3\u8207\u6838\u5fc3\u8ab2\u7a0b\uff0c\u5f9e\u800c\u62d3\u5c55\u8996\u91ce\uff0c\u5728\u73fe\u5be6\u751f\u6d3b\u4e2d\u5be6\u8e10\u77e5\u8b58\u548c\u6280\u80fd\u30023\u500b\u5fc5\u4fee\u6838\u5fc3\u8ab2\u7a0b\u5305\u62ec\uff1a\n                        <\/p>\n\n                        <div style=\"margin: 16px 0; color: #333;  font-size: 14px; line-height: 1.5;\">\n                            \u2022 <strong>\u77e5\u8b58\u7406\u8ad6(Theory of Knowledge, TOK)<\/strong>- \u5b78\u751f\u5c07\u63a2\u8a0e\u7372\u53d6\u77e5\u8b58\u7684\u904e\u7a0b\u548c\u77e5\u8b58\u7684\u672c\u8cea<br>\n                            \u2022 <strong>\u5275\u610f\u3001\u6d3b\u52d5\u548c\u670d\u52d9(Creativity, Activity and Service, CAS)<\/strong> -\n                            \u5b78\u751f\u5c07\u53c3\u8207\u4e00\u7cfb\u5217\u81ea\u9078\u6d3b\u52d5\uff0c\u5305\u62ec\u5177\u6709\u6311\u6230\u6027\u7684\u500b\u4eba\u9805\u76ee\uff0c\u5f9e\u800c\u589e\u5f37\u53cd\u601d\u8207\u81ea\u5b78\u80fd\u529b <br>\n                            \u2022 <strong>\u64f4\u5c55\u8ad6\u6587(Extended Essay, EE)<\/strong> - 1\u7bc74,000\u5b57\u7684\u5b78\u8853\u8ad6\u6587\uff0c\u5b78\u751f\u53ef\u4ee5\u81ea\u4e3b\u9078\u64c7\u7814\u7a76\u4e3b\u984c\n                        <\/div>\n\n                        <p>\u570b\u969b\u6587\u6191\u5927\u5b78\u9810\u79d1\u8ab2\u7a0b (IB DP) \u65e8\u5728\u62d3\u5c55\u5b78\u751f\u77e5\u8b58\u7684\u5ee3\u5ea6\u8207\u6df1\u5ea6\uff0c\u4fc3\u9032\u9ad4\u80fd\u3001\u667a\u529b\u3001\u60c5\u611f\u548c\u9053\u5fb7\u5168\u9762\u767c\u5c55\u3002\u8a72\u8ab2\u7a0b\u9ad8\u5ea6\u91cd\u8996\u5b78\u8853\u5353\u8d8a\u548c\u500b\u4eba\u6210\u9577\uff0c\u70ba\u5b78\u751f\u5728\u9ad8\u7b49\u6559\u80b2\u53ca\u5176\u4ed6\u9818\u57df\u7684\u6210\u529f\u6253\u4e0b\u5805\u5be6\u57fa\u790e\u3002\n                        <\/p>\n\n                        <p>\u67e5\u95b1\u4e0b\u65b9\u8868\u683c\uff0c\u4e86\u89e3\u82f1\u57fa\u5404\u4e2d\u5b78\u63d0\u4f9b\u7684IB DP\u79d1\u76ee\u3002\n                            <\/p>\n                    <\/div>\n\n                    <!-- Filters Section -->\n                    <div id=\"dp-filters-panel\" class=\"no-translate  notranslate filters-panel\"\n                        style=\"display: none; justify-content: space-between; margin: 20px; flex-wrap: wrap; gap: 15px; background-color: white; padding: 20px; border-radius: 8px; border: 1px solid #e0e0e0; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); transition: all 0.3s ease;\">\n                        <!-- School Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by School:<\/div>\n                            <select id=\"dp-school-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Schools<\/option>\n                                <option value=\"Discovery College\">Discovery College<\/option>\n                                <option value=\"Island School\">Island School<\/option>\n                                <option value=\"King George V School\">King George V School<\/option>\n                                <option value=\"Renaissance College\">Renaissance College<\/option>\n                                <option value=\"Sha Tin College\">Sha Tin College<\/option>\n                                <option value=\"South Island School\">South Island School<\/option>\n                                <option value=\"West Island School\">West Island School<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Subject Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by Subject:<\/div>\n                            <select id=\"dp-subject-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Subjects<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Level Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by Level:<\/div>\n                            <select id=\"dp-level-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Levels<\/option>\n                                <option value=\"Standard Level\">Standard Level<\/option>\n                                <option value=\"Higher Level\">Higher Level<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Reset Button -->\n                        <div style=\"flex: 0 0 auto; display: flex; align-items: end;\">\n                            <button id=\"dp-reset-filters\"\n                                style=\"padding: 10px 20px; background-color: #A70337; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px;  white-space: nowrap;\">Reset\n                                Filters<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Filter Summary -->\n                    <div id=\"dp-filter-summary\"\n                        style=\"background-color: #FDE8EB; padding: 15px; border-radius: 4px; margin: 0 20px 20px 20px; display: none; border-left: 4px solid #A70337;\">\n                    <\/div>\n\n                    <!-- Mobile Cards View -->\n                    <div id=\"dp-mobile-cards\" class=\"no-translate  notranslate mobile-cards\"\n                        style=\"display: none; margin: 20px;\">\n                        <!-- Results count -->\n                        <div id=\"dp-results-count\" class=\"no-translate  notranslate results-count\"\n                            style=\"display: none;\"><\/div>\n                        <!-- Cards will be populated by JavaScript -->\n                    <\/div>\n\n\n\n                    <!-- Desktop Table View -->\n                    <div class=\"no-translate  notranslate table-container\"\n                        style=\"max-height: 70vh; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; margin: 20px;\">\n                        <table id=\"dp-options-table\" style=\"width: 100%; border-collapse: collapse; \">\n                            <thead>\n                                <tr>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Subject<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Discovery College<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Island School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        King George V School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Renaissance College<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Sha Tin College<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        South Island School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        West Island School<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <!-- Table data will be populated by JavaScript -->\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                    <p style=\"font-style: italic; color: #666; margin-top: 10px; text-align: left; padding-left: 20px;\">\u4ee5\u4e0a\u8cc7\u6599\u50c5\u4f9b\u53c3\u8003\uff0c\u6bcf\u6240\u5b78\u6821\u6700\u7d42\u7684\u5b78\u79d1\u9078\u9805\u6216\u6709\u6240\u66f4\u6539\u3002<\/p>\n                <\/div>\n\n                <!-- CP & BTEC Tab Content -->\n                <div id=\"cp-btec-tab\" class=\"no-translate  notranslate esf-tab-panel\">\n                    <!-- Description Section -->\n                    <div\n                        style=\"padding: 20px; background-color: #FDF2F4; border-radius: 8px; border-left: 4px solid #A70337;\">\n                        <h3 class=\"no-translate  notranslate heading-title\" style=\"margin-bottom: 24px;\">International\n                            \u570b\u969b\u6587\u6191\u8077\u696d\u76f8\u95dc\u8ab2\u7a0b (IB CP)<\/h3>\n                        <p>\u570b\u969b\u6587\u6191\u8077\u696d\u76f8\u95dc\u8ab2\u7a0b (IB CP) \u878d\u5408\u4e86\u5b78\u8853\u548c\u8077\u696d\u6559\u80b2\u3002\u901a\u904e2\u5e74\u7684\u8ab2\u7a0b\uff0c\u5b78\u751f\u80fd\u5920\u5728\u6df1\u5165\u63a2\u7d22\u8077\u696d\u767c\u5c55\u65b9\u5411\u7684\u540c\u6642\uff0c\u4fee\u8b80\u81f3\u5c112\u500b\u570b\u969b\u6587\u6191\u8ab2\u7a0b\uff0c\u4e26\u5b8c\u6210\u8077\u696d\u76f8\u95dc\u6838\u5fc3\u8ab2\u7a0b\u7684\u8981\u6c42\u3002\n                        <\/p>\n\n                        <p>\u9664\u6587\u6191\u8ab2\u7a0b(DP Courses)\u548c\u8077\u696d\u76f8\u95dc\u7814\u7a76 (Career-related-Study) \u4ee5\u5916\uff0c\u6240\u6709\u5b78\u751f\u5fc5\u9808\u5b8c\u6210\u8077\u696d\u76f8\u95dc\u6838\u5fc3\u8ab2\u7a0b(CP Core)\uff0c\u5305\u62ec4\u500b\u5fc5\u4fee\u5167\u5bb9\uff1a\u500b\u4eba\u8207\u5c08\u696d\u6280\u80fd\u3001\u8a9e\u8a00\u8207\u6587\u5316\u7814\u7a76\u3001\u793e\u5340\u53c3\u8207\uff0c\u4ee5\u53ca\u4e00\u9805\u53cd\u601d\u8a08\u5283(reflective project)\u3002<\/p>\n\n                        <p>\u5b78\u751f\u9084\u9700\u5b8c\u6210\u8077\u696d\u76f8\u95dc\u7814\u7a76 (CrS)\uff0c\u9019\u662f\u4e00\u9580\u5177\u6709\u6311\u6230\u6027\u7684\u8ab2\u7a0b\uff0c\u80fd\u5920\u5e6b\u52a9\u5b78\u751f\u767c\u5c55\u8077\u696d\u6280\u80fd\u548c\u77e5\u8b58\u3002\u90e8\u5206\u5b78\u751f\u9078\u64c7\u4ee5\u82f1\u570b\u5546\u696d\u8207\u6280\u8853\u6559\u80b2\u59d4\u54e1\u6703\u8ab2\u7a0b (BTEC) \u4f5c\u70ba\u4ed6\u5011\u7684\u8077\u696d\u76f8\u95dc\u7814\u7a76\u3002\u6709\u95dc BTEC \u7684\u8a73\u7d30\u8cc7\u8a0a\uff0c\u8acb\u53c3\u95b1\u4e0b\u65b9\u3002\u6b64\u5916\uff0c\u5b78\u751f\u4ea6\u53ef\u53c3\u52a0\u7531\u82f1\u57fa\u5408\u4f5c\u5925\u4f34\u8a2d\u8a08\u548c\u63d0\u4f9b\u7684 CrS \u8ab2\u7a0b\u3002\n                        <\/p>\n\n                        <p>\u8077\u696d\u76f8\u95dc\u8ab2\u7a0b\u91cd\u8996\u5be6\u969b\u6280\u80fd\u548c\u793e\u5340\u53c3\u8207\uff0c\u70ba\u5b78\u751f\u7684\u5c31\u696d\u548c\u5347\u5b78\u63d0\u4f9b\u77e5\u8b58\u548c\u7d93\u9a57\uff0c\u4f7f\u4ed6\u5011\u6210\u70ba\u5353\u8d8a\u7684\u4e16\u754c\u516c\u6c11\u3002\u5c0d\u65bc\u60f3\u5728\u6c42\u8077\u4e4b\u9918\u767c\u6398\u71b1\u60c5\u7684\u5b78\u751f\u800c\u8a00\uff0c\u9019\u662f\u7d55\u4f73\u7684\u9078\u64c7\u3002\n                        <\/p>\n\n                        <p>\u67e5\u95b1\u4e0b\u65b9\u8868\u683c\uff0c\u4e86\u89e3\u82f1\u57fa\u5b78\u6821\u63d0\u4f9b\u7684IB CP\u8077\u696d\u76f8\u95dc\u7814\u7a76\u8ab2\u7a0b\u3002\u9664\u4e86\u7531\u82f1\u57fa\u6559\u5e2b\u5728\u5b78\u6821\u5167\u6559\u6388\u7684BTEC\u8ab2\u7a0b\u5916\uff0c\u9019\u4e9b\u8ab2\u7a0b\u5927\u591a\u7531\u6211\u5011\u7684\u7b2c\u4e09\u65b9\u5408\u4f5c\u5925\u4f34\u63d0\u4f9b\u7dda\u4e0a\u8ab2\u7a0b\u3002<\/p>\n                    <\/div>\n\n                    <!-- Filters Section -->\n                    <div id=\"cp-btec-filters-panel\" class=\"no-translate  notranslate filters-panel\"\n                        style=\"display: none; justify-content: start; margin: 20px; flex-wrap: wrap; gap: 15px; background-color: white; padding: 20px; border-radius: 8px; border: 1px solid #e0e0e0; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); transition: all 0.3s ease;\">\n                        <!-- School Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by School:<\/div>\n                            <select id=\"cp-btec-school-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Schools<\/option>\n                                <option value=\"Discovery College\">Discovery College<\/option>\n                                <option value=\"Island School\">Island School<\/option>\n                                <option value=\"King George V School\">King George V School<\/option>\n                                <option value=\"Renaissance College\">Renaissance College<\/option>\n                                <option value=\"Sha Tin College\">Sha Tin College<\/option>\n                                <option value=\"South Island School\">South Island School<\/option>\n                                <option value=\"West Island School\">West Island School<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Subject Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by Subject:<\/div>\n                            <select id=\"cp-btec-subject-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Subjects<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Reset Button -->\n                        <div style=\"flex: 0 0 auto; display: flex; align-items: end;\">\n                            <button id=\"cp-btec-reset-filters\"\n                                style=\"padding: 10px 20px; background-color: #A70337; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px;  white-space: nowrap;\">Reset\n                                Filters<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Filter Summary -->\n                    <div id=\"cp-btec-filter-summary\"\n                        style=\"background-color: #FDE8EB; padding: 15px; border-radius: 4px; margin: 0 20px 20px 20px; display: none; border-left: 4px solid #A70337;\">\n                    <\/div>\n\n                    <!-- Mobile Cards View -->\n                    <div id=\"cp-btec-mobile-cards\" class=\"no-translate  notranslate mobile-cards\"\n                        style=\"display: none; margin: 20px;\">\n                        <!-- Results count -->\n                        <div id=\"cp-btec-results-count\" class=\"no-translate  notranslate results-count\"\n                            style=\"display: none;\"><\/div>\n                        <!-- Cards will be populated by JavaScript -->\n                    <\/div>\n\n\n\n                    <!-- Desktop Table View -->\n                    <div class=\"no-translate  notranslate table-container\"\n                        style=\"max-height: 70vh; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; margin: 20px;\">\n                        <table id=\"cp-btec-options-table\" style=\"width: 100%; border-collapse: collapse; \">\n                            <thead>\n                                <tr>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Subject<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Discovery College<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Island School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        King George V School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Renaissance College<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Sha Tin College<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        South Island School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        West Island School<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <!-- Table data will be populated by JavaScript -->\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                    <p style=\"font-style: italic; color: #666; margin-top: 10px; text-align: left; padding-left: 20px;\">\u4ee5\u4e0a\u8cc7\u6599\u50c5\u4f9b\u53c3\u8003\uff0c\u6bcf\u6240\u5b78\u6821\u6700\u7d42\u7684\u5b78\u79d1\u9078\u9805\u6216\u6709\u6240\u66f4\u6539\u3002<\/p>\n                <\/div>\n\n                <!-- BTEC Only Tab Content -->\n                <div id=\"btec-tab\" class=\"no-translate  notranslate esf-tab-panel\">\n                    <!-- Description Section -->\n                    <div\n                        style=\"padding: 20px; background-color: #FDF2F4; border-radius: 8px; border-left: 4px solid #A70337;\">\n                        <h3 class=\"no-translate  notranslate heading-title\" style=\"margin-bottom: 24px;\">\u82f1\u570b\u5546\u696d\u8207\u6280\u8853\u6559\u80b2\u59d4\u54e1\u6703\u8ab2\u7a0b (BTEC) \u6587\u6191\n                        <\/h3>\n                        <p>\u82f1\u570b\u5546\u696d\u8207\u6280\u8853\u6559\u80b2\u59d4\u54e1\u6703\u8ab2\u7a0b (BTEC) \u6ce8\u91cd\u5be6\u8e10\u64cd\u4f5c\uff0c\u662f\u61c9\u7528\u578b\u5b78\u751f\u7684\u9996\u9078\u3002\u9019\u4e9b\u8cc7\u683c\u8b49\u66f8\u6db5\u84cb\u591a\u5143\u7522\u696d\uff0c\u5982\u5546\u696d\u3001\u91ab\u7642\u548c\u5de5\u7a0b\uff0c\u5b78\u751f\u80fd\u5920\u901a\u904e\u5c08\u984c\u8a55\u4f30\u548c\u771f\u5be6\u5834\u5883\u4f86\u767c\u5c55\u5fc5\u8981\u7684\u6280\u80fd\u3002BTEC\u6587\u6191\u5f37\u8abf\u5c31\u696d\u80fd\u529b\u548c\u7522\u696d\u9023\u63a5\uff0c\u80fd\u5e6b\u52a9\u5b78\u751f\u70ba\u5c31\u696d\u548c\u6df1\u9020\u505a\u597d\u6e96\u5099\u3002<\/p>\n\n                        <p>BTEC\u7b2c3\u7d1a\u8ab2\u7a0b\u5c08\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u8a2d\u8a08\uff0c\u4f9d\u4fee\u8b80\u6642\u6578\u8a08\u7b97\u53ef\u53d6\u5f97\u526f\u6587\u6191(Subsidiary Diploma)\u3001\u6b63\u5f0f\u6587\u6191(Full Diploma)\u6216\u64f4\u5c55\u6587\u6191(Extended Diploma)\u3002\u53d6\u5f97\u55ae\u79d1\u64f4\u5c55\u6587\u6191\u901a\u5e38\u9700\u89812\u5e74 (Years 12-13)\u3002\u800c\u9078\u64c7\u526f\u6587\u6191\u6216\u6b63\u5f0f\u6587\u6191\u7684\u5b78\u751f\uff0c\u53ef\u4ee5\u7d44\u54082\u500b\u53ca\u4ee5\u4e0a\u8ab2\u7a0b\uff08\u53ef\u5305\u542bIB\u6587\u6191\u8ab2\u7a0b\uff09\u3002\u8a31\u591aIB CP\u5b78\u751f\u4e5f\u6703\u9078\u64c7BTEC\u526f\u6587\u6191\u5b78\u79d1\u4f5c\u70ba\u4ed6\u5011\u7684\u8077\u696d\u76f8\u95dc\u7814\u7a76\u3002                      <\/p>\n\n                        <p>\u67e5\u95b1\u4e0b\u65b9\u8868\u683c\uff0c\u4e86\u89e3\u82f1\u57fa\u5404\u4e2d\u5b78\u63d0\u4f9b\u7684BTEC\u79d1\u76ee\u3002<\/p>\n                    <\/div>\n\n                    <!-- Filters Section -->\n                    <div id=\"btec-filters-panel\" class=\"no-translate  notranslate filters-panel\"\n                        style=\"display: none; justify-content: space-between; margin: 20px; flex-wrap: wrap; gap: 15px; background-color: white; padding: 20px; border-radius: 8px; border: 1px solid #e0e0e0; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); transition: all 0.3s ease;\">\n                        <!-- School Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by School:<\/div>\n                            <select id=\"btec-school-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Schools<\/option>\n                                <option value=\"Island School\">Island School<\/option>\n                                <option value=\"King George V School\">King George V School<\/option>\n                                <option value=\"South Island School\">South Island School<\/option>\n                                <option value=\"West Island School\">West Island School<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Subject Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by Subject:<\/div>\n                            <select id=\"btec-subject-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Subjects<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Level Filter -->\n                        <div style=\"flex: 1; min-width: 250px;\">\n                            <div\n                                style=\"display: block; margin-bottom: 8px; font-weight: 600; color: #A70337; background: transparent;\">\n                                Filter by Level:<\/div>\n                            <select id=\"btec-level-filter\"\n                                style=\"width: 100%; padding: 10px; border-radius: 4px; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); font-size: 16px; background-color: white; color: #333; \">\n                                <option value=\"\">All Levels<\/option>\n                                <option value=\"Extended\">Extended<\/option>\n                                <option value=\"Diploma\">Diploma<\/option>\n                                <option value=\"Subsidiary\">Subsidiary<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <!-- Reset Button -->\n                        <div style=\"flex: 0 0 auto; display: flex; align-items: end;\">\n                            <button id=\"btec-reset-filters\"\n                                style=\"padding: 10px 20px; background-color: #A70337; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px;  white-space: nowrap;\">Reset\n                                Filters<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Filter Summary -->\n                    <div id=\"btec-filter-summary\"\n                        style=\"background-color: #FDE8EB; padding: 15px; border-radius: 4px; margin: 0 20px 20px 20px; display: none; border-left: 4px solid #A70337;\">\n                    <\/div>\n\n                    <!-- Mobile Cards View -->\n                    <div id=\"btec-mobile-cards\" class=\"no-translate  notranslate mobile-cards\"\n                        style=\"display: none; margin: 20px;\">\n                        <!-- Results count -->\n                        <div id=\"btec-results-count\" class=\"no-translate  notranslate results-count\"\n                            style=\"display: none;\"><\/div>\n                        <!-- Cards will be populated by JavaScript -->\n                    <\/div>\n\n\n\n                    <!-- Desktop Table View -->\n                    <div class=\"no-translate  notranslate table-container\"\n                        style=\"max-height: 70vh; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; margin: 20px;\">\n                        <table id=\"btec-options-table\" style=\"width: 100%; border-collapse: collapse; \">\n                            <thead>\n                                <tr>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Subject<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        Island School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        King George V School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        South Island School<\/th>\n                                    <th\n                                        style=\"border: 1px solid #ddd; padding: 12px; text-align: left; background-color: #A70337; color: white; position: sticky; top: 0; z-index: 10; \">\n                                        West Island School<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <!-- Table data will be populated by JavaScript -->\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                    <p style=\"font-style: italic; color: #666; margin-top: 10px; text-align: left; padding-left: 20px;\">\u4ee5\u4e0a\u8cc7\u6599\u50c5\u4f9b\u53c3\u8003\uff0c\u6bcf\u6240\u5b78\u6821\u6700\u7d42\u7684\u5b78\u79d1\u9078\u9805\u6216\u6709\u6240\u66f4\u6539\u3002<\/p>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <script>\n        \/\/ All data from CSV - DP Subjects only\n        const allData = [\n            \/\/ DP Subjects\n            [\"Group 1 | Studies in Language & Literature\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Chinese A: Literature\", \"\", \"\", \"\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"\"],\n            [\"Chinese A: Language & literature\", \"Standard Level, Higher Level\", \"Standard Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\"],\n            [\"English A: Literature\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"English A: Language & literature\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"French A: Literature\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"French A: Language & literature\", \"\", \"\", \"Standard Level, Higher Level\", \"\", \"\", \"\", \"\"],\n            [\"Japanese A: Literature\", \"\", \"\", \"\", \"\", \"\", \"Standard Level, Higher Level\", \"\"],\n            [\"Japanese A: Language & literature\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Korean A: Literature\", \"\", \"\", \"\", \"\", \"\", \"Standard Level, Higher Level\", \"\"],\n            [\"Literature & Performance*\", \"\", \"\", \"Standard Level\", \"\", \"\", \"\", \"\"],\n            [\"School Supported Self-Taught Language A\", \"Standard Level\", \"\", \"Standard Level\", \"\", \"\", \"\", \"\"],\n            [\"Language & Culture\", \"Standard Level\", \"\", \"\", \"\", \"\", \"\", \"\"],\n\n            [\"Group 2 | Language Acquisition\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Mandarin Ab Initio\", \"Standard Level\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Chinese B - Mandarin\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"French Ab Initio\", \"\", \"\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\"],\n            [\"French B\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Japanese Ab Initio\", \"\", \"Standard Level\", \"\", \"\", \"\", \"Standard Level\", \"\"],\n            [\"Japanese B\", \"\", \"Standard Level, Higher Level\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Spanish Ab Initio\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\"],\n            [\"Spanish B\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n\n            [\"Group 3 | Individuals & Societies\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Business Management\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Digital Societies\", \"\", \"\", \"Standard Level, Higher Level\", \"\", \"\", \"\", \"\"],\n            [\"Economics\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Environmental Systems & Societies*\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Geography\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Global politics\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"History\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Philosophy\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\"],\n            [\"Psychology\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n\n            [\"Group 4 | Sciences\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Biology\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Chemistry\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Computer science\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Design technology\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"\"],\n            [\"Environmental Systems & Societies*\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Food science & technology\", \"Standard Level\", \"\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\", \"Standard Level\"],\n            [\"Physics\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Sports, exercise & health science\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n\n            [\"Group 5 | Mathematics\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Analysis & Approaches\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Applications & interpretation\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n\n            [\"Group 6 | Arts\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Dance\",\"\", \"\", \"\", \"\", \"\", \"\", \"Standard Level, Higher Level\"],\n            [\"Film\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Literature & Performance*\", \"\", \"\", \"Standard Level\", \"\", \"\", \"\", \"\"],\n            [\"Music\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Theatre\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"],\n            [\"Visual arts\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\", \"Standard Level, Higher Level\"]\n        ];\n\n        \/\/ BTEC data - full 7-column structure for IB CP + BTEC tab\n        const btecDataFull = [\n            \/\/ Column mapping: [Subject, Discovery College, Island School, King George V School, Renaissance College, Sha Tin College, South Island School, West Island School]\n            [\"BTEC\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Art & Design\", \"\", \"\", \"Extended, Diploma, Subsidiary\", \"\", \"\", \"Subsidiary\", \"Subsidiary\"],\n            [\"Business\", \"\", \"Subsidiary\", \"Extended, Diploma, Subsidiary\", \"\", \"\", \"Diploma\", \"Subsidiary\"],\n            [\"Creative Media Production\", \"\", \"Subsidiary\", \"Diploma, Subsidiary\", \"\", \"\", \"Subsidiary\", \"Subsidiary\"],\n            [\"Hospitality\", \"\", \"Subsidiary\", \"\", \"\", \"\", \"\", \"\"],\n            [\"Musical Theatre Performance\", \"\", \"\", \"\", \"Subsidiary\", \"\", \"\", \"\"],\n            [\"Engineering\", \"\", \"\", \"\", \"\", \"\", \"\", \"Extended, Subsidiary\"],\n            [\"Performing Arts\", \"\", \"\", \"Diploma, Subsidiary\", \"\", \"\", \"\", \"\"],\n            [\"Marketing\", \"\", \"\", \"\", \"\", \"\", \"Subsidiary\", \"\"],\n            [\"Sport & Exercise Sciences\", \"\", \"\", \"\", \"\", \"\", \"\", \"Subsidiary\"],\n            [\"Sport\", \"\", \"\", \"Extended, Diploma, Subsidiary\", \"\", \"\", \"Diploma\", \"\"],\n            [\"Information Technology\", \"\", \"\", \"Subsidiary\", \"\", \"\", \"\", \"\"]\n        ];\n\n        \/\/ BTEC data - compact 4-column structure for BTEC-only tab (only schools offering BTEC)\n        const btecData = [\n            \/\/ Column mapping: [Subject, Island School, King George V School, South Island School, West Island School]\n            [\"BTEC\", \"\", \"\", \"\", \"\"],\n            [\"Art & Design\", \"\", \"Extended, Diploma, Subsidiary\", \"Subsidiary\", \"Subsidiary\"],\n            [\"Business\", \"Subsidiary\", \"Extended, Diploma, Subsidiary\", \"Diploma\", \"Subsidiary\"],\n            [\"Creative Media Production\", \"Subsidiary\", \"Diploma, Subsidiary\", \"Subsidiary\", \"Subsidiary\"],\n            [\"Hospitality\", \"Subsidiary\", \"\", \"\", \"\"],\n            [\"Musical Theatre Performance\", \"\", \"\", \"\", \"\"],\n            [\"Engineering\", \"\", \"\", \"\", \"Extended, Subsidiary\"],\n            [\"Performing Arts\", \"\", \"Diploma, Subsidiary\", \"\", \"\"],\n            [\"Marketing\", \"\", \"\", \"Subsidiary\", \"\"],\n            [\"Sport & Exercise Sciences\", \"\", \"\", \"\", \"Subsidiary\"],\n            [\"Sport\", \"\", \"Extended, Diploma, Subsidiary\", \"Diploma\", \"\"],\n            [\"Information Technology\", \"\", \"Subsidiary\", \"\", \"\"]\n        ];\n\n        const cpData = [\n            [\"IB CP CrS (via external provider)\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n            [\"BSD | Connect2Work\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Embry Riddle Aeronautical University | Aviation Maintenance Pathway\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Embry Riddle Aeronautical University | Business Pathway\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Embry Riddle Aeronautical University | General Studies Pathway\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Embry Riddle Aeronautical University | Aeronautics Pathway\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Embry Riddle Aeronautical University | Engineering Pathway\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Embry Riddle Aeronautical University | Unmanned Systems Pathway\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"HTI\/ICI | Hospitality & Culinary Arts\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Savannah College of Art & Design | Art & Design\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Available\", \"Not available\"],\n            [\"Sustainability Management School Switzerland | Sustainable Fashion\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Sustainability Management School Switzerland | Sustainable Hospitality\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Sustainability Management School Switzerland | Sustainable Culinary Arts\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Sustainability Management School Switzerland | Nature conservation\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Sustainability Management School Switzerland | Sustainable Tourism\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Sustainability Management School Switzerland | Sustainable Finance & Digitalisation\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"World Academy of Sport | International Sport Management\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Arizona State University | Mastery Certificate - Google Information Technology Support\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Arizona State University | Mastery Certificate - Applied Business Data Analytics\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"],\n            [\"Arizona State University | Mastery Certificate - Project Management\", \"Available\", \"Not available\", \"Not available\", \"Available\", \"Available\", \"Not available\", \"Not available\"]\n        ];\n\n        const schoolColumnIndices = {\n            \"Discovery College\": 1,\n            \"Island School\": 2,\n            \"King George V School\": 3,\n            \"Renaissance College\": 4,\n            \"Sha Tin College\": 5,\n            \"South Island School\": 6,\n            \"West Island School\": 7\n        };\n\n        \/\/ Column mapping for BTEC-only tab (4 schools that offer BTEC)\n        const btecSchoolColumnIndices = {\n            \"Island School\": 1,\n            \"King George V School\": 2,\n            \"South Island School\": 3,\n            \"West Island School\": 4\n        };\n\n        const schools = Object.keys(schoolColumnIndices);\n\n        \/\/ Global filtering function\n        function doFiltering(tabPrefix, data) {\n            console.log(`=== DOING FILTERING for ${tabPrefix} ===`);\n\n            const schoolFilter = document.getElementById(tabPrefix + '-school-filter');\n            const subjectFilter = document.getElementById(tabPrefix + '-subject-filter');\n            const levelFilter = document.getElementById(tabPrefix + '-level-filter');\n\n            const selectedSchool = schoolFilter ? schoolFilter.value : '';\n            const selectedSubject = subjectFilter ? subjectFilter.value : '';\n            const selectedLevel = levelFilter ? levelFilter.value : '';\n\n            \/\/ Use appropriate column mapping based on tab\n            const columnIndices = tabPrefix === 'btec' ? btecSchoolColumnIndices : schoolColumnIndices;\n\n            console.log('Filter values:', { selectedSchool, selectedSubject, selectedLevel });\n            console.log('columnIndices:', columnIndices);\n\n            \/\/ Filter table rows\n            const rows = document.querySelectorAll('#' + tabPrefix + '-options-table tbody tr:not(.group-header)');\n            console.log('Found rows:', rows.length);\n\n            let visibleCount = 0;\n\n            rows.forEach((row, index) => {\n                const subject = row.cells[0].textContent.trim();\n                let showRow = true;\n\n                console.log(`\\n--- Row ${index}: \"${subject}\" ---`);\n\n                \/\/ Subject filter\n                if (selectedSubject && subject !== selectedSubject) {\n                    console.log(`\u274c Hidden by subject filter: \"${subject}\" !== \"${selectedSubject}\"`);\n                    showRow = false;\n                } else if (selectedSubject) {\n                    console.log(`\u2705 Passed subject filter: \"${subject}\" === \"${selectedSubject}\"`);\n                } else {\n                    console.log(`\u23ed\ufe0f No subject filter applied`);\n                }\n\n                \/\/ School filter  \n                if (selectedSchool && showRow) {\n                    const schoolIndex = columnIndices[selectedSchool];\n                    const cellContent = row.cells[schoolIndex] ? row.cells[schoolIndex].textContent.trim() : '';\n                    console.log(`\ud83c\udfeb School filter: \"${selectedSchool}\" (index ${schoolIndex})`);\n                    console.log(`\ud83d\udcdd Cell content: \"${cellContent}\"`);\n\n                    if (!cellContent || cellContent === 'Not available') {\n                        console.log(`\u274c Hidden by school filter: no content or \"Not available\"`);\n                        showRow = false;\n                    } else {\n                        console.log(`\u2705 Passed school filter: has content \"${cellContent}\"`);\n                    }\n                } else if (selectedSchool) {\n                    console.log(`\u23ed\ufe0f School filter skipped (showRow is false)`);\n                } else {\n                    console.log(`\u23ed\ufe0f No school filter applied`);\n                }\n\n                \/\/ Level filter\n                if (selectedLevel && showRow) {\n                    console.log(`\ud83d\udcca Level filter: \"${selectedLevel}\"`);\n                    let levelFound = false;\n\n                    if (selectedSchool) {\n                        const schoolIndex = columnIndices[selectedSchool];\n                        const cellContent = row.cells[schoolIndex] ? row.cells[schoolIndex].textContent : '';\n                        console.log(`\ud83d\udd0d Checking level in school column: \"${cellContent}\"`);\n                        if (cellContent.includes(selectedLevel)) {\n                            levelFound = true;\n                            console.log(`\u2705 Level found in school column`);\n                        } else {\n                            console.log(`\u274c Level not found in school column`);\n                        }\n                    } else {\n                        console.log(`\ud83d\udd0d Checking level in all columns...`);\n                        const maxColumns = tabPrefix === 'btec' ? 5 : 7;\n                        for (let i = 1; i <= maxColumns; i++) {\n                            const cellContent = row.cells[i] ? row.cells[i].textContent : '';\n                            console.log(`   Column ${i}: \"${cellContent}\"`);\n                            if (cellContent.includes(selectedLevel)) {\n                                levelFound = true;\n                                console.log(`   \u2705 Level found in column ${i}`);\n                                break;\n                            }\n                        }\n                        if (!levelFound) {\n                            console.log(`   \u274c Level not found in any column`);\n                        }\n                    }\n\n                    if (!levelFound) {\n                        console.log(`\u274c Hidden by level filter`);\n                        showRow = false;\n                    }\n                } else if (selectedLevel) {\n                    console.log(`\u23ed\ufe0f Level filter skipped (showRow is false)`);\n                } else {\n                    console.log(`\u23ed\ufe0f No level filter applied`);\n                }\n\n                \/\/ Apply visibility\n                const previousDisplay = row.style.display;\n                row.style.display = showRow ? '' : 'none';\n\n                console.log(`\ud83c\udfaf Final result: ${showRow ? 'VISIBLE' : 'HIDDEN'} (display: \"${previousDisplay}\" \u2192 \"${row.style.display}\")`);\n\n                if (showRow) visibleCount++;\n            });\n\n            console.log(`\\n\ud83d\udcca FINAL FILTER RESULT: ${visibleCount} visible rows out of ${rows.length} total`);\n\n            \/\/ Filter table headers (desktop only)\n            filterTableHeaders(tabPrefix);\n\n            applyMobileFilters(tabPrefix, data);   \/\/ <-- refresh mobile cards\n        }\n\n        \/\/ Tab switching function\n        function showTab(tabName) {\n            \/\/ Hide all tab contents\n            document.querySelectorAll('.esf-tab-panel').forEach(tab => {\n                tab.classList.remove('active');\n            });\n\n            \/\/ Remove active class from all navigation buttons and reset styles\n            document.querySelectorAll('.esf-nav-btn').forEach(button => {\n                button.classList.remove('active');\n                button.style.color = '#999 !important';\n                button.style.borderBottom = '3px solid transparent !important';\n                button.style.background = 'transparent !important';\n            });\n\n            \/\/ Show selected tab\n            const selectedTab = document.getElementById(tabName + '-tab');\n            if (selectedTab) {\n                selectedTab.classList.add('active');\n            }\n\n            \/\/ Find and activate the correct button\n            const buttons = document.querySelectorAll('.esf-nav-btn');\n            buttons.forEach(button => {\n                const buttonText = button.textContent.trim().replace(\/\\s+\/g, ' '); \/\/ Normalize whitespace\n                const onclick = button.getAttribute('onclick');\n                \n                console.log('Button text:', buttonText, 'onclick:', onclick, 'tabName:', tabName); \/\/ Debug\n                \n                \/\/ Match by onclick attribute for more reliable matching\n                if ((tabName === 'dp' && onclick && onclick.includes(\"showTab('dp')\")) ||\n                    (tabName === 'cp-btec' && onclick && onclick.includes(\"showTab('cp-btec')\")) ||\n                    (tabName === 'btec' && onclick && onclick.includes(\"showTab('btec')\"))) {\n                    button.classList.add('active');\n                    button.style.color = '#A70337 !important';\n                    button.style.borderBottom = '3px solid #A70337 !important';\n                    button.style.background = 'transparent !important';\n                    console.log('Activated button for tab:', tabName); \/\/ Debug\n                }\n            });\n\n            \/\/ Initialize the tab if not already done\n            if (tabName === 'dp' && !window.dpInitialized) {\n                initializeTab('dp', allData);\n                window.dpInitialized = true;\n            } else if (tabName === 'cp-btec' && !window.cpBtecInitialized) {\n                initializeTab('cp-btec', [...btecDataFull, ...cpData]);\n                window.cpBtecInitialized = true;\n            } else if (tabName === 'btec' && !window.btecInitialized) {\n                initializeTab('btec', btecData);\n                window.btecInitialized = true;\n            }\n\n            \/\/ Run Chinese text replacement after tab initialization\n            if (typeof replaceTextForChinese === 'function') {\n                setTimeout(replaceTextForChinese, 100);\n            }\n\n            \/\/ Close any open filters when switching tabs\n            const filterToggle = document.getElementById('filter-toggle');\n            const allFilterPanels = document.querySelectorAll('.filters-panel');\n\n            \/\/ Function to check if we're on mobile\n            function isMobile() {\n                return window.innerWidth <= 900;\n            }\n\n            if (isMobile()) {\n                \/\/ Mobile: Close all filter panels and reset toggle state\n                allFilterPanels.forEach(panel => {\n                    panel.style.display = 'none';\n                    panel.classList.remove('open');\n                });\n\n                if (filterToggle) {\n                    filterToggle.classList.remove('active');\n                    filterToggle.style.transform = 'scale(1)';\n                    const svgPaths = filterToggle.querySelectorAll('svg path');\n                    svgPaths.forEach(path => path.setAttribute('fill', '#A70337'));\n                }\n            } else {\n                \/\/ Desktop: Show all filter panels\n                allFilterPanels.forEach(panel => {\n                    panel.style.display = 'flex';\n                    panel.classList.add('open');\n                });\n            }\n        }\n\n        \/\/ Initialize tab function\n        function initializeTab(tabPrefix, data) {\n            console.log(`--- ESF InitializeTab START for ${tabPrefix} ---`);\n            console.log(`ESF Course Explorer: Initializing tab ${tabPrefix} with ${data.length} data rows`);\n\n            try {\n                \/\/ Populate subject filter\n                const subjectFilterElement = document.getElementById(tabPrefix + '-subject-filter');\n                if (!subjectFilterElement) {\n                    console.error(`ESF Course Explorer: Subject filter element not found for ${tabPrefix}`);\n                    \/\/ return; \/\/ Keep going to see if other listeners attach\n                } else {\n                    \/\/ Clear existing options (important for tab switching)\n                    \/\/ Check if we need Chinese text\n                    const isChineseUrl = window.location.href.includes('zh');\n                    const allSubjectsText = isChineseUrl ? '\u5168\u90e8\u5b78\u79d1' : 'All Subjects';\n                    subjectFilterElement.innerHTML = `<option value=\"\">${allSubjectsText}<\/option>`;\n\n                    \/\/ Force Chinese text replacement for WordPress\/Elementor\n                    if (isChineseUrl && typeof replaceTextForChinese === 'function') {\n                        setTimeout(replaceTextForChinese, 50);\n                    }\n                    const subjects = data\n                        .filter(row => row[0] && !row[0].startsWith('Group') && !row[0].startsWith('BTEC') && !row[0].startsWith('IB CP'))\n                        .map(row => row[0]);\n                    subjects.forEach(subject => {\n                        const option = document.createElement('option');\n                        option.value = subject;\n                        option.textContent = subject;\n                        subjectFilterElement.appendChild(option);\n                    });\n                }\n\n                \/\/ Render table and cards\n                console.log(`ESF Course Explorer: Rendering table for ${tabPrefix}`);\n                renderTable(tabPrefix, data); \/\/ This internally calls filter logic too\n\n                \/\/ DIRECT FILTER SETUP - NOW WITH TIMEOUT\n                console.log(`Getting filter elements for ${tabPrefix}...`);\n                const schoolFilter = document.getElementById(tabPrefix + '-school-filter');\n                const subjectFilter = document.getElementById(tabPrefix + '-subject-filter'); \/\/ Re-get, as it's modified\n                const levelFilter = document.getElementById(tabPrefix + '-level-filter');\n                const resetButton = document.getElementById(tabPrefix + '-reset-filters');\n\n                console.log(`Filter elements for ${tabPrefix}:`, {\n                    schoolFilter: !!schoolFilter,\n                    subjectFilter: !!subjectFilter,\n                    levelFilter: !!levelFilter,\n                    resetButton: !!resetButton\n                });\n\n                \/\/ Add event listeners directly, but after a short timeout\n                setTimeout(function () {\n                    console.log(`Timeout: Attaching listeners for ${tabPrefix}`);\n                    if (schoolFilter) {\n                        console.log(`Timeout: About to add school filter event listener for ${tabPrefix}...`);\n                        schoolFilter.addEventListener('change', function () {\n                            console.log(`\ud83c\udfaf Real school filter changed! (Tab: ${tabPrefix})`);\n                            doFiltering(tabPrefix, data);\n                        });\n                        console.log(`Timeout: \u2705 School filter listener added successfully for ${tabPrefix}`);\n                    } else {\n                        console.error(`Timeout: School filter null for ${tabPrefix}, cannot attach listener.`);\n                    }\n\n                    if (subjectFilter) {\n                        console.log(`Timeout: About to add subject filter event listener for ${tabPrefix}...`);\n                        subjectFilter.addEventListener('change', function () {\n                            console.log(`\ud83c\udfaf Real subject filter changed! (Tab: ${tabPrefix})`);\n                            doFiltering(tabPrefix, data);\n                        });\n                        console.log(`Timeout: \u2705 Subject filter listener added successfully for ${tabPrefix}`);\n                    } else {\n                        console.error(`Timeout: Subject filter null for ${tabPrefix}, cannot attach listener.`);\n                    }\n\n                    if (levelFilter) {\n                        console.log(`Timeout: About to add level filter event listener for ${tabPrefix}...`);\n                        levelFilter.addEventListener('change', function () {\n                            console.log(`\ud83c\udfaf Real level filter changed! (Tab: ${tabPrefix})`);\n                            doFiltering(tabPrefix, data);\n                        });\n                        console.log(`Timeout: \u2705 Level filter listener added successfully for ${tabPrefix}`);\n                    } else {\n                        console.error(`Timeout: Level filter null for ${tabPrefix}, cannot attach listener.`);\n                    }\n\n                    if (resetButton) {\n                        console.log(`Timeout: About to add reset button event listener for ${tabPrefix}...`);\n                        resetButton.addEventListener('click', function () {\n                            console.log(`\ud83c\udfaf Real reset clicked! (Tab: ${tabPrefix})`);\n                            if (schoolFilter) schoolFilter.value = '';\n                            if (subjectFilter) subjectFilter.value = '';\n                            if (levelFilter) levelFilter.value = '';\n                            doFiltering(tabPrefix, data);\n                        });\n                        console.log(`Timeout: \u2705 Reset button listener added successfully for ${tabPrefix}`);\n                    } else {\n                        console.error(`Timeout: Reset button null for ${tabPrefix}, cannot attach listener.`);\n                    }\n                }, 100); \/\/ 100ms timeout\n\n                console.log(`ESF Course Explorer: Tab ${tabPrefix} initialization complete (listener setup deferred)`);\n\n            } catch (error) {\n                console.error(`ESF Course Explorer: Error initializing tab ${tabPrefix}:`, error);\n            }\n        }\n\n        \/\/ Simplified mobile cards rendering for filtered data\n        function renderFilteredMobileCards(tabPrefix, originalData, filteredData) {\n            const cardsContainer = document.getElementById(tabPrefix + '-mobile-cards');\n            if (!cardsContainer) return;\n\n            cardsContainer.innerHTML = '<div id=\"' + tabPrefix + '-results-count\" class=\"no-translate  notranslate results-count\"><\/div>';\n\n            \/\/ Group filtered data by groups\n            const groups = {};\n            let currentGroup = '';\n\n            \/\/ Build group structure\n            originalData.forEach(row => {\n                if (row[0].startsWith('Group') || row[0] === 'BTEC' || row[0] === 'IB CP CrS (via external provider)') {\n                    currentGroup = row[0];\n                    groups[currentGroup] = [];\n                }\n            });\n\n            \/\/ Add filtered subjects to groups\n            filteredData.forEach(row => {\n                let subjectGroup = '';\n                originalData.forEach(originalRow => {\n                    if (originalRow[0].startsWith('Group') || originalRow[0] === 'BTEC' || originalRow[0] === 'IB CP CrS (via external provider)') {\n                        subjectGroup = originalRow[0];\n                    } else if (originalRow[0] === row[0]) {\n                        if (!groups[subjectGroup].some(existing => existing[0] === row[0])) {\n                            groups[subjectGroup].push(row);\n                        }\n                    }\n                });\n            });\n\n            \/\/ Create group elements\n            const allGroups = [];\n            Object.keys(groups).forEach(groupName => {\n                if (groups[groupName].length === 0) return;\n\n                const groupDiv = document.createElement('div');\n                groupDiv.className = 'mobile-group';\n\n                const groupHeader = document.createElement('div');\n                groupHeader.className = 'mobile-group-header';\n                groupHeader.innerHTML = `<span>${groupName}<\/span><span class=\"no-translate  notranslate group-toggle\">\u2304<\/span>`;\n\n                const groupContent = document.createElement('div');\n                groupContent.className = 'mobile-group-content';\n\n                groups[groupName].forEach(row => {\n                    const card = createCompactCard(row, groupName, tabPrefix);\n                    groupContent.appendChild(card);\n                });\n\n                groupHeader.addEventListener('click', () => {\n                    const isExpanded = groupContent.classList.contains('expanded');\n                    \/\/ Close all other groups\n                    cardsContainer.querySelectorAll('.mobile-group-content').forEach(content => {\n                        content.classList.remove('expanded');\n                    });\n                    cardsContainer.querySelectorAll('.group-toggle').forEach(toggle => {\n                        toggle.classList.remove('expanded');\n                    });\n\n                    if (!isExpanded) {\n                        groupContent.classList.add('expanded');\n                        groupHeader.querySelector('.group-toggle').classList.add('expanded');\n                    }\n                });\n\n                groupDiv.appendChild(groupHeader);\n                groupDiv.appendChild(groupContent);\n                allGroups.push(groupDiv);\n            });\n\n            \/\/ Add groups to container\n            allGroups.forEach(group => cardsContainer.appendChild(group));\n\n            \/\/ Update results count\n            const resultsCount = document.getElementById(tabPrefix + '-results-count');\n            if (resultsCount) {\n                resultsCount.textContent = `Showing ${filteredData.length} subjects in ${allGroups.length} groups`;\n                resultsCount.style.display = 'block';\n            }\n        }\n\n        \/\/ Function to update filter summary\n        function updateFilterSummary(tabPrefix) {\n            const summaryDiv = document.getElementById(tabPrefix + '-filter-summary');\n            const selectedSchool = document.getElementById(tabPrefix + '-school-filter').value;\n            const selectedSubject = document.getElementById(tabPrefix + '-subject-filter').value;\n            const levelFilter = document.getElementById(tabPrefix + '-level-filter');\n            const selectedLevel = levelFilter ? levelFilter.value : '';\n\n            let summaryText = '';\n            let hasFilter = false;\n\n            if (selectedSchool) {\n                summaryText += `School: <strong>${selectedSchool}<\/strong>`;\n                hasFilter = true;\n            }\n\n            if (selectedSubject) {\n                if (hasFilter) summaryText += ' | ';\n                summaryText += `Subject: <strong>${selectedSubject}<\/strong>`;\n                hasFilter = true;\n            }\n\n            if (selectedLevel) {\n                if (hasFilter) summaryText += ' | ';\n                summaryText += `Level: <strong>${selectedLevel}<\/strong>`;\n                hasFilter = true;\n            }\n\n            if (hasFilter) {\n                summaryDiv.innerHTML = `Showing results for: ${summaryText}`;\n                summaryDiv.style.display = 'block';\n            } else {\n                summaryDiv.style.display = 'none';\n            }\n        }\n\n        \/\/ Function to render table\n        function renderTable(tabPrefix, data) {\n            const tbody = document.querySelector('#' + tabPrefix + '-options-table tbody');\n            tbody.innerHTML = '';\n\n            let currentGroup = '';\n\n            data.forEach((row, rowIndex) => {\n                \/\/ Check if this is a group header\n                if (row[0].startsWith('Group') || row[0] === 'BTEC' || row[0] === 'IB CP CrS (via external provider)') {\n                    currentGroup = row[0];\n                    const tr = document.createElement('tr');\n                    tr.className = 'group-header';\n                    tr.style.cssText = 'background-color: #FDF2F4; font-weight: bold; color: #A70337; ';\n                    const td = document.createElement('td');\n                    td.textContent = currentGroup;\n                    td.colSpan = tabPrefix === 'btec' ? 6 : 8; \/\/ 6 columns for BTEC (1 subject + 5 schools), 8 for others\n                    td.style.cssText = 'border: 1px solid #ddd; padding: 12px; text-align: left; ';\n                    tr.appendChild(td);\n                    tbody.appendChild(tr);\n                } else {\n                    \/\/ Regular subject row\n                    const tr = document.createElement('tr');\n                    tr.style.cssText = '';\n                    tr.onmouseenter = function () { this.style.backgroundColor = '#FDE8EB'; };\n                    tr.onmouseleave = function () { this.style.backgroundColor = ''; };\n\n                    const subjectCell = document.createElement('td');\n                    subjectCell.textContent = row[0];\n                    subjectCell.style.cssText = 'border: 1px solid #ddd; padding: 12px; text-align: left; ';\n                    tr.appendChild(subjectCell);\n\n                    \/\/ Add cells for each school (different number for BTEC)\n                    const maxColumns = tabPrefix === 'btec' ? 4 : 7;\n                    for (let i = 1; i <= maxColumns; i++) {\n                        const td = document.createElement('td');\n                        td.textContent = row[i] || '';\n                        td.style.cssText = 'border: 1px solid #ddd; padding: 12px; text-align: left; ';\n                        tr.appendChild(td);\n                    }\n\n                    tbody.appendChild(tr);\n                }\n            });\n\n            renderMobileCards(tabPrefix, data);\n            applyFilters(tabPrefix, data);\n        }\n\n        \/\/ Function to render mobile cards\n        function renderMobileCards(tabPrefix, data) {\n            const cardsContainer = document.getElementById(tabPrefix + '-mobile-cards');\n            cardsContainer.innerHTML = '<div id=\"' + tabPrefix + '-results-count\" class=\"no-translate  notranslate results-count\" style=\"display: none;\"><\/div>';\n\n            \/\/ Group subjects by their groups\n            const groups = {};\n            let currentGroup = '';\n\n            data.forEach((row, rowIndex) => {\n                \/\/ Skip group headers for cards\n                if (row[0].startsWith('Group') || row[0] === 'BTEC' || row[0] === 'IB CP CrS (via external provider)') {\n                    currentGroup = row[0];\n                    groups[currentGroup] = [];\n                    return;\n                }\n\n                if (currentGroup && row[0]) {\n                    groups[currentGroup].push(row);\n                }\n            });\n\n            \/\/ Store all groups for pagination\n            window[tabPrefix + '_allMobileGroups'] = [];\n\n            \/\/ Create collapsible groups\n            Object.keys(groups).forEach(groupName => {\n                if (groups[groupName].length === 0) return;\n\n                const groupDiv = document.createElement('div');\n                groupDiv.className = 'mobile-group';\n                groupDiv.setAttribute('data-group', groupName);\n\n                \/\/ Group header\n                const groupHeader = document.createElement('div');\n                groupHeader.className = 'mobile-group-header';\n                groupHeader.innerHTML = `\n                    <span>${groupName}<\/span>\n                    <span class=\"no-translate  notranslate group-toggle\">\u2304<\/span>\n                `;\n\n                \/\/ Group content - start collapsed\n                const groupContent = document.createElement('div');\n                groupContent.className = 'mobile-group-content';\n\n                \/\/ Add subjects to group\n                groups[groupName].forEach(row => {\n                    const card = createCompactCard(row, groupName, tabPrefix);\n                    groupContent.appendChild(card);\n                });\n\n                \/\/ Toggle functionality - accordion style (only one open at a time)\n                groupHeader.addEventListener('click', () => {\n                    console.log('Group header clicked!'); \/\/ Debug line\n                    const isExpanded = groupContent.classList.contains('expanded');\n                    const toggle = groupHeader.querySelector('.group-toggle');\n\n                    console.log('Is expanded:', isExpanded); \/\/ Debug line\n\n                    \/\/ Close all other groups first\n                    const allGroups = document.querySelectorAll('#' + tabPrefix + '-mobile-cards .mobile-group');\n                    allGroups.forEach(otherGroup => {\n                        if (otherGroup !== groupDiv) {\n                            const otherContent = otherGroup.querySelector('.mobile-group-content');\n                            const otherToggle = otherGroup.querySelector('.group-toggle');\n                            if (otherContent) otherContent.classList.remove('expanded');\n                            if (otherToggle) otherToggle.classList.remove('expanded');\n                        }\n                    });\n\n                    if (isExpanded) {\n                        \/\/ Close this group\n                        groupContent.classList.remove('expanded');\n                        toggle.classList.remove('expanded');\n                        console.log('Closing group'); \/\/ Debug line\n                    } else {\n                        \/\/ Open this group (others already closed above)\n                        groupContent.classList.add('expanded');\n                        toggle.classList.add('expanded');\n                        console.log('Opening group'); \/\/ Debug line\n                    }\n                });\n\n                groupDiv.appendChild(groupHeader);\n                groupDiv.appendChild(groupContent);\n                window[tabPrefix + '_allMobileGroups'].push(groupDiv);\n            });\n\n            \/\/ Initialize pagination\n            window[tabPrefix + '_currentPage'] = 1;\n            renderCurrentPage(tabPrefix);\n            setupPagination(tabPrefix);\n        }\n\n        \/\/ Create compact expandable cards\n        function createCompactCard(row, groupName, tabPrefix) {\n            const card = document.createElement('div');\n            card.className = 'compact-card';\n            card.setAttribute('data-subject', row[0]);\n            card.setAttribute('data-group', groupName);\n\n            \/\/ Get first letter for avatar\n            const firstLetter = row[0].charAt(0).toUpperCase();\n\n            \/\/ Check if there are active filters\n            const selectedSchool = document.getElementById(tabPrefix + '-school-filter').value;\n            const levelFilter = document.getElementById(tabPrefix + '-level-filter');\n            const selectedLevel = levelFilter ? levelFilter.value : '';\n\n            \/\/ Create schools data\n            const schoolsData = [];\n            const schoolNames = tabPrefix === 'btec'\n                ? ['Island School', 'King George V School', 'South Island School', 'West Island School']\n                : ['Discovery College', 'Island School', 'King George V School', 'Renaissance College', 'Sha Tin College', 'South Island School', 'West Island School'];\n            const maxColumns = tabPrefix === 'btec' ? 4 : 7;\n\n            for (let i = 1; i <= maxColumns; i++) {\n                if (row[i] && row[i].trim() && row[i] !== 'Not available') {\n                    const schoolName = schoolNames[i - 1];\n\n                    \/\/ If school filter is active, only show that school\n                    if (selectedSchool && schoolName !== selectedSchool) {\n                        continue;\n                    }\n\n                    const levels = row[i].split(',').map(level => level.trim()).filter(level => level);\n\n                    \/\/ If level filter is active, only show matching levels\n                    let filteredLevels = levels;\n                    if (selectedLevel) {\n                        filteredLevels = levels.filter(level => level.includes(selectedLevel));\n                    }\n\n                    \/\/ Only add if there are levels to show\n                    if (filteredLevels.length > 0) {\n                        schoolsData.push({\n                            name: schoolName,\n                            levels: filteredLevels\n                        });\n                    }\n                }\n            }\n\n            card.innerHTML = `\n                <div style=\"display: flex; align-items: center; justify-content: space-between;\">\n                    <div style=\"display: flex; align-items: center; flex: 1;\">\n                        <div style=\"width: 32px; height: 32px; border-radius: 50%; background: #A70337; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; margin-right: 12px; font-size: 14px; \">${firstLetter}<\/div>\n                        <div style=\"flex: 1;\">\n                            <div style=\"font-weight: 600; color: #A70337; font-size: 14px; margin-bottom: 2px; \">${row[0]}<\/div>\n                            <div style=\"font-size: 11px; color: #666; \">${schoolsData.length} school${schoolsData.length > 1 ? 's' : ''}<\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"no-translate  notranslate card-arrow\" style=\"color: #A70337; font-size: 14px; \">\u2304<\/div>\n                <\/div>\n                <div class=\"no-translate  notranslate card-details\">\n                    <div style=\"margin-top: 12px; padding-top: 12px; border-top: 1px solid #f0f0f0;\">\n                        ${schoolsData.length > 0 ?\n                    schoolsData.map(school => `\n                                <div style=\"display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px solid #f5f5f5;\">\n                                    <div style=\"font-weight: 500; color: #333; font-size: 13px; \">${school.name}<\/div>\n                                    <div style=\"display: flex; gap: 4px;\">\n                                        ${school.levels.map(level => `<span style=\"background: #A70337; color: white; padding: 1px 5px; border-radius: 10px; font-size: 10px; font-weight: 500; \">${level}<\/span>`).join('')}\n                                    <\/div>\n                                <\/div>\n                            `).join('') :\n                    '<div style=\"text-align: center; color: #666; font-style: italic; font-size: 12px; \">No schools offer this subject<\/div>'\n                }\n                    <\/div>\n                <\/div>\n            `;\n\n            \/\/ Toggle card details\n            card.addEventListener('click', () => {\n                const details = card.querySelector('.card-details');\n                const arrow = card.querySelector('.card-arrow');\n                const isExpanded = details.classList.contains('expanded');\n\n                \/\/ Close all other expanded card details (accordion behavior)\n                const allCards = document.querySelectorAll('.compact-card');\n                allCards.forEach(otherCard => {\n                    if (otherCard !== card) {\n                        const otherDetails = otherCard.querySelector('.card-details');\n                        const otherArrow = otherCard.querySelector('.card-arrow');\n                        if (otherDetails) otherDetails.classList.remove('expanded');\n                        if (otherArrow) otherArrow.classList.remove('expanded');\n                        otherCard.classList.remove('expanded');\n                    }\n                });\n\n                if (isExpanded) {\n                    \/\/ Close this card\n                    details.classList.remove('expanded');\n                    card.classList.remove('expanded');\n                    arrow.classList.remove('expanded');\n                } else {\n                    \/\/ Open this card (others already closed above)\n                    details.classList.add('expanded');\n                    card.classList.add('expanded');\n                    arrow.classList.add('expanded');\n                }\n            });\n\n            return card;\n        }\n\n        \/\/ Function to apply filters\n        function applyFilters(tabPrefix, data) {\n            const selectedSchool = document.getElementById(tabPrefix + '-school-filter').value;\n            const selectedSubject = document.getElementById(tabPrefix + '-subject-filter').value;\n            const levelFilter = document.getElementById(tabPrefix + '-level-filter');\n            const selectedLevel = levelFilter ? levelFilter.value : '';\n\n            \/\/ Use appropriate column mapping based on tab\n            const columnIndices = tabPrefix === 'btec' ? btecSchoolColumnIndices : schoolColumnIndices;\n\n            console.log('=== APPLY FILTERS CALLED ===');\n            console.log('Tab:', tabPrefix);\n            console.log('Selected filters:', { selectedSchool, selectedSubject, selectedLevel });\n\n            \/\/ Filter table rows\n            const rows = document.querySelectorAll('#' + tabPrefix + '-options-table tbody tr:not(.group-header)');\n            console.log('Found table rows:', rows.length);\n\n            \/\/ Reset all cell highlights\n            document.querySelectorAll('.highlight-cell').forEach(cell => {\n                cell.classList.remove('highlight-cell');\n            });\n\n            let hiddenCount = 0;\n            let visibleCount = 0;\n\n            rows.forEach((row, index) => {\n                const subject = row.cells[0].textContent;\n                let showRow = true;\n\n                console.log(`Row ${index}: \"${subject}\"`);\n\n                \/\/ Subject filter\n                if (selectedSubject && subject !== selectedSubject) {\n                    console.log(`  - Hidden by subject filter (looking for \"${selectedSubject}\")`);\n                    showRow = false;\n                }\n\n                \/\/ School filter\n                if (selectedSchool && showRow) {\n                    const schoolIndex = columnIndices[selectedSchool];\n                    const cellContent = row.cells[schoolIndex].textContent.trim();\n                    console.log(`  - School \"${selectedSchool}\" (index ${schoolIndex}): \"${cellContent}\"`);\n                    if (!cellContent || cellContent === 'Not available') {\n                        console.log(`  - Hidden by school filter (no content)`);\n                        showRow = false;\n                    } else {\n                        \/\/ Highlight this cell\n                        row.cells[schoolIndex].classList.add('highlight-cell');\n                        console.log(`  - Highlighted school cell`);\n                    }\n                }\n\n                \/\/ Level filter\n                if (selectedLevel && showRow) {\n                    let levelFound = false;\n\n                    \/\/ If school filter is active, check only that school's column\n                    if (selectedSchool) {\n                        const schoolIndex = columnIndices[selectedSchool];\n                        const cellContent = row.cells[schoolIndex].textContent;\n                        if (cellContent.includes(selectedLevel)) {\n                            levelFound = true;\n                            \/\/ Already highlighted by school filter\n                        }\n                    } else {\n                        \/\/ Check all school columns\n                        const maxColumns = tabPrefix === 'btec' ? 4 : 7;\n                        for (let i = 1; i <= maxColumns; i++) {\n                            const cellContent = row.cells[i].textContent;\n                            if (cellContent.includes(selectedLevel)) {\n                                levelFound = true;\n                                \/\/ Highlight this cell\n                                row.cells[i].classList.add('highlight-cell');\n                            }\n                        }\n                    }\n\n                    if (!levelFound) {\n                        console.log(`  - Hidden by level filter (looking for \"${selectedLevel}\")`);\n                        showRow = false;\n                    }\n                } else if (showRow && !selectedSchool) {\n                    \/\/ Highlight the subject cell if showing this row without school filter\n                    row.cells[0].classList.add('highlight-cell');\n                }\n\n                \/\/ Show or hide the row\n                row.style.display = showRow ? '' : 'none';\n\n                if (showRow) {\n                    visibleCount++;\n                    console.log(`  - VISIBLE`);\n                } else {\n                    hiddenCount++;\n                    console.log(`  - HIDDEN`);\n                }\n            });\n\n            console.log(`Filter results: ${visibleCount} visible, ${hiddenCount} hidden`);\n\n            \/\/ Handle group headers visibility\n            const groupHeaders = document.querySelectorAll('#' + tabPrefix + '-options-table tbody tr.group-header');\n            groupHeaders.forEach(header => {\n                const groupName = header.cells[0].textContent;\n\n                \/\/ Find the next group header or end of table\n                let nextHeader = header.nextElementSibling;\n                let visibleSubjectsInGroup = false;\n\n                while (nextHeader && !nextHeader.classList.contains('group-header')) {\n                    if (nextHeader.style.display !== 'none') {\n                        visibleSubjectsInGroup = true;\n                        break;\n                    }\n                    nextHeader = nextHeader.nextElementSibling;\n                }\n\n                \/\/ Show group header only if it has visible subjects\n                header.style.display = visibleSubjectsInGroup ? '' : 'none';\n            });\n\n            \/\/ Apply mobile filters\n            applyMobileFilters(tabPrefix, data);\n\n            \/\/ Filter table headers (desktop only)\n            filterTableHeaders(tabPrefix);\n\n            \/\/ Update filter summary\n            updateFilterSummary(tabPrefix);\n\n            console.log('=== APPLY FILTERS COMPLETE ===');\n        }\n\n        \/\/ Filter table headers based on selected school (desktop only)\n        function filterTableHeaders(tabPrefix) {\n            const selectedSchool = document.getElementById(tabPrefix + '-school-filter').value;\n            const table = document.getElementById(tabPrefix + '-options-table');\n            if (!table) return;\n\n            const headerRow = table.querySelector('thead tr');\n            if (!headerRow) return;\n\n            const headers = headerRow.querySelectorAll('th');\n\n            \/\/ Use appropriate column mapping based on tab\n            const columnIndices = tabPrefix === 'btec' ? btecSchoolColumnIndices : schoolColumnIndices;\n            const allSchools = Object.keys(columnIndices);\n\n            if (selectedSchool) {\n                \/\/ Hide all school columns except the selected one\n                allSchools.forEach(schoolName => {\n                    const columnIndex = columnIndices[schoolName];\n                    if (headers[columnIndex]) {\n                        if (schoolName === selectedSchool) {\n                            headers[columnIndex].style.display = '';\n                        } else {\n                            headers[columnIndex].style.display = 'none';\n                        }\n                    }\n                });\n\n                \/\/ Also hide corresponding data columns in all rows\n                const allRows = table.querySelectorAll('tbody tr');\n                allRows.forEach(row => {\n                    allSchools.forEach(schoolName => {\n                        const columnIndex = columnIndices[schoolName];\n                        if (row.cells[columnIndex]) {\n                            if (schoolName === selectedSchool) {\n                                row.cells[columnIndex].style.display = '';\n                            } else {\n                                row.cells[columnIndex].style.display = 'none';\n                            }\n                        }\n                    });\n                });\n            } else {\n                \/\/ Show all school columns\n                allSchools.forEach(schoolName => {\n                    const columnIndex = columnIndices[schoolName];\n                    if (headers[columnIndex]) {\n                        headers[columnIndex].style.display = '';\n                    }\n                });\n\n                \/\/ Show all data columns in all rows\n                const allRows = table.querySelectorAll('tbody tr');\n                allRows.forEach(row => {\n                    allSchools.forEach(schoolName => {\n                        const columnIndex = columnIndices[schoolName];\n                        if (row.cells[columnIndex]) {\n                            row.cells[columnIndex].style.display = '';\n                        }\n                    });\n                });\n            }\n        }\n\n        \/\/ Apply filters to mobile cards\n        function applyMobileFilters(tabPrefix, data) {\n            const selectedSchool = document.getElementById(tabPrefix + '-school-filter').value;\n            const selectedSubject = document.getElementById(tabPrefix + '-subject-filter').value;\n            const levelFilter = document.getElementById(tabPrefix + '-level-filter');\n            const selectedLevel = levelFilter ? levelFilter.value : '';\n\n            \/\/ Use appropriate column mapping based on tab\n            const columnIndices = tabPrefix === 'btec' ? btecSchoolColumnIndices : schoolColumnIndices;\n\n            console.log('Applying mobile filters:', { selectedSchool, selectedSubject, selectedLevel }); \/\/ Debug\n\n            \/\/ Filter the original data\n            const filteredData = data.filter(row => {\n                if (row[0].startsWith('Group') || row[0] === 'BTEC' || row[0] === 'IB CP CrS (via external provider)') return false;\n                if (!row[0]) return false;\n\n                \/\/ Subject filter\n                if (selectedSubject && row[0] !== selectedSubject) {\n                    return false;\n                }\n\n                \/\/ School filter\n                if (selectedSchool) {\n                    const schoolIndex = columnIndices[selectedSchool];\n                    const cellContent = row[schoolIndex] || '';\n                    console.log(`Checking subject \"${row[0]}\" for school \"${selectedSchool}\":`, cellContent); \/\/ Debug\n                    if (!cellContent.trim() || cellContent === 'Not available') {\n                        return false;\n                    }\n\n                    \/\/ Level filter with school filter\n                    if (selectedLevel && !cellContent.includes(selectedLevel)) {\n                        return false;\n                    }\n                } else if (selectedLevel) {\n                    \/\/ Level filter without school filter - check all schools\n                    let levelFound = false;\n                    const maxColumns = tabPrefix === 'btec' ? 5 : 7;\n                    for (let i = 1; i <= maxColumns; i++) {\n                        if (row[i] && row[i].includes(selectedLevel)) {\n                            levelFound = true;\n                            break;\n                        }\n                    }\n                    if (!levelFound) {\n                        return false;\n                    }\n                }\n\n                return true;\n            });\n\n            console.log('Filtered data:', filteredData.map(row => row[0])); \/\/ Debug\n\n            \/\/ Re-render mobile cards with filtered data\n            renderMobileCardsFiltered(tabPrefix, data, filteredData);\n        }\n\n        \/\/ Render cards with filtered data\n        function renderMobileCardsFiltered(tabPrefix, originalData, filteredData) {\n            const cardsContainer = document.getElementById(tabPrefix + '-mobile-cards');\n            cardsContainer.innerHTML = '<div id=\"' + tabPrefix + '-results-count\" class=\"no-translate  notranslate results-count\" style=\"display: none;\"><\/div>';\n\n            \/\/ Group filtered data by groups\n            const groups = {};\n            let currentGroup = '';\n\n            \/\/ First, build the group structure from original data to get group headers\n            originalData.forEach(row => {\n                if (row[0].startsWith('Group') || row[0] === 'BTEC' || row[0] === 'IB CP CrS (via external provider)') {\n                    currentGroup = row[0];\n                    groups[currentGroup] = [];\n                }\n            });\n\n            \/\/ Then add only the filtered subjects to their respective groups\n            filteredData.forEach(row => {\n                \/\/ Find which group this subject belongs to\n                let subjectGroup = '';\n                let foundGroup = false;\n\n                originalData.forEach(originalRow => {\n                    if (originalRow[0].startsWith('Group') || originalRow[0] === 'BTEC' || originalRow[0] === 'IB CP CrS (via external provider)') {\n                        subjectGroup = originalRow[0];\n                    } else if (originalRow[0] === row[0] && !foundGroup) {\n                        groups[subjectGroup].push(row);\n                        foundGroup = true;\n                    }\n                });\n            });\n\n            window[tabPrefix + '_allMobileGroups'] = [];\n\n            \/\/ Create groups only if they have filtered subjects\n            Object.keys(groups).forEach(groupName => {\n                if (groups[groupName].length === 0) return;\n\n                const groupDiv = document.createElement('div');\n                groupDiv.className = 'mobile-group';\n                groupDiv.setAttribute('data-group', groupName);\n\n                \/\/ Group header\n                const groupHeader = document.createElement('div');\n                groupHeader.className = 'mobile-group-header';\n                groupHeader.innerHTML = `\n                    <span>${groupName}<\/span>\n                    <span class=\"no-translate  notranslate group-toggle\">\u2304<\/span>\n                `;\n\n                \/\/ Group content - start collapsed\n                const groupContent = document.createElement('div');\n                groupContent.className = 'mobile-group-content';\n\n                \/\/ Add subjects to group\n                groups[groupName].forEach(row => {\n                    const card = createCompactCard(row, groupName, tabPrefix);\n                    groupContent.appendChild(card);\n                });\n\n                \/\/ Toggle functionality - accordion style (only one open at a time)\n                groupHeader.addEventListener('click', () => {\n                    const isExpanded = groupContent.classList.contains('expanded');\n                    const toggle = groupHeader.querySelector('.group-toggle');\n\n                    \/\/ Close all other groups first\n                    const allGroups = document.querySelectorAll('#' + tabPrefix + '-mobile-cards .mobile-group');\n                    allGroups.forEach(otherGroup => {\n                        if (otherGroup !== groupDiv) {\n                            const otherContent = otherGroup.querySelector('.mobile-group-content');\n                            const otherToggle = otherGroup.querySelector('.group-toggle');\n                            if (otherContent) otherContent.classList.remove('expanded');\n                            if (otherToggle) otherToggle.classList.remove('expanded');\n                        }\n                    });\n\n                    if (isExpanded) {\n                        \/\/ Close this group\n                        groupContent.classList.remove('expanded');\n                        toggle.classList.remove('expanded');\n                    } else {\n                        \/\/ Open this group (others already closed above)\n                        groupContent.classList.add('expanded');\n                        toggle.classList.add('expanded');\n                    }\n                });\n\n                groupDiv.appendChild(groupHeader);\n                groupDiv.appendChild(groupContent);\n                window[tabPrefix + '_allMobileGroups'].push(groupDiv);\n            });\n\n            \/\/ Update results count\n            const resultsCount = document.getElementById(tabPrefix + '-results-count');\n            const totalSubjects = filteredData.length;\n            const totalGroups = window[tabPrefix + '_allMobileGroups'].length;\n\n            if (totalSubjects > 0) {\n                resultsCount.textContent = `Showing ${totalSubjects} subjects in ${totalGroups} groups`;\n                resultsCount.style.display = 'block';\n            } else {\n                resultsCount.textContent = 'No subjects match your filters';\n                resultsCount.style.display = 'block';\n            }\n\n            \/\/ Reset to first page and render\n            window[tabPrefix + '_currentPage'] = 1;\n            renderCurrentPage(tabPrefix);\n        }\n\n        \/\/ Initialize the first tab on page load - WordPress\/Elementor compatible\n        function initializeESFCourseExplorer() {\n            console.log('ESF Course Explorer: Initializing...');\n\n            \/\/ Run test first\n            testFilters();\n\n            try {\n                console.log('ESF Course Explorer: Initializing DP tab with data length:', allData.length);\n\n                \/\/ Initialize the first tab (DP)\n                initializeTab('dp', allData);\n                window.dpInitialized = true;\n\n                console.log('ESF Course Explorer: DP tab initialized successfully');\n\n                \/\/ Run Chinese text replacement after initial tab initialization\n                if (typeof replaceTextForChinese === 'function') {\n                    setTimeout(replaceTextForChinese, 100);\n                    setTimeout(replaceTextForChinese, 500);\n                }\n\n                \/\/ Force Chinese replacement for WordPress\/Elementor\n                if (typeof forceChineseTextReplacement === 'function') {\n                    setTimeout(forceChineseTextReplacement, 200);\n                    setTimeout(forceChineseTextReplacement, 800);\n                }\n\n                \/\/ Setup pagination for all tabs\n                setupPagination('dp');\n                setupPagination('cp-btec');\n                setupPagination('btec');\n\n                console.log('ESF Course Explorer: Pagination setup complete');\n\n                \/\/ Filter toggle functionality for all tabs\n                const filterToggle = document.getElementById('filter-toggle');\n                let filtersOpen = false;\n\n                \/\/ Function to check if we're on mobile\n                function isMobile() {\n                    return window.innerWidth <= 900;\n                }\n\n                \/\/ Function to update filter state based on screen size\n                function updateFilterState() {\n                    const allFilterPanels = document.querySelectorAll('.filters-panel');\n\n                    \/\/ Always show filters on both mobile and desktop\n                    allFilterPanels.forEach(panel => {\n                        panel.style.display = 'flex';\n                        panel.classList.add('open');\n                    });\n\n                    \/\/ Always hide the filter toggle\n                    if (filterToggle) {\n                        filterToggle.style.display = 'none';\n                    }\n                    filtersOpen = true; \/\/ Filters are always open\n                }\n\n                \/\/ Initialize filter state\n                updateFilterState();\n\n                \/\/ Update on window resize\n                window.addEventListener('resize', updateFilterState);\n\n                console.log('ESF Course Explorer: Initialization complete');\n\n            } catch (error) {\n                console.error('ESF Course Explorer: Error during initialization:', error);\n            }\n        }\n\n        \/\/ Multiple initialization triggers for WordPress\/Elementor compatibility\n\n        \/\/ 1. DOM Content Loaded\n        window.addEventListener('DOMContentLoaded', initializeESFCourseExplorer);\n\n        \/\/ 2. Window Load\n        window.addEventListener('load', initializeESFCourseExplorer);\n\n        \/\/ 3. jQuery ready (WordPress standard)\n        if (typeof jQuery !== 'undefined') {\n            jQuery(document).ready(initializeESFCourseExplorer);\n        }\n\n        \/\/ 4. Elementor ready\n        if (typeof elementorFrontend !== 'undefined') {\n            elementorFrontend.hooks.addAction('frontend\/element_ready\/global', initializeESFCourseExplorer);\n        }\n\n        \/\/ 5. Timeout fallbacks\n        setTimeout(initializeESFCourseExplorer, 100);\n        setTimeout(initializeESFCourseExplorer, 500);\n        setTimeout(initializeESFCourseExplorer, 1000);\n\n        \/\/ Render current page of groups\n        function renderCurrentPage(tabPrefix) {\n            const cardsContainer = document.getElementById(tabPrefix + '-mobile-cards');\n            const paginationContainer = document.getElementById(tabPrefix + '-pagination');\n            const allGroups = window[tabPrefix + '_allMobileGroups'] || [];\n            \/\/ If pagination container is missing, just dump all groups and return\n            if (!paginationContainer) {\n                console.warn(`Pagination container #${tabPrefix}-pagination not found \u2013 rendering all groups with no pagination.`);\n                \/\/ Clear then append all groups\n                cardsContainer.innerHTML = '';\n                allGroups.forEach(g => cardsContainer.appendChild(g));\n                return;\n            }\n            const itemsPerPage = 15;\n\n            \/\/ Clear existing groups\n            const existingGroups = cardsContainer.querySelectorAll('.mobile-group');\n            existingGroups.forEach(group => group.remove());\n\n            const currentPage = window[tabPrefix + '_currentPage'] || 1;\n            const totalGroups = allGroups.length;\n            const totalPages = Math.ceil(totalGroups \/ itemsPerPage);\n            const startIndex = (currentPage - 1) * itemsPerPage;\n            const endIndex = Math.min(startIndex + itemsPerPage, totalGroups);\n\n            \/\/ Add groups for current page\n            for (let i = startIndex; i < endIndex; i++) {\n                if (allGroups[i]) {\n                    cardsContainer.appendChild(allGroups[i]);\n                }\n            }\n\n            \/\/ Update pagination\n            if (totalPages > 1) {\n                paginationContainer.style.display = 'flex';\n                document.getElementById(tabPrefix + '-page-info').textContent = `Page ${currentPage} of ${totalPages}`;\n                document.getElementById(tabPrefix + '-prev-page').disabled = currentPage === 1;\n                document.getElementById(tabPrefix + '-next-page').disabled = currentPage === totalPages;\n            } else {\n                paginationContainer.style.display = 'none';\n            }\n        }\n\n        \/\/ Setup pagination event listeners\n        function setupPagination(tabPrefix) {\n            const prevButton = document.getElementById(tabPrefix + '-prev-page');\n            const nextButton = document.getElementById(tabPrefix + '-next-page');\n\n            if (prevButton && nextButton) {\n                prevButton.addEventListener('click', () => {\n                    const currentPage = window[tabPrefix + '_currentPage'] || 1;\n                    if (currentPage > 1) {\n                        window[tabPrefix + '_currentPage'] = currentPage - 1;\n                        renderCurrentPage(tabPrefix);\n                    }\n                });\n\n                nextButton.addEventListener('click', () => {\n                    const allGroups = window[tabPrefix + '_allMobileGroups'] || [];\n                    const currentPage = window[tabPrefix + '_currentPage'] || 1;\n                    const totalPages = Math.ceil(allGroups.length \/ 15);\n                    if (currentPage < totalPages) {\n                        window[tabPrefix + '_currentPage'] = currentPage + 1;\n                        renderCurrentPage(tabPrefix);\n                    }\n                });\n            }\n        }\n\n        \/\/ Test function to verify JavaScript is working\n        function testFilters() {\n            console.log('=== TESTING FILTERS ===');\n            console.log('Current URL:', window.location.href);\n\n            \/\/ Test if elements exist\n            const schoolFilter = document.getElementById('dp-school-filter');\n            const subjectFilter = document.getElementById('dp-subject-filter');\n            const levelFilter = document.getElementById('dp-level-filter');\n            const resetButton = document.getElementById('dp-reset-filters');\n\n            console.log('dp-school-filter exists:', !!schoolFilter);\n            console.log('dp-subject-filter exists:', !!subjectFilter);\n            console.log('dp-level-filter exists:', !!levelFilter);\n            console.log('dp-reset-filters exists:', !!resetButton);\n\n            if (schoolFilter) {\n                console.log('School filter value:', schoolFilter.value);\n                console.log('School filter options:', schoolFilter.options.length);\n            }\n\n            \/\/ Test the global doFiltering function\n            if (typeof doFiltering !== 'undefined') {\n                console.log('\u2705 doFiltering function exists globally!');\n            } else {\n                console.log('\u274c doFiltering function not found!');\n            }\n\n            console.log('=== END TEST ===');\n        }\n    <\/script>\n\n    <!-- Chinese Text Replacement Script -->\n    <script>\n        \/\/ WordPress\/Elementor specific Chinese text replacement\n        function forceChineseTextReplacement() {\n            console.log('Force Chinese replacement for WordPress\/Elementor');\n\n            \/\/ Direct element targeting for WordPress\/Elementor\n            const translations = {\n                'All Schools': '\u5168\u90e8\u5b78\u6821',\n                'All Subjects': '\u5168\u90e8\u5b78\u79d1',\n                'All Levels': '\u5168\u90e8\u7a0b\u5ea6',\n                'Filter by School:': '\u6309\u5b78\u6821\u9078\u64c7:',\n                'Filter by Subject:': '\u6309\u5b78\u79d1\u9078\u64c7:',\n                'Filter by Level:': '\u6309\u7a0b\u5ea6\u9078\u64c7:',\n                'Reset Filters': '\u91cd\u8a2d\u7be9\u9078',\n                'Subject': '\u5b78\u79d1',\n                'Discovery College': '\u667a\u65b0\u66f8\u9662',\n                'Island School': '\u6e2f\u5cf6\u4e2d\u5b78',\n                'King George V School': '\u82f1\u7687\u4f50\u6cbb\u4e94\u4e16\u5b78\u6821',\n                'Renaissance College': '\u555f\u65b0\u66f8\u9662',\n                'Sha Tin College': '\u6c99\u7530\u5b78\u9662',\n                'South Island School': '\u5357\u5cf6\u4e2d\u5b78',\n                'West Island School': '\u897f\u5cf6\u4e2d\u5b78'\n            };\n\n            \/\/ Replace all text nodes\n            function replaceTextInNode(node) {\n                if (node.nodeType === Node.TEXT_NODE) {\n                    let text = node.textContent;\n                    let changed = false;\n\n                    Object.keys(translations).forEach(english => {\n                        if (text.includes(english)) {\n                            text = text.replace(new RegExp(english, 'g'), translations[english]);\n                            changed = true;\n                        }\n                    });\n\n                    if (changed) {\n                        node.textContent = text;\n                    }\n                } else if (node.nodeType === Node.ELEMENT_NODE) {\n                    \/\/ Handle select options and other elements\n                    if (node.tagName === 'OPTION' || node.tagName === 'TH' || node.tagName === 'BUTTON') {\n                        let text = node.textContent.trim();\n                        if (translations[text]) {\n                            node.textContent = translations[text];\n                        }\n                    }\n\n                    \/\/ Recursively process child nodes\n                    for (let child of node.childNodes) {\n                        replaceTextInNode(child);\n                    }\n                }\n            }\n\n            \/\/ Apply to entire document\n            replaceTextInNode(document.body);\n\n            \/\/ Specific targeting for common WordPress\/Elementor structures\n            document.querySelectorAll('select option, th, button, .elementor-heading-title').forEach(el => {\n                const text = el.textContent.trim();\n                if (translations[text]) {\n                    el.textContent = translations[text];\n                }\n            });\n        }\n\n        \/\/ Function to replace specific English text with Chinese\n        function replaceTextForChinese() {\n            console.log('Chinese mode active - replacing text elements');\n\n            \/\/ School name translations\n            const schoolTranslations = {\n                'Discovery College': '\u667a\u65b0\u66f8\u9662',\n                'Island School': '\u6e2f\u5cf6\u4e2d\u5b78',\n                'King George V School': '\u82f1\u7687\u4f50\u6cbb\u4e94\u4e16\u5b78\u6821',\n                'Renaissance College': '\u555f\u65b0\u66f8\u9662',\n                'Sha Tin College': '\u6c99\u7530\u5b78\u9662',\n                'South Island School': '\u5357\u5cf6\u4e2d\u5b78',\n                'West Island School': '\u897f\u5cf6\u4e2d\u5b78'\n            };\n\n            \/\/ Find and replace the exact heading text\n            const headings = document.querySelectorAll('h3.elementor-heading-title.elementor-size-default');\n            headings.forEach(heading => {\n                if (heading.textContent.trim() === 'ESF Post-16 Education Offerings For Years 12-13') {\n                    heading.textContent = 'Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b';\n                    console.log('Heading text replaced with Chinese');\n                }\n            });\n\n            \/\/ Find and replace the exact welcome text content\n            const textElements = document.querySelectorAll('.elementor-element-08d01c6 .elementor-widget-container');\n            textElements.forEach(element => {\n                const paragraphs = element.querySelectorAll('p');\n                let hasTargetText = false;\n\n                \/\/ Check if this element contains the target English text\n                paragraphs.forEach(p => {\n                    const text = p.textContent.trim();\n                    if (text.includes('Welcome to the exciting world of post-16 education!') ||\n                        text.includes('Our students should seek advice from their teachers and Higher Education Counsellors')) {\n                        hasTargetText = true;\n                    }\n                });\n\n                \/\/ If we found the target text, replace the entire content\n                if (hasTargetText) {\n                    element.innerHTML = '<p>\u6b61\u8fce\u4f86\u5230\u6fc0\u52d5\u4eba\u5fc3\u7684\u9ad8\u4e2d\u968e\u6bb5\uff01\u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u591a\u7a2e\u5347\u5b78\u9014\u5f91\uff0c\u70ba\u672a\u4f86\u7684\u5927\u5b78\u3001\u5c31\u696d\u53ca\u6821\u5916\u751f\u6d3b\u505a\u597d\u6e96\u5099\u3002\u5728\u9078\u64c7\u5347\u5b78\u65b9\u5411\u548c\u79d1\u76ee\u7d44\u5408\u4e4b\u524d\uff0c\u6211\u5011\u9f13\u52f5\u5b78\u751f\u5411\u8001\u5e2b\u548c\u9ad8\u7b49\u6559\u80b2\u8aee\u8a62\u8001\u5e2b\u5fb5\u8a62\u610f\u898b\u3002<br><br>\u82f1\u57fa\u70baYears 12-13\u7684\u5b78\u751f\u63d0\u4f9b\u4ee5\u4e0b3\u7a2e\u512a\u8cea\u8ab2\u7a0b\uff0c\u5168\u9762\u6eff\u8db3\u4e0d\u540c\u8208\u8da3\u8207\u5fd7\u5411\u3002<\/p>';\n                    console.log('Welcome text replaced with Chinese');\n                }\n            });\n\n            \/\/ Replace school names in table headers\n            const tableHeaders = document.querySelectorAll('th');\n            tableHeaders.forEach(header => {\n                const englishName = header.textContent.trim();\n                if (schoolTranslations[englishName]) {\n                    header.textContent = schoolTranslations[englishName];\n                    console.log(`Table header replaced: ${englishName} -> ${schoolTranslations[englishName]}`);\n                }\n            });\n\n            \/\/ Replace school names in filter dropdowns\n            const selectElements = document.querySelectorAll('select[id$=\"-school-filter\"]');\n            selectElements.forEach(select => {\n                const options = select.querySelectorAll('option');\n                options.forEach(option => {\n                    const englishName = option.textContent.trim();\n                    if (schoolTranslations[englishName]) {\n                        option.textContent = schoolTranslations[englishName];\n                        console.log(`Dropdown option replaced: ${englishName} -> ${schoolTranslations[englishName]}`);\n                    }\n                });\n            });\n\n            \/\/ Replace school names in any other text content\n            const allElements = document.querySelectorAll('*');\n            allElements.forEach(element => {\n                \/\/ Skip if element has children (to avoid replacing parent when child should be replaced)\n                if (element.children.length > 0) return;\n\n                let text = element.textContent;\n                let hasReplacement = false;\n\n                Object.keys(schoolTranslations).forEach(englishName => {\n                    if (text.includes(englishName)) {\n                        text = text.replace(new RegExp(englishName, 'g'), schoolTranslations[englishName]);\n                        hasReplacement = true;\n                    }\n                });\n\n                if (hasReplacement) {\n                    element.textContent = text;\n                    console.log('School name replaced in text content');\n                }\n            });\n\n            \/\/ Replace filter labels\n            const filterLabels = document.querySelectorAll('div[style*=\"font-weight: 600\"][style*=\"color: #A70337\"]');\n            filterLabels.forEach(label => {\n                const text = label.textContent.trim();\n                if (text === 'Filter by School:') {\n                    label.textContent = '\u6309\u5b78\u6821\u9078\u64c7:';\n                    console.log('Filter by School label replaced');\n                } else if (text === 'Filter by Subject:') {\n                    label.textContent = '\u6309\u5b78\u79d1\u9078\u64c7:';\n                    console.log('Filter by Subject label replaced');\n                } else if (text === 'Filter by Level:') {\n                    label.textContent = '\u6309\u7a0b\u5ea6\u9078\u64c7:';\n                    console.log('Filter by Level label replaced');\n                }\n            });\n\n            \/\/ Replace dropdown options\n            const allSelects = document.querySelectorAll('select');\n            allSelects.forEach(select => {\n                const options = select.querySelectorAll('option');\n                options.forEach(option => {\n                    const text = option.textContent.trim();\n                    if (text === 'All Schools') {\n                        option.textContent = '\u5168\u90e8\u5b78\u6821';\n                        console.log('Dropdown option \"All Schools\" replaced with Chinese');\n                    } else if (text === 'All Subjects') {\n                        option.textContent = '\u5168\u90e8\u5b78\u79d1';\n                        console.log('Dropdown option \"All Subjects\" replaced with Chinese');\n                    } else if (text === 'All Levels') {\n                        option.textContent = '\u5168\u90e8\u7a0b\u5ea6';\n                        console.log('Dropdown option \"All Levels\" replaced with Chinese');\n                    }\n                });\n            });\n\n            \/\/ Replace table header \"Subject\"\n            const allHeaders = document.querySelectorAll('th');\n            allHeaders.forEach(header => {\n                if (header.textContent.trim() === 'Subject') {\n                    header.textContent = '\u5b78\u79d1';\n                    console.log('Subject header replaced');\n                }\n            });\n\n            \/\/ Replace \"Reset Filters\" button text\n            const resetButtons = document.querySelectorAll('button[id$=\"-reset-filters\"]');\n            resetButtons.forEach(button => {\n                if (button.textContent.trim() === 'Reset Filters') {\n                    button.textContent = '\u91cd\u8a2d\u7be9\u9078';\n                    console.log('Reset Filters button text replaced');\n                }\n            });\n\n            \/\/ Additional specific replacement for filter dropdowns by ID\n            const filterMappings = {\n                'All Schools': '\u5168\u90e8\u5b78\u6821',\n                'All Subjects': '\u5168\u90e8\u5b78\u79d1',\n                'All Levels': '\u5168\u90e8\u7a0b\u5ea6'\n            };\n\n            \/\/ Check all filter dropdowns specifically\n            ['dp', 'cp-btec', 'btec'].forEach(prefix => {\n                ['school', 'subject', 'level'].forEach(filterType => {\n                    const selectId = `${prefix}-${filterType}-filter`;\n                    const selectElement = document.getElementById(selectId);\n                    if (selectElement) {\n                        const firstOption = selectElement.querySelector('option[value=\"\"]');\n                        if (firstOption) {\n                            const currentText = firstOption.textContent.trim();\n                            if (filterMappings[currentText]) {\n                                firstOption.textContent = filterMappings[currentText];\n                                console.log(`Replaced \"${currentText}\" with \"${filterMappings[currentText]}\" in ${selectId}`);\n                            }\n                        }\n                    }\n                });\n            });\n        }\n\n        \/\/ WordPress\/Elementor compatibility - multiple execution points\n\n        \/\/ 1. Run immediately if DOM is ready\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', replaceTextForChinese);\n        } else {\n            replaceTextForChinese();\n        }\n\n        \/\/ 2. Run after window load (all resources loaded)\n        window.addEventListener('load', replaceTextForChinese);\n\n        \/\/ 3. Run with multiple timeouts for dynamic content\n        setTimeout(replaceTextForChinese, 100);\n        setTimeout(replaceTextForChinese, 500);\n        setTimeout(replaceTextForChinese, 1000);\n        setTimeout(replaceTextForChinese, 2000);\n        setTimeout(replaceTextForChinese, 3000);\n\n        \/\/ Force replacement for WordPress\/Elementor\n        setTimeout(forceChineseTextReplacement, 300);\n        setTimeout(forceChineseTextReplacement, 1500);\n        setTimeout(forceChineseTextReplacement, 4000);\n\n        \/\/ 4. WordPress specific events\n        document.addEventListener('wp-updates-notice-updated', replaceTextForChinese);\n\n        \/\/ 5. jQuery ready (if jQuery is available)\n        if (typeof jQuery !== 'undefined') {\n            jQuery(document).ready(function () {\n                replaceTextForChinese();\n                forceChineseTextReplacement();\n                \/\/ Also try after a delay\n                setTimeout(replaceTextForChinese, 500);\n                setTimeout(forceChineseTextReplacement, 700);\n            });\n        }\n\n        \/\/ 6. Elementor specific events\n        if (typeof elementorFrontend !== 'undefined') {\n            elementorFrontend.hooks.addAction('frontend\/element_ready\/global', function () {\n                setTimeout(replaceTextForChinese, 100);\n                setTimeout(forceChineseTextReplacement, 200);\n            });\n        }\n\n        \/\/ 7. Set up mutation observer for dynamic content (WordPress\/Elementor compatibility)\n        let observerTimeout;\n\n        const observer = new MutationObserver(function (mutations) {\n            let shouldReplace = false;\n\n            mutations.forEach(function (mutation) {\n                if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {\n                    mutation.addedNodes.forEach(function (node) {\n                        if (node.nodeType === Node.ELEMENT_NODE) {\n                            \/\/ Check if added node contains elements we need to translate\n                            if (node.querySelector && (\n                                node.querySelector('select') ||\n                                node.querySelector('div[style*=\"font-weight: 600\"]') ||\n                                node.querySelector('th') ||\n                                node.querySelector('button') ||\n                                node.querySelector('h3') ||\n                                node.tagName === 'SELECT' ||\n                                node.tagName === 'TH' ||\n                                node.tagName === 'OPTION' ||\n                                node.tagName === 'BUTTON' ||\n                                node.tagName === 'H3' ||\n                                node.classList.contains('elementor-widget-container'))) {\n                                shouldReplace = true;\n                            }\n                        }\n                    });\n                }\n\n                \/\/ Check for attribute changes\n                if (mutation.type === 'attributes' && (\n                    mutation.target.tagName === 'SELECT' ||\n                    mutation.target.tagName === 'OPTION' ||\n                    mutation.target.classList.contains('elementor-heading-title'))) {\n                    shouldReplace = true;\n                }\n\n                \/\/ Check for innerHTML changes\n                if (mutation.type === 'childList' && (\n                    mutation.target.tagName === 'SELECT' ||\n                    mutation.target.classList.contains('elementor-widget-container'))) {\n                    shouldReplace = true;\n                }\n            });\n\n            if (shouldReplace) {\n                \/\/ Debounce the replacement to avoid excessive calls\n                clearTimeout(observerTimeout);\n                observerTimeout = setTimeout(function () {\n                    console.log('Dynamic content detected, running Chinese text replacement...');\n                    replaceTextForChinese();\n                    forceChineseTextReplacement();\n                }, 100);\n            }\n        });\n\n        \/\/ Start observing with more comprehensive options\n        observer.observe(document.body, {\n            childList: true,\n            subtree: true,\n            attributes: true,\n            attributeFilter: ['innerHTML', 'textContent', 'class'],\n            characterData: true\n        });\n\n        console.log('Chinese text replacement mutation observer started for WordPress\/Elementor');\n\n        \/\/ 8. Additional check every 5 seconds for the first 30 seconds (for slow-loading content)\n        let checkCount = 0;\n        const maxChecks = 6; \/\/ 6 checks over 30 seconds\n\n        const intervalCheck = setInterval(function () {\n            checkCount++;\n            console.log(`Periodic Chinese text check #${checkCount}`);\n            replaceTextForChinese();\n            forceChineseTextReplacement();\n\n            if (checkCount >= maxChecks) {\n                clearInterval(intervalCheck);\n                console.log('Periodic Chinese text checks completed');\n            }\n        }, 5000);\n    <\/script>\n<\/body>\n\n<\/html>\t\t<\/div>\n\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},"excerpt":{"rendered":"<p>Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b \u6b61\u8fce\u4f86\u5230\u6fc0\u52d5\u4eba\u5fc3\u7684\u9ad8\u4e2d\u968e\u6bb5\uff01\u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-30039","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b - English Schools Foundation | 22 International Schools in HK<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/\" \/>\n<meta property=\"og:locale\" content=\"zh_TW\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b - English Schools Foundation | 22 International Schools in HK\" \/>\n<meta property=\"og:description\" content=\"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b \u6b61\u8fce\u4f86\u5230\u6fc0\u52d5\u4eba\u5fc3\u7684\u9ad8\u4e2d\u968e\u6bb5\uff01\u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/\" \/>\n<meta property=\"og:site_name\" content=\"English Schools Foundation | 22 International Schools in HK\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/English.Schools.Foundation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-03T02:30:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u9810\u4f30\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"16 \u5206\u9418\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/\",\"url\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/\",\"name\":\"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b - English Schools Foundation | 22 International Schools in HK\",\"isPartOf\":{\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg\",\"datePublished\":\"2025-05-23T07:50:17+00:00\",\"dateModified\":\"2025-07-03T02:30:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#breadcrumb\"},\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#primaryimage\",\"url\":\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg\",\"contentUrl\":\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/#website\",\"url\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/\",\"name\":\"English Schools Foundation | 22 International Schools in HK\",\"description\":\"Offering a world class education from K1 to Year 13\",\"publisher\":{\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-TW\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/#organization\",\"name\":\"English Schools Foundation\",\"alternateName\":\"ESF\",\"url\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2023\/07\/esf-logo-wt.svg\",\"contentUrl\":\"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2023\/07\/esf-logo-wt.svg\",\"width\":616.09,\"height\":158.48,\"caption\":\"English Schools Foundation\"},\"image\":{\"@id\":\"https:\/\/join-us.esf.edu.hk\/zh-hant\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/English.Schools.Foundation\",\"https:\/\/www.instagram.com\/esf_englishschoolsfoundation\/\",\"https:\/\/www.youtube.com\/@esfcommunications\",\"https:\/\/hk.linkedin.com\/company\/esf-education\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b - English Schools Foundation | 22 International Schools in HK","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/","og_locale":"zh_TW","og_type":"article","og_title":"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b - English Schools Foundation | 22 International Schools in HK","og_description":"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b \u6b61\u8fce\u4f86\u5230\u6fc0\u52d5\u4eba\u5fc3\u7684\u9ad8\u4e2d\u968e\u6bb5\uff01\u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b [&hellip;]","og_url":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/","og_site_name":"English Schools Foundation | 22 International Schools in HK","article_publisher":"https:\/\/www.facebook.com\/English.Schools.Foundation","article_modified_time":"2025-07-03T02:30:03+00:00","og_image":[{"url":"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg"}],"twitter_card":"summary_large_image","twitter_misc":{"\u9810\u4f30\u95b1\u8b80\u6642\u9593":"16 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/","url":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/","name":"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b - English Schools Foundation | 22 International Schools in HK","isPartOf":{"@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/#website"},"primaryImageOfPage":{"@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#primaryimage"},"image":{"@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#primaryimage"},"thumbnailUrl":"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg","datePublished":"2025-05-23T07:50:17+00:00","dateModified":"2025-07-03T02:30:03+00:00","breadcrumb":{"@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#breadcrumb"},"inLanguage":"zh-TW","potentialAction":[{"@type":"ReadAction","target":["https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/"]}]},{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#primaryimage","url":"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg","contentUrl":"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2025\/05\/westisland_6595-1500x1125.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/esf-post-16-education-offerings-for-years-12-13\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/join-us.esf.edu.hk\/zh-hant\/"},{"@type":"ListItem","position":2,"name":"Years 12-13: \u82f1\u57fa\u70ba16\u6b72\u4ee5\u4e0a\u5b78\u751f\u63d0\u4f9b\u7684\u8ab2\u7a0b"}]},{"@type":"WebSite","@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/#website","url":"https:\/\/join-us.esf.edu.hk\/zh-hant\/","name":"English Schools Foundation | 22 International Schools in HK","description":"Offering a world class education from K1 to Year 13","publisher":{"@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/join-us.esf.edu.hk\/zh-hant\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-TW"},{"@type":"Organization","@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/#organization","name":"English Schools Foundation","alternateName":"ESF","url":"https:\/\/join-us.esf.edu.hk\/zh-hant\/","logo":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/#\/schema\/logo\/image\/","url":"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2023\/07\/esf-logo-wt.svg","contentUrl":"https:\/\/join-us.esf.edu.hk\/wp-content\/uploads\/2023\/07\/esf-logo-wt.svg","width":616.09,"height":158.48,"caption":"English Schools Foundation"},"image":{"@id":"https:\/\/join-us.esf.edu.hk\/zh-hant\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/English.Schools.Foundation","https:\/\/www.instagram.com\/esf_englishschoolsfoundation\/","https:\/\/www.youtube.com\/@esfcommunications","https:\/\/hk.linkedin.com\/company\/esf-education"]}]}},"_links":{"self":[{"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/pages\/30039"}],"collection":[{"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/comments?post=30039"}],"version-history":[{"count":46,"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/pages\/30039\/revisions"}],"predecessor-version":[{"id":30530,"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/pages\/30039\/revisions\/30530"}],"wp:attachment":[{"href":"https:\/\/join-us.esf.edu.hk\/zh-hant\/wp-json\/wp\/v2\/media?parent=30039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}